目录
JAVA实现网页的登录与注册
1、创建Maven Web工程,参考【JAVA】Web服务器—Tomcat_Lx_Hy_的博客-CSDN博客
2、导入所需要的坐标(servlet、IOUtils工具类、MyBatis、MySQL、tomcat插件)
- <dependencies>
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>javax.servlet-apiartifactId>
- <version>3.1.0version>
- <scope>providedscope>
- dependency>
- <dependency>
- <groupId>commons-iogroupId>
- <artifactId>commons-ioartifactId>
- <version>2.6version>
- dependency>
- <dependency>
- <groupId>org.mybatisgroupId>
- <artifactId>mybatisartifactId>
- <version>3.5.5version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.32version>
- dependency>
- dependencies>
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.tomcat.mavengroupId>
- <artifactId>tomcat7-maven-pluginartifactId>
- <version>2.2version>
- <configuration>
- <port>8080port>
-
- configuration>
- plugin>
- plugins>
- build>
3、准备静态页面,因为此项目不侧重前端页面设计所以直接给出HTML

4、在Navicat中创建数据库、tb_user表用于存储用户信息

5、编写mybatis-config.xml核心配置文件
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
-
- <typeAliases>
- <package name="com.Server.pojo"/>
- typeAliases>
-
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql:///自己数据库的表名?useSSL=false&useServerPrepStmts=true"/>
- <property name="username" value="自己的MySQL用户名"/>
- <property name="password" value="自己的MySQL密码"/>
- dataSource>
- environment>
- environments>
- <mappers>
-
- <package name="com.Server.mapper"/>
- mappers>
- configuration>
5、创建UserMapper接口
- public interface UserMapper {
- }
6、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客)

- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- //命名空间:UserMapper所在位置
- <mapper namespace="com.Server.mapper.UserMapper">
-
- mapper>
7、创建Web文件夹及两个功能的实现类
8、创建User实体类
- public class User {
-
- private Integer id;
- private String username;
- private String password;
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", username='" + username + '\'' +
- ", passwords='" + password + '\'' +
- '}';
- }
- }
在UserMapper接口中编写出登录功能所需的查询接口
- //根据用户名和密码查询用户
- User selectByConditionSingle_Log(@Param("username") String username, @Param("password") String password);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息
- <select id="selectByConditionSingle_Log" resultType="com.Server.pojo.User">
- select id, username, password
- from tb_user
- where username = #{username}
- and password = #{password}
- select>
最后在LoginServlet中编写实现方法
(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、和【JAVA】Servlet_Lx_Hy_的博客-CSDN博客)
- @WebServlet("/loginServlet")
- public class LoginServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- //接收用户名和密码
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- //获取SqlSessionFactory对象
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- //获取SqlSession对象
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //获取UserMapper
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //调用方法
- User user = userMapper.selectByConditionSingle_Log(username, password);
- //释放资源
- sqlSession.close();
-
- response.setContentType("text/html;charset=utf-8");
- PrintWriter writer = response.getWriter();
- //判断user是否为null
- if (user != null) {
- //登陆成功
- writer.write("登陆成功");
- } else {
- //登陆失败
- writer.write("登陆失败");
- }
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
在UserMapper接口中编写出注册功能所需的查询接口及添加接口
- //判断用户名是否已经存在
- User selectByUsername(String username);
-
- //添加用户数据
- void add(User user);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息及添加信息
-
- <select id="selectByUsername" resultType="com.Server.pojo.User">
- select id, username, password
- from tb_user
- where username = #{username}
- select>
-
- <insert id="add">
- insert into tb_user
- values (null, #{username}, #{password})
- insert>
最后在RegisterServlet中编写实现方法
(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、和【JAVA】Servlet_Lx_Hy_的博客-CSDN博客)
- @WebServlet("/registerServlet")
- public class RegisterServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- //接收用户数据
- String username = request.getParameter("username");
- String password = request.getParameter("password");
- //封装用户对象
- User user = new User();
- user.setUsername(username);
- user.setPassword(password);
- //获取SqlSessionFactory对象
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- //获取SqlSession对象
- SqlSession sqlSession = sqlSessionFactory.openSession();
- //获取UserMapper
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- //调用方法
- User u = userMapper.selectByUsername(username);
- response.setContentType("text/html;charset=utf-8");
- //判断用户对象信息
- if (u == null) {
- //用户名不存在
- userMapper.add(user);
- sqlSession.commit();
- response.getWriter().write("注册成功");
- sqlSession.close();
- } else {
- //用户名存在给出信息
- response.getWriter().write("用户名已存在");
- }
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
SqlSessionFactory只能创建一次,所以需要将LoginServlet和RegisterServlet中创建的工厂类抽取为一个工具类
【方法】
1、创建一个SqlSessionFactoryUtils

2、在编写静态代码块用来存放SqlSessionFactory的创建,再创建一个public方法用于返回创建的工厂
- public class SqlSessionFactoryUtils {
- private static SqlSessionFactory sqlSessionFactory;
- //静态代码块,只执行一次
- static {
- try {
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static SqlSessionFactory getSqlSessionFactory(){
- return sqlSessionFactory;
- }
- }
3、在LoginServlet和RegisterServlet中调用方法来替换原代码
【LoginServlet】

【RegisterServlet】

以上便是JAVA实现网页的登录与注册的全部内容,如有问题,可以私信讨论,感谢阅读!