{"id":2198,"date":"2022-12-07T10:12:03","date_gmt":"2022-12-07T02:12:03","guid":{"rendered":"https:\/\/qaqaq.top\/?p=2198"},"modified":"2022-12-19T20:38:23","modified_gmt":"2022-12-19T12:38:23","slug":"%e4%b9%a6%e5%9f%8e%e9%a1%b9%e7%9b%ae-%e7%ac%ac%e4%ba%8c%e9%98%b6%e6%ae%b5%ef%bc%9a%e7%94%a8%e6%88%b7%e7%99%bb%e5%bd%95%e5%92%8c%e6%b3%a8%e5%86%8c%e5%8a%9f%e8%83%bd%e7%9a%84%e4%bb%8b%e7%bb%8d%e3%80%81","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=2198","title":{"rendered":"\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e8c\u9636\u6bb5\uff1a\u7528\u6237\u767b\u5f55\u548c\u6ce8\u518c\u529f\u80fd\u7684\u4ecb\u7ecd"},"content":{"rendered":"\n<p>\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e8c\u9636\u6bb5\uff1a\u7528\u6237\u767b\u5f55\u548c\u6ce8\u518c\u529f\u80fd\u7684\u4ecb\u7ecd\u3001\u4e66\u57ce\u9879\u76ee-JavaEE\u4e09\u5c42\u67b6\u6784\u4ecb\u7ecd\u3001\u4e66\u57ce\u9879\u76ee-\u642d\u5efa\u4e66\u57ce\u9879\u76ee\u73af\u5883\u3001\u4e66\u57ce\u9879\u76ee-\u521b\u5efa\u6570\u636e\u5e93\u548ct_user\u7528\u6237\u8868\u3001\u4e66\u57ce\u9879\u76ee-\u521b\u5efa\u6570\u636e\u5e93\u8868\u5bf9\u5e94\u7684User\u7c7b\u3001\u4e66\u57ce\u9879\u76ee-JdbcUtils\u5de5\u5177\u7c7b\u7684\u7f16\u5199\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199BaseDao\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199UserDao\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199UserService\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u5b9e\u73b0\u7528\u6237\u6ce8\u518c\u7684\u529f\u80fd\u3001\u4e66\u57ce\u9879\u76ee-IDEA\u5de5\u5177Debug\u7684\u4f7f\u7528\u3001\u4e66\u57ce\u9879\u76ee-\u7528\u6237\u767b\u5f55\u529f\u80fd\u5b9e\u73b0<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e66\u57ce\u7b2c\u4e8c\u9636\u6bb5\u2014\u2014\u7528\u6237\u6ce8\u518c\u548c\u767b\u9646<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1.JavaEE \u9879\u76ee\u7684\u4e09\u5c42\u67b6\u6784<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-83-1024x356.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-83-1024x356.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2199\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5206\u5c42\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u89e3\u8026\u3002\u89e3\u8026\u5c31\u662f\u4e3a\u4e86\u964d\u4f4e\u4ee3\u7801\u7684\u8026\u5408\u5ea6\u3002\u65b9\u4fbf\u9879\u76ee\u540e\u671f\u7684\u7ef4\u62a4\u548c\u5347\u7ea7\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>web \u5c42          top.qaqaq.web\/servlet\/controller\nservice \u5c42       top.qaqaq.service                     Service \u63a5\u53e3\u5305 \n                 top.qaqaq.service.impl                Service \u63a5\u53e3\u5b9e\u73b0\u7c7b\ndao \u6301\u4e45\u5c42        top.qaqaq.dao                         Dao \u63a5\u53e3\u5305\n                 top.qaqaq.dao.impl                    Dao \u63a5\u53e3\u5b9e\u73b0\u7c7b\n\u5b9e\u4f53 bean \u5bf9\u8c61    top.qaqaq.pojo\/entity\/domain\/bean     JavaBean \u7c7b\n\u6d4b\u8bd5\u5305           top.qaqaq.test\/junit\n\u5de5\u5177\u7c7b           top.qaqaq.utils<\/code><\/pre>\n\n\n\n<p>\u642d\u5efa\u4e66\u57ce\u9879\u76ee\u5f00\u53d1\u73af\u5883\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-84.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"270\" height=\"338\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-84.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2200\"  sizes=\"(max-width: 270px) 100vw, 270px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1\u3001\u5148\u521b\u5efa\u4e66\u57ce\u9700\u8981\u7684\u6570\u636e\u5e93\u548c\u8868\u3002<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># P163 \u4e66\u57ce\u9879\u76ee-\u521b\u5efa\u6570\u636e\u5e93\u548ct_user\u7528\u6237\u8868\n\nDROP DATABASE IF EXISTS book;\n\nCREATE DATABASE book;\n\nUSE book;\n\nCREATE TABLE t_user(\n    id INT PRIMARY KEY AUTO_INCREMENT,\n    username VARCHAR(20) NOT NULL UNIQUE,\n    password VARCHAR(32) NOT NULL,\n    email VARCHAR(200)\n);\n\nINSERT INTO t_user(username, password, email)\nVALUES('admin', 'admin', 'admin@qaqaq.top');\n\nSELECT * FROM t_user;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2\u3001\u7f16\u5199\u6570\u636e\u5e93\u8868\u5bf9\u5e94\u7684 JavaBean \u5bf9\u8c61\u3002<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 1:33\n *\/\npublic class User {\n    private Integer id;\n    private String username;\n    private String password;\n    private String email;\n\n    public User() {\n    }\n\n    public User(Integer id, String username, String password, String email) {\n        this.id = id;\n        this.username = username;\n        this.password = password;\n        this.email = email;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getUsername() {\n        return username;\n    }\n\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    public String getPassword() {\n        return password;\n    }\n\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    public String getEmail() {\n        return email;\n    }\n\n    public void setEmail(String email) {\n        this.email = email;\n    }\n\n    @Override\n    public String toString() {\n        return \"User{\" +\n                \"id=\" + id +\n                \", username='\" + username + '\\'' +\n                \", password='\" + password + '\\'' +\n                \", email='\" + email + '\\'' +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3\u3001\u7f16\u5199\u5de5\u5177\u7c7b JdbcUtils<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">3.1\u3001\u5bfc\u5165\u9700\u8981\u7684 jar \u5305\uff08\u6570\u636e\u5e93\u548c\u8fde\u63a5\u6c60\u9700\u8981\uff09\uff1a<\/h3>\n\n\n\n<p>druid-1.1.9.jar<br>mysql-connector-java-5.1.7-bin.jar<\/p>\n\n\n\n<p><br>\u4ee5\u4e0b\u662f\u6d4b\u8bd5\u9700\u8981\uff1a<br>hamcrest-core-1.3.jar<br>junit-4.12.jar<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.2\u3001\u5728 src  resources\u6e90\u7801\u76ee\u5f55\u4e0b\u7f16\u5199 jdbc.properties \u5c5e\u6027\u914d\u7f6e\u6587\u4ef6\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>username=root\npassword=123456\nurl=jdbc:mysql:\/\/localhost:3306\/book\ndriverClassName=com.mysql.cj.jdbc.Driver\ninitialSize=5\nmaxActive=10<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.3\u3001\u7f16\u5199 JdbcUtils \u5de5\u5177\u7c7b\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.utils;\n\nimport com.alibaba.druid.pool.DruidDataSource;\nimport com.alibaba.druid.pool.DruidDataSourceFactory;\n\nimport java.io.InputStream;\nimport java.sql.Connection;\nimport java.sql.SQLException;\nimport java.util.Properties;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 1:36\n *\/\npublic class JdbcUtils {\n\n    private static DruidDataSource dataSource;\n\n    static {\n        try {\n            Properties properties = new Properties();\n            \/\/ \u8bfb\u53d6 jdbc.properties\u5c5e\u6027\u914d\u7f6e\u6587\u4ef6\n            \/\/ \u6ce8\u610f \u8f83\u65b0\u7684idea\u9700\u8981\u628ajdbc.properties\u653e\u5165resources\u6587\u4ef6\u5939\u4e2d\n            InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream(\"jdbc.properties\");\n            \/\/ \u4ece\u6d41\u4e2d\u52a0\u8f7d\u6570\u636e\n            properties.load(inputStream);\n            \/\/ \u521b\u5efa \u6570\u636e\u5e93\u8fde\u63a5 \u6c60\n            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n\n    \/**\n     * \u83b7\u53d6\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u4e2d\u7684\u8fde\u63a5\n     *\n     * @return \u5982\u679c\u8fd4\u56denull,\u8bf4\u660e\u83b7\u53d6\u8fde\u63a5\u5931\u8d25 \u6709\u503c\u5c31\u662f\u83b7\u53d6\u8fde\u63a5\u6210\u529f\n     *\/\n    public static Connection getConnection() {\n\n        Connection conn = null;\n\n        try {\n            conn = dataSource.getConnection();\n        } catch (SQLException e) {\n            e.printStackTrace();\n        }\n\n        return conn;\n    }\n\n    \/**\n     * \u5173\u95ed\u8fde\u63a5\uff0c\u653e\u56de\u6570\u636e\u5e93\u8fde\u63a5\u6c60\n     *\n     * @param conn\n     *\/\n    public static void close(Connection conn) {\n        if (conn != null){\n            try {\n                conn.close();\n            } catch (SQLException e) {\n                e.printStackTrace();\n            }\n        }\n\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.4\u3001JdbcUtils \u6d4b\u8bd5<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.utils.JdbcUtils;\n\nimport java.sql.Connection;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 2:16\n *\/\npublic class JdbcUtilsTest {\n\n    @Test\n    public void testJdbcUtils(){\n        for (int i = 0; i &lt; 100; i++) {\n            Connection connection = JdbcUtils.getConnection();\n            System.out.println(connection);\n            JdbcUtils.close(connection);\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4\u3001\u7f16\u5199 BaseDao<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1\u3001\u5bfc\u5165 DBUtils \u7684 jar \u5305<\/h3>\n\n\n\n<p>commons-dbutils-1.3.jar<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2\u3001\u7f16\u5199 BaseDao\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao.impl;\n\nimport org.apache.commons.dbutils.QueryRunner;\nimport org.apache.commons.dbutils.handlers.BeanHandler;\nimport org.apache.commons.dbutils.handlers.BeanListHandler;\nimport org.apache.commons.dbutils.handlers.ScalarHandler;\nimport top.qaqaq.utils.JdbcUtils;\n\nimport java.sql.Connection;\nimport java.sql.SQLException;\nimport java.util.List;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 2:22\n *\/\npublic abstract class BaseDao {\n\n    \/\/\u4f7f\u7528DbUtils\u64cd\u4f5c\u6570\u636e\u5e93\n    private QueryRunner queryRunner = new QueryRunner();\n\n    \/**\n     * update() \u65b9\u6cd5\u7528\u6765\u6267\u884c\uff1aInsert\\Update\\Delete\u8bed\u53e5\n     * @return \u5982\u679c\u8fd4\u56de-1\uff0c\u8bf4\u660e\u6267\u884c\u5931\u8d25 \u8fd4\u56de\u5176\u4ed6\u8868\u793a\u5f71\u54cd\u7684\u884c\u6570\n     *\/\n    public int update(String sql, Object ...args){\n        Connection connection = JdbcUtils.getConnection();\n        try {\n            return queryRunner.update(connection,sql,args);\n        } catch (SQLException e) {\n            e.printStackTrace();\n        } finally {\n            JdbcUtils.close(connection);\n        }\n        return -1;\n    }\n\n    \/**\n     * \u67e5\u8be2\u8fd4\u56de\u4e00\u4e2ajavaBean\u7684sql\u8bed\u53e5\n     * @param type  \u8fd4\u56de\u7684\u5bf9\u8c61\u7c7b\u578b\n     * @param sql   \u6267\u884c\u7684sql\u8bed\u53e5\n     * @param args  sql\u5bf9\u5e94\u7684\u53c2\u6570\u503c\n     * @param &lt;T&gt;   \u8fd4\u56de\u7684\u7c7b\u578b\u7684\u6cdb\u578b\n     * @return\n     *\/\n    public &lt;T&gt; T queryForOne(Class&lt;T&gt; type,String sql,Object ...args){\n        Connection con = JdbcUtils.getConnection();\n        try {\n            return queryRunner.query(con,sql,new BeanHandler&lt;T&gt;(type),args);\n        } catch (SQLException e) {\n            e.printStackTrace();\n        } finally {\n            JdbcUtils.close(con);\n        }\n        return null;\n    }\n\n    \/**\n     * \u67e5\u8be2\u8fd4\u56de\u591a\u4e2ajavaBean\u7684sql\u8bed\u53e5\n     * @param type  \u8fd4\u56de\u7684\u5bf9\u8c61\u7c7b\u578b\n     * @param sql   \u6267\u884c\u7684sql\u8bed\u53e5\n     * @param args  sql\u5bf9\u5e94\u7684\u53c2\u6570\u503c\n     * @param &lt;T&gt;   \u8fd4\u56de\u7684\u7c7b\u578b\u7684\u6cdb\u578b\n     * @return\n     *\/\n    public &lt;T&gt; List&lt;T&gt; queryForList(Class&lt;T&gt; type, String sql, Object ...args){\n        Connection con = JdbcUtils.getConnection();\n        try {\n            return queryRunner.query(con,sql,new BeanListHandler&lt;T&gt;(type),args);\n        } catch (SQLException e) {\n            e.printStackTrace();\n        } finally {\n            JdbcUtils.close(con);\n        }\n        return null;\n    }\n\n    \/**\n     * \u6267\u884c\u8fd4\u56de\u4e00\u884c\u4e00\u5217\u7684sql\u8bed\u53e5\n     * @param sql   \u6267\u884c\u7684sql\u8bed\u53e5\n     * @param args  sql\u5bf9\u5e94\u7684\u53c2\u6570\u503c\n     * @return\n     *\/\n    public Object queryForSingleValue(String sql, Object ...args){\n        Connection conn = JdbcUtils.getConnection();\n\n        try {\n            return queryRunner.query(conn,sql, new ScalarHandler(),args);\n        } catch (SQLException e) {\n            e.printStackTrace();\n        } finally {\n            JdbcUtils.close(conn);\n        }\n        return null;\n    }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5\u3001\u7f16\u5199 UserDao \u548c\u6d4b\u8bd5<\/h3>\n\n\n\n<p>UserDao \u63a5\u53e3\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao;\n\nimport top.qaqaq.pojo.User;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 3:04\n *\/\npublic interface UserDao {\n\n    \/**\n     * \u6839\u636e\u7528\u6237\u540d\u67e5\u8be2\u7528\u6237\u4fe1\u606f\n     * @param username  \u7528\u6237\u540d\n     * @return  \u5982\u679c\u8fd4\u56denull,\u8bf4\u660e\u6ca1\u6709\u8fd9\u4e2a\u7528\u6237\u3002\u53cd\u4e4b\u4ea6\u7136\n     *\/\n    public User queryUserByUsername(String username);\n\n    \/**\n     * \u6839\u636e \u7528\u6237\u540d\u548c\u5bc6\u7801\u67e5\u8be2\u7528\u6237\u4fe1\u606f\n     * @param username\n     * @param password\n     * @return  \u5982\u679c\u8fd4\u56denull,\u8bf4\u660e\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\u3002\u53cd\u4e4b\u4ea6\u7136\n     *\/\n    public User queryUserByUsernameAndPassword(String username,String password);\n\n    \/**\n     * \u4fdd\u5b58\u7528\u6237\u4fe1\u606f\n     * @param user\n     * @return  \u8fd4\u56de-1\u8868\u793a\u64cd\u4f5c\u5931\u8d25\uff0c\u5176\u4ed6\u662fsql\u8bed\u53e5\u5f71\u54cd\u7684\u884c\u6570\n     *\/\n    public int saveUser(User user);\n}\n<\/code><\/pre>\n\n\n\n<p>UserDaoImpl \u5b9e\u73b0\u7c7b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao.impl;\n\nimport top.qaqaq.dao.UserDao;\nimport top.qaqaq.pojo.User;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 3:12\n *\/\npublic class UserDaoImpl extends BaseDao implements UserDao {\n    @Override\n    public User queryUserByUsername(String username) {\n        String sql = \"select id,username,password,email from t_user where username = ?\";\n        return queryForOne(User.class, sql, username);\n    }\n\n    @Override\n    public User queryUserByUsernameAndPassword(String username, String password) {\n        String sql = \"select id,username,password,email from t_user where username = ? and password = ?\";\n        return queryForOne(User.class, sql, username,password);\n    }\n\n    @Override\n    public int saveUser(User user) {\n        String sql = \"insert into t_user(username,password,email) values(?,?,?)\";\n        return update(sql, user.getUsername(), user.getPassword(), user.getEmail());\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>UserDao \u6d4b\u8bd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.dao.UserDao;\nimport top.qaqaq.dao.impl.UserDaoImpl;\nimport top.qaqaq.pojo.User;\n\nimport static org.junit.Assert.*;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 3:31\n *\/\npublic class UserDaoTest {\n\n    UserDao userDao = new UserDaoImpl();\n\n    @Test\n    public void queryUserByUsername() {\n        System.out.println(userDao.queryUserByUsername(\"admin\"));\n\n        if (userDao.queryUserByUsername(\"admin1234\") == null){\n            System.out.println(\"\u7528\u6237\u540d\u53ef\u7528\uff01\");\n        } else {\n            System.out.println(\"\u7528\u6237\u540d\u5df2\u5b58\u5728\uff01\");\n        }\n    }\n\n    @Test\n    public void queryUserByUsernameAndPassword() {\n        System.out.println(userDao.queryUserByUsernameAndPassword(\"admin\",\"admin\"));\n\n        if (userDao.queryUserByUsernameAndPassword(\"admin\",\"admin1234\") == null){\n            System.out.println(\"\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef\uff0c\u767b\u9646\u5931\u8d25\");\n        } else {\n            System.out.println(\"\u67e5\u8be2\u6210\u529f\");\n        }\n    }\n\n    @Test\n    public void saveUser() {\n        System.out.println(userDao.saveUser(new User(null,\"qaqaq\",\"123456\",\"123456@qq.com\")));\n\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6\u3001\u7f16\u5199 UserService \u548c\u6d4b\u8bd5<\/h2>\n\n\n\n<p>UserService \u63a5\u53e3\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service;\n\nimport top.qaqaq.pojo.User;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 4:58\n *\/\npublic interface UserService {\n\n    \/**\n     * \u6ce8\u518c\u7528\u6237\n     * @param user\n     *\/\n    public void registUser(User user);\n\n    \/**\n     * \u767b\u9646\n     * @param user\n     * @return  \u5982\u679c\u8fd4\u56denull\uff0c\u8bf4\u660e\u767b\u5f55\u5931\u8d25\uff0c\u8fd4\u56de\u6709\u503c\uff0c\u662f\u767b\u5f55\u6210\u529f\n     *\/\n    public User login(User user);\n\n    \/**\n     * \u68c0\u67e5 \u7528\u6237\u540d\u662f\u5426\u53ef\u7528\n     * @param username\n     * @return  \u8fd4\u56detrue\u8868\u793a\u7528\u6237\u540d\u5df2\u5b58\u5728\uff0c\u8fd4\u56defalse\u8868\u793a\u7528\u6237\u540d\u53ef\u7528\n     *\/\n    public boolean existsUsername(String username);\n}\n<\/code><\/pre>\n\n\n\n<p>UserServiceImpl \u5b9e\u73b0\u7c7b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service.impl;\n\nimport top.qaqaq.dao.UserDao;\nimport top.qaqaq.dao.impl.UserDaoImpl;\nimport top.qaqaq.pojo.User;\nimport top.qaqaq.service.UserService;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 5:34\n *\/\npublic class UserServiceImpl implements UserService {\n\n    private UserDao userDao = new UserDaoImpl();\n\n    @Override\n    public void registUser(User user) {\n        userDao.saveUser(user);\n\n    }\n\n    @Override\n    public User login(User user) {\n        return userDao.queryUserByUsernameAndPassword(user.getUsername(), user.getPassword());\n\n    }\n\n    @Override\n    public boolean existsUsername(String username) {\n        if (userDao.queryUserByUsername(username) == null){\n            \/\/ \u7b49\u4e8enull\uff0c\u8bf4\u660e\u6ca1\u67e5\u5230\uff0c\u6ca1\u67e5\u5230\u8868\u793a\u53ef\u7528\n            return false;\n        }\n        return true;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>UserService \u6d4b\u8bd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.pojo.User;\nimport top.qaqaq.service.UserService;\nimport top.qaqaq.service.impl.UserServiceImpl;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 5:45\n *\/\npublic class UserServiceTest {\n\n    UserService userService = new UserServiceImpl();\n\n    @Test\n    public void registUser(){\n        userService.registUser(new User(null,\"qqqqq\",\"123456\",\"123456@qq.com\"));\n        userService.registUser(new User(null,\"qq123\",\"123456\",\"123456@qq.com\"));\n    }\n\n    @Test\n    public void login(){\n        System.out.println(userService.login(new User(null,\"qqqqq\",\"123456\",null)));\n    }\n\n    @Test\n    public void existsUsername(){\n        if (userService.existsUsername(\"qqqqqq\")){\n            System.out.println(\"\u7528\u6237\u540d\u5df2\u5b58\u5728\uff01\");\n        } else {\n            System.out.println(\"\u7528\u6237\u540d\u53ef\u7528\uff01\");\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7\u3001\u7f16\u5199 web \u5c42<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">7.1\u3001\u5b9e\u73b0\u7528\u6237\u6ce8\u518c\u7684\u529f\u80fd<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">7.1.1\u3001\u56fe\u89e3\u7528\u6237\u6ce8\u518c\u7684\u6d41\u7a0b\uff1a<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-86-1024x372.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-86-1024x372.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2202\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">7.1.2\u3001\u4fee\u6539 regist.html \u548c regist_success.html \u9875\u9762<\/h4>\n\n\n\n<p>1\u3001\u6dfb\u52a0 base \u6807\u7b7e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\u5199 base \u6807\u7b7e\uff0c\u6c38\u8fdc\u56fa\u5b9a\u76f8\u5bf9\u8def\u5f84\u8df3\u8f6c\u7684\u7ed3\u679c--&gt;\n&lt;base href=\"http:\/\/localhost:8080\/book\/\"&gt;<\/code><\/pre>\n\n\n\n<p>2\u3001\u4fee\u6539 base \u6807\u7b7e\u5bf9\u9875\u9762\u4e2d\u6240\u6709\u76f8\u5bf9\u8def\u5f84\u7684\u5f71\u54cd\uff08\u6d4f\u89c8\u5668 F12\uff0c\u54ea\u4e2a\u62a5\u7ea2\uff0c\u6539\u54ea\u4e2a\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4ee5\u4e0b\u662f\u51e0\u4e2a\u4fee\u6539\u7684\u793a\u4f8b\uff1a\n&lt;link type=\"text\/css\" rel=\"stylesheet\" href=\"static\/css\/style.css\" &gt;\n&lt;script type=\"text\/javascript\" src=\"static\/script\/jquery-1.7.2.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>3\u3001\u4fee\u6539\u6ce8\u518c\u8868\u5355\u7684\u63d0\u4ea4\u5730\u5740\u548c\u8bf7\u6c42\u65b9\u5f0f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-87.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"130\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-87.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2203\"  sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">regist.html<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u5c1a\u7845\u8c37\u4f1a\u5458\u6ce8\u518c\u9875\u9762&lt;\/title&gt;\n\t&lt;!-- \u5199base\u4fbf\u7b7e\uff0c\u6c38\u8fdc\u56fa\u5b9a\u76f8\u5bf9\u8def\u5f84\u8df3\u8f6c\u7684\u7ed3\u679c --&gt;\n\t&lt;base href=\"http:\/\/localhost:8080\/JavaWeb_Code_Book\/\"&gt;\n\t&lt;link type=\"text\/css\" rel=\"stylesheet\" href=\"static\/css\/style.css\" &gt;\n\t&lt;script type=\"text\/javascript\" src=\"static\/script\/jquery-3.6.1.js\"&gt;&lt;\/script&gt;\n\t&lt;script type=\"text\/javascript\"&gt;\n\t\t\/\/ \u9875\u9762\u52a0\u8f7d\u5b8c\u6210\u4e4b\u540e\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9\u6ce8\u518c\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n\t\t\t$(\"#sub_btn\").click(function () {\n\t\t\t\t\/\/ \u9a8c\u8bc1\u7528\u6237\u540d\uff1a\u5fc5\u987b\u7531\u5b57\u6bcd\uff0c\u6570\u5b57\u4e0b\u5212\u7ebf\u7ec4\u6210\uff0c\u5e76\u4e14\u957f\u5ea6\u4e3a 5 \u5230 12 \u4f4d\n\t\t\t\t\/\/1 \u83b7\u53d6\u7528\u6237\u540d\u8f93\u5165\u6846\u91cc\u7684\u5185\u5bb9\n\t\t\t\tvar usernameText = $(\"#username\").val();\n\t\t\t\t\/\/2 \u521b\u5efa\u6b63\u5219\u8868\u8fbe\u5f0f\u5bf9\u8c61\n\t\t\t\tvar usernamePatt = \/^\\w{5,12}$\/;\n\t\t\t\t\/\/3 \u4f7f\u7528test\u65b9\u6cd5\u9a8c\u8bc1\n\t\t\t\tif (!usernamePatt.test(usernameText)){\n\t\t\t\t\t\/\/4 \u63d0\u793a\u7528\u6237\u7ed3\u679c\n\t\t\t\t\t$(\"span.errorMsg\").text(\"\u7528\u6237\u540d\u4e0d\u5408\u6cd5\uff01\");\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t\/\/ \u9a8c\u8bc1\u5bc6\u7801\uff1a\u5fc5\u987b\u7531\u5b57\u6bcd\uff0c\u6570\u5b57\u4e0b\u5212\u7ebf\u7ec4\u6210\uff0c\u5e76\u4e14\u957f\u5ea6\u4e3a 5 \u5230 12 \u4f4d\n\t\t\t\t\/\/1 \u83b7\u53d6\u7528\u6237\u540d\u8f93\u5165\u6846\u91cc\u7684\u5185\u5bb9\n\t\t\t\tvar passwordText = $(\"#password\").val();\n\t\t\t\t\/\/2 \u521b\u5efa\u6b63\u5219\u8868\u8fbe\u5f0f\u5bf9\u8c61\n\t\t\t\tvar passwordPatt = \/^\\w{5,12}$\/;\n\t\t\t\t\/\/3 \u4f7f\u7528test\u65b9\u6cd5\u9a8c\u8bc1\n\t\t\t\tif (!passwordPatt.test(passwordText)){\n\t\t\t\t\t\/\/4 \u63d0\u793a\u7528\u6237\u7ed3\u679c\n\t\t\t\t\t$(\"span.errorMsg\").text(\"\u5bc6\u7801\u4e0d\u5408\u6cd5\uff01\");\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t\/\/ \u9a8c\u8bc1\u786e\u8ba4\u5bc6\u7801\uff1a\u548c\u5bc6\u7801\u76f8\u540c\n\t\t\t\t\/\/1 \u83b7\u53d6\u786e\u8ba4\u5bc6\u7801\u5185\u5bb9\n\t\t\t\tvar repwdText = $(\"#repwd\").val();\n\t\t\t\t\/\/2 \u548c\u5bc6\u7801\u76f8\u6bd4\u8f83\n\t\t\t\tif (repwdText != passwordText){\n\t\t\t\t\t\/\/3 \u63d0\u793a\u7528\u6237\n\t\t\t\t\t$(\"span.errorMsg\").text(\"\u786e\u8ba4\u5bc6\u7801\u548c\u5bc6\u7801\u4e0d\u4e00\u81f4\uff01\");\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t\/\/ \u90ae\u7bb1\u9a8c\u8bc1\uff1axxxxx@xxx.com\n\t\t\t\t\/\/1 \u83b7\u53d6\u90ae\u7bb1\u91cc\u7684\u5185\u540c\n\t\t\t\tvar emailText = $(\"#email\").val();\n\t\t\t\t\/\/2 \u521b\u5efa\u6b63\u5219\u8868\u8fbe\u5f0f\u5bf9\u8c61\n\t\t\t\tvar emailPatt = \/^&#91;a-z\\d]+(\\.&#91;a-z\\d]+)*@(&#91;\\da-z](-&#91;\\da-z])?)+(\\.{1,2}&#91;a-z]+)+$\/;\n\t\t\t\t\/\/3 \u4f7f\u7528test\u65b9\u6cd5\u9a8c\u8bc1\u662f\u5426\u5408\u6cd5\n\t\t\t\tif (!emailPatt.test(emailText)){\n\t\t\t\t\t\/\/4 \u63d0\u793a\u7528\u6237\n\t\t\t\t\t$(\"span.errorMsg\").text(\"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u5408\u6cd5\uff01\");\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t\/\/ \u9a8c\u8bc1\u7801\uff1a\u73b0\u5728\u53ea\u9700\u8981\u9a8c\u8bc1\u7528\u6237\u5df2\u8f93\u5165\u3002\u56e0\u4e3a\u8fd8\u6ca1\u8bb2\u5230\u670d\u52a1\u5668\u3002\u9a8c\u8bc1\u7801\u751f\u6210\u3002\n\t\t\t\tvar codeText = $(\"#code\").val();\n\n\t\t\t\t\/\/ \u53bb\u6389\u9a8c\u8bc1\u7801\u524d\u540e\u7a7a\u683c\n\t\t\t\talert(\"\u53bb\u7a7a\u683c\u524d\uff1a&#91;\" + codeText + \"]\");\n\t\t\t\tcodeText = $.trim(codeText);\n\t\t\t\talert(\"\u53bb\u7a7a\u683c\u524d\uff1a&#91;\" + codeText + \"]\");\n\n\t\t\t\tif (codeText == null || codeText == \"\"){\n\t\t\t\t\t\/\/4 \u63d0\u793a\u7528\u6237\n\t\t\t\t\t$(\"span.errorMsg\").text(\"\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01\");\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t$(\"span.errorMsg\").text(\"\");\n\t\t\t})\n\t\t})\n\t&lt;\/script&gt;\n&lt;style type=\"text\/css\"&gt;\n\t.login_form{\n\t\theight:420px;\n\t\tmargin-top: 25px;\n\t}\n\t\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\t\t&lt;div id=\"login_header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t&lt;\/div&gt;\n\t\t\n\t\t\t&lt;div class=\"login_banner\"&gt;\n\t\t\t\n\t\t\t\t&lt;div id=\"l_content\"&gt;\n\t\t\t\t\t&lt;span class=\"login_word\"&gt;\u6b22\u8fce\u6ce8\u518c&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\n\t\t\t\t&lt;div id=\"content\"&gt;\n\t\t\t\t\t&lt;div class=\"login_form\"&gt;\n\t\t\t\t\t\t&lt;div class=\"login_box\"&gt;\n\t\t\t\t\t\t\t&lt;div class=\"tit\"&gt;\n\t\t\t\t\t\t\t\t&lt;h1&gt;\u6ce8\u518c\u5c1a\u7845\u8c37\u4f1a\u5458&lt;\/h1&gt;\n\t\t\t\t\t\t\t\t&lt;span class=\"errorMsg\"&gt;&lt;\/span&gt;\n\t\t\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t\t\t&lt;div class=\"form\"&gt;\n\t\t\t\t\t\t\t\t&lt;form action=\"registServlet\" method=\"post\"&gt;\n\t\t\t\t\t\t\t\t\t&lt;label&gt;\u7528\u6237\u540d\u79f0\uff1a&lt;\/label&gt;\n\t\t\t\t\t\t\t\t\t&lt;input class=\"itxt\" type=\"text\" placeholder=\"\u8bf7\u8f93\u5165\u7528\u6237\u540d\"\n\t\t\t\t\t\t\t\t\t\t   autocomplete=\"off\" tabindex=\"1\" name=\"username\" id=\"username\" \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;label&gt;\u7528\u6237\u5bc6\u7801\uff1a&lt;\/label&gt;\n\t\t\t\t\t\t\t\t\t&lt;input class=\"itxt\" type=\"password\" placeholder=\"\u8bf7\u8f93\u5165\u5bc6\u7801\"\n\t\t\t\t\t\t\t\t\t\t   autocomplete=\"off\" tabindex=\"1\" name=\"password\" id=\"password\" \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;label&gt;\u786e\u8ba4\u5bc6\u7801\uff1a&lt;\/label&gt;\n\t\t\t\t\t\t\t\t\t&lt;input class=\"itxt\" type=\"password\" placeholder=\"\u786e\u8ba4\u5bc6\u7801\"\n\t\t\t\t\t\t\t\t\t\t   autocomplete=\"off\" tabindex=\"1\" name=\"repwd\" id=\"repwd\" \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;label&gt;\u7535\u5b50\u90ae\u4ef6\uff1a&lt;\/label&gt;\n\t\t\t\t\t\t\t\t\t&lt;input class=\"itxt\" type=\"text\" placeholder=\"\u8bf7\u8f93\u5165\u90ae\u7bb1\u5730\u5740\"\n\t\t\t\t\t\t\t\t\t\t   autocomplete=\"off\" tabindex=\"1\" name=\"email\" id=\"email\" \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;label&gt;\u9a8c\u8bc1\u7801\uff1a&lt;\/label&gt;\n\t\t\t\t\t\t\t\t\t&lt;input class=\"itxt\" type=\"text\" name=\"code\" style=\"width: 150px;\" id=\"code\"\/&gt;\n\t\t\t\t\t\t\t\t\t&lt;img alt=\"\" src=\"static\/img\/code.bmp\" style=\"float: right; margin-right: 40px\"&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;br \/&gt;\n\t\t\t\t\t\t\t\t\t&lt;input type=\"submit\" value=\"\u6ce8\u518c\" id=\"sub_btn\" \/&gt;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t&lt;\/form&gt;\n\t\t\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/div&gt;\n\t\t&lt;div id=\"bottom\"&gt;\n\t\t\t&lt;span&gt;\n\t\t\t\t\u5c1a\u7845\u8c37\u4e66\u57ce.Copyright &amp;copy;2015\n\t\t\t&lt;\/span&gt;\n\t\t&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<pre id=\"block-9a76da8c-109b-4804-b95e-90b07a22f16a\" class=\"wp-block-preformatted\">regist_success.html<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u5c1a\u7845\u8c37\u4f1a\u5458\u6ce8\u518c\u9875\u9762&lt;\/title&gt;\n\t&lt;!-- \u5199base\u4fbf\u7b7e\uff0c\u6c38\u8fdc\u56fa\u5b9a\u76f8\u5bf9\u8def\u5f84\u8df3\u8f6c\u7684\u7ed3\u679c --&gt;\n\t&lt;base href=\"http:\/\/localhost:8080\/JavaWeb_Code_Book\/\"&gt;\n&lt;link type=\"text\/css\" rel=\"stylesheet\" href=\"static\/css\/style.css\" &gt;\n&lt;style type=\"text\/css\"&gt;\n\th1 {\n\t\ttext-align: center;\n\t\tmargin-top: 200px;\n\t}\n\t\n\th1 a {\n\t\tcolor:red;\n\t}\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\t\t&lt;div id=\"header\"&gt;\n\t\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t\t\t&lt;span class=\"wel_word\"&gt;&lt;\/span&gt;\n\t\t\t\t&lt;div&gt;\n\t\t\t\t\t&lt;span&gt;\u6b22\u8fce&lt;span class=\"um_span\"&gt;\u97e9\u603b&lt;\/span&gt;\u5149\u4e34\u5c1a\u7845\u8c37\u4e66\u57ce&lt;\/span&gt;\n\t\t\t\t\t&lt;a href=\"..\/order\/order.html\"&gt;\u6211\u7684\u8ba2\u5355&lt;\/a&gt;\n\t\t\t\t\t&lt;a href=\"..\/..\/index.html\"&gt;\u6ce8\u9500&lt;\/a&gt;&amp;nbsp;&amp;nbsp;\n\t\t\t\t\t&lt;a href=\"..\/..\/index.html\"&gt;\u8fd4\u56de&lt;\/a&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t&lt;\/div&gt;\n\t\t\n\t\t&lt;div id=\"main\"&gt;\n\t\t\n\t\t\t&lt;h1&gt;\u6ce8\u518c\u6210\u529f! &lt;a href=\"index.html\"&gt;\u8f6c\u5230\u4e3b\u9875&lt;\/a&gt;&lt;\/h1&gt;\n\t\n\t\t&lt;\/div&gt;\n\t\t\n\t\t&lt;div id=\"bottom\"&gt;\n\t\t\t&lt;span&gt;\n\t\t\t\t\u5c1a\u7845\u8c37\u4e66\u57ce.Copyright &amp;copy;2015\n\t\t\t&lt;\/span&gt;\n\t\t&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">7.1.3\u3001\u7f16\u5199 RegistServlet \u7a0b\u5e8f<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServlet;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.User;\nimport top.qaqaq.service.UserService;\nimport top.qaqaq.service.impl.UserServiceImpl;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-06 \u4e0b\u5348 9:16\n *\/\npublic class RegistServlet extends HttpServlet {\n\n    private UserService userService = new UserServiceImpl();\n\n    @Override\n    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/ 1\u3001\u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570\n        String username = req.getParameter(\"username\");\n        String password = req.getParameter(\"password\");\n        String email = req.getParameter(\"email\");\n        String code = req.getParameter(\"code\");\n\n        \/\/ 2\u3001\u68c0\u67e5 \u9a8c\u8bc1\u7801\u662f\u5426\u6b63\u786e   === \u5199\u6b7b\uff0c\u8981\u6c42\u9a8c\u8bc1\u7801\u4e3a\uff1aabcde\n        if (\"abcde\".equalsIgnoreCase(code)) {\n            \/\/ 3\u3001\u68c0\u67e5 \u7528\u6237\u540d\u662f\u5426\u53ef\u7528\n            if (userService.existsUsername(username)) {\n                System.out.println(\"\u7528\u6237\u540d&#91;\" + username + \"]\u5df2\u5b58\u5728\");\n                \/\/ \u8df3\u56de\u6ce8\u518c\u9875\u9762\n                req.getRequestDispatcher(\"\/pages\/user\/regist.html\").forward(req, resp);\n            } else {\n                \/\/ \u53ef\u7528\n                \/\/ \u8c03\u7528 Sservice \u4fdd\u5b58\u5230\u6570\u636e\u5e93\n                userService.registUser(new User(null,username,password,email));\n\n                \/\/ \u8df3\u5230\u6ce8\u518c\u6210\u529f\u9875\u9762 regist_success.html\n                req.getRequestDispatcher(\"\/pages\/user\/regist_success.html\").forward(req, resp);\n            }\n        } else {\n            System.out.println(\"\u9a8c\u8bc1\u7801&#91;\" + code + \"]\u9519\u8bef\");\n            req.getRequestDispatcher(\"\/pages\/user\/regist.html\").forward(req, resp);\n        }\n\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">7.2\u3001IDEA \u4e2d Debug \u8c03\u8bd5\u7684\u4f7f\u7528<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">7.2.1\u3001Debug \u8c03\u8bd5\u4ee3\u7801\uff0c\u9996\u5148\u9700\u8981\u4e24\u4e2a\u5143\u7d20\uff1a\u65ad\u70b9 + Debug \u542f\u52a8\u670d\u52a1\u5668<\/h4>\n\n\n\n<p>1\u3001\u65ad\u70b9\uff0c\u53ea\u9700\u8981\u5728\u4ee3\u7801\u9700\u8981\u505c\u7684\u884c\u7684\u5de6\u8fb9\u4e0a\u5355\u51fb\uff0c\u5c31\u53ef\u4ee5\u6dfb\u52a0\u548c\u53d6\u6d88<br>2\u3001Debug \u542f\u52a8 Tomcat \u8fd0\u884c\u4ee3\u7801\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-88.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"230\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-88.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2204\"  sizes=\"(max-width: 381px) 100vw, 381px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">7.2.2\u3001\u6d4b\u8bd5\u5de5\u5177\u680f\uff1a<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-89.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"187\" height=\"51\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-89.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2205\"\/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-90.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"42\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-90.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2206\"\/><\/div><\/figure>\n\n\n\n<p>\u8ba9\u4ee3\u7801\u5f80\u4e0b\u6267\u884c\u4e00\u884c\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-91.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"43\" height=\"43\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-91.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2207\"\/><\/div><\/figure>\n\n\n\n<p>\u53ef\u4ee5\u8fdb\u5165\u5f53\u524d\u65b9\u6cd5\u4f53\u5185\uff08\u81ea\u5df1\u5199\u7684\u4ee3\u7801\uff0c\u975e\u6846\u67b6\u6e90\u7801\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-92.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"44\" height=\"45\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-92.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2208\"\/><\/div><\/figure>\n\n\n\n<p>\u8df3\u51fa\u5f53\u524d\u65b9\u6cd5\u4f53\u5916<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-93.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"44\" height=\"42\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-93.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2209\"\/><\/div><\/figure>\n\n\n\n<p>\u5f3a\u5236\u8fdb\u5165\u5f53\u524d\u65b9\u6cd5\u4f53\u5185<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-94.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"42\" height=\"42\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-94.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2210\"\/><\/div><\/figure>\n\n\n\n<p>\u505c\u5728\u5149\u6807\u6240\u5728\u884c\uff08\u76f8\u5f53\u4e8e\u4e34\u65f6\u65ad\u70b9\uff09<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">7.2.3\u3001\u53d8\u91cf\u7a97\u53e3<\/h4>\n\n\n\n<p>\u53d8\u91cf\u7a97\u53e3\uff1a\u5b83\u53ef\u4ee5\u67e5\u770b\u5f53\u524d\u65b9\u6cd5\u8303\u56f4\u5185\u6240\u6709\u6709\u6548\u7684\u53d8\u91cf\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-95.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"363\" height=\"203\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-95.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2211\"  sizes=\"(max-width: 363px) 100vw, 363px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">7.2.4\u3001\u65b9\u6cd5\u8c03\u7528\u6808\u7a97\u53e3<\/h4>\n\n\n\n<p>1\u3001\u65b9\u6cd5\u8c03\u7528\u6808\u53ef\u4ee5\u67e5\u770b\u5f53\u524d\u7ebf\u7a0b\u6709\u54ea\u4e9b\u65b9\u6cd5\u8c03\u7528\u4fe1\u606f<br>2\u3001\u4e0b\u9762\u7684\u8c03\u7528\u4e0a\u4e00\u884c\u7684\u65b9\u6cd5<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-96.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"538\" height=\"308\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-96.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2212\"  sizes=\"(max-width: 538px) 100vw, 538px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\u5176\u4ed6\u5e38\u7528\u8c03\u8bd5\u76f8\u5173\u6309\u94ae\uff1a<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-97.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"344\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-97.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2213\"  sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">7.3\u3001\u7528\u6237\u767b\u5f55\u529f\u80fd\u7684\u5b9e\u73b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">7.3.1\u3001\u56fe\u89e3\u7528\u6237\u767b\u5f55<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-98-1024x316.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-98-1024x316.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2215\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">7.3.2\u3001\u4fee\u6539 login.html \u9875\u9762\u548c login_success.html \u9875\u9762<\/h3>\n\n\n\n<p>1\u3001\u6dfb\u52a0 base \u6807\u7b7e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\u5199 base \u6807\u7b7e\uff0c\u6c38\u8fdc\u56fa\u5b9a\u76f8\u5bf9\u8def\u5f84\u8df3\u8f6c\u7684\u7ed3\u679c--&gt;\n&lt;base href=\"http:\/\/localhost:8080\/book\/\"&gt;<\/code><\/pre>\n\n\n\n<p>2\u3001\u4fee\u6539 base \u6807\u7b7e\u5bf9\u9875\u9762\u4e2d\u6240\u6709\u76f8\u5bf9\u8def\u5f84\u7684\u5f71\u54cd\uff08\u6d4f\u89c8\u5668 F12\uff0c\u54ea\u4e2a\u62a5\u7ea2\uff0c\u6539\u54ea\u4e2a\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4ee5\u4e0b\u662f\u51e0\u4e2a\u4fee\u6539\u7684\u793a\u4f8b\uff1a\n&lt;link type=\"text\/css\" rel=\"stylesheet\" href=\"static\/css\/style.css\" &gt;\n&lt;script type=\"text\/javascript\" src=\"static\/script\/jquery-1.7.2.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>3\u3001\u4fee\u6539 login.html \u8868\u5355\u7684\u63d0\u4ea4\u5730\u5740\u548c\u8bf7\u6c42\u65b9\u5f0f<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-99.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"614\" height=\"149\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-99.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2217\"  sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">7.3.3\u3001LoginServlet \u7a0b\u5e8f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServlet;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.User;\nimport top.qaqaq.service.UserService;\nimport top.qaqaq.service.impl.UserServiceImpl;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-07 \u4e0a\u5348 11:51\n *\/\npublic class LoginServlet extends HttpServlet {\n\n    private UserService userService = new UserServiceImpl();\n\n    @Override\n    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\/\/        super.doPost(req, resp);\n\n        \/\/1. \u83b7\u53d6\u8bf7\u6c42\u53c2\u6570\n        String username = req.getParameter(\"username\");\n        String password = req.getParameter(\"password\");\n        \/\/ \u8c03\u7528 userService.login() \u767b\u5f55\u5904\u7406\u4e1a\u52a1\n        User loginUser = userService.login(new User(null, username, password, null));\n        \/\/ \u5982\u679c\u7b49\u4e8enull\uff0c\u8bf4\u660e\u767b\u5f55 \u5931\u8d25\uff01\n        if (loginUser == null){\n            \/\/ \u8df3\u56de\u767b\u5f55\u9875\u9762\n            req.getRequestDispatcher(\"\/pages\/user\/login.html\").forward(req,resp);\n        } else {\n            \/\/ \u767b\u5f55 \u6210\u529f\n            \/\/ \u8df3\u5230\u6210\u529f\u9875\u9762Login_success.html\n            req.getRequestDispatcher(\"\/pages\/user\/login_success.html\").forward(req,resp);\n        }\n\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;web-app xmlns=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee\"\n         xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:schemaLocation=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee https:\/\/jakarta.ee\/xml\/ns\/jakartaee\/web-app_5_0.xsd\"\n         version=\"5.0\"&gt;\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;RegistServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.RegistServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;RegistServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/registServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;LoginServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.LoginServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;LoginServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/loginServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n&lt;\/web-app&gt;<\/code><\/pre>\n\n\n\n<p>2.\u9879\u76ee\u9636\u6bb5\u4e8c\uff1a\u7528\u6237\u6ce8\u518c\u548c\u767b\u9646\u7684\u5b9e\u73b0\u3002<\/p>\n\n\n\n<p>\u9700\u6c42 1\uff1a\u7528\u6237\u6ce8\u518c<br>\u9700\u6c42\u5982\u4e0b\uff1a<br>1\uff09\u8bbf\u95ee\u6ce8\u518c\u9875\u9762<br>2\uff09\u586b\u5199\u6ce8\u518c\u4fe1\u606f\uff0c\u63d0\u4ea4\u7ed9\u670d\u52a1\u5668<br>3\uff09\u670d\u52a1\u5668\u5e94\u8be5\u4fdd\u5b58\u7528\u6237<br>4\uff09\u5f53\u7528\u6237\u5df2\u7ecf\u5b58\u5728&#8212;-\u63d0\u793a\u7528\u6237\u6ce8\u518c \u5931\u8d25\uff0c\u7528\u6237\u540d\u5df2\u5b58\u5728<br>5\uff09\u5f53\u7528\u6237\u4e0d\u5b58\u5728&#8212;&#8211;\u6ce8\u518c\u6210\u529f<\/p>\n\n\n\n<p>\u9700\u6c42 2\uff1a\u7528\u6237\u767b\u9646<br>\u9700\u6c42\u5982\u4e0b\uff1a<br>1\uff09\u8bbf\u95ee\u767b\u9646\u9875\u9762<br>2\uff09\u586b\u5199\u7528\u6237\u540d\u5bc6\u7801\u540e\u63d0\u4ea4<br>3\uff09\u670d\u52a1\u5668\u5224\u65ad\u7528\u6237\u662f\u5426\u5b58\u5728<br>4\uff09\u5982\u679c\u767b\u9646\u5931\u8d25 &#8212;&gt;&gt;&gt;&gt; \u8fd4\u56de\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u9519\u8bef\u4fe1\u606f<br>5\uff09\u5982\u679c\u767b\u5f55\u6210\u529f &#8212;&gt;&gt;&gt;&gt; \u8fd4\u56de\u767b\u9646\u6210\u529f \u4fe1\u606f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e66\u57ce\u9879\u76ee-\u7b2c\u4e8c\u9636\u6bb5\uff1a\u7528\u6237\u767b\u5f55\u548c\u6ce8\u518c\u529f\u80fd\u7684\u4ecb\u7ecd\u3001\u4e66\u57ce\u9879\u76ee-JavaEE\u4e09\u5c42\u67b6\u6784\u4ecb\u7ecd\u3001\u4e66\u57ce\u9879\u76ee-\u642d\u5efa\u4e66\u57ce\u9879\u76ee\u73af\u5883\u3001 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[61],"class_list":["post-2198","post","type-post","status-publish","format-standard","hentry","category-javaweb-code","tag-javaweb"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2198"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2198"}],"version-history":[{"count":8,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2198\/revisions"}],"predecessor-version":[{"id":2705,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2198\/revisions\/2705"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}