目录
前言
一、环境的搭建
二、功能实现
1、登录功能
2、注册功能
【注意】
总结
前言
JAVA实现网页的登录与注册
一、环境的搭建
1、创建Maven Web工程,参考【JAVA】Web服务器—Tomcat_Lx_Hy_的博客-CSDN博客
2、导入所需要的坐标(servlet、IOUtils工具类、MyBatis、MySQL、tomcat插件)
javax.servlet javax.servlet-api3.1.0 provided commons-io commons-io2.6 org.mybatis mybatis3.5.5 mysql mysql-connector-java5.1.32 org.apache.tomcat.maven tomcat7-maven-plugin2.2 8080
3、准备静态页面,因为此项目不侧重前端页面设计所以直接给出HTML
4、在Navicat中创建数据库、tb_user表用于存储用户信息
5、编写mybatis-config.xml核心配置文件
5、创建UserMapper接口
public interface UserMapper { }
6、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客)
//命名空间:UserMapper所在位置
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 + ''' + '}'; } }
二、功能实现
1、登录功能
在UserMapper接口中编写出登录功能所需的查询接口
//根据用户名和密码查询用户 User selectByConditionSingle_Log(@Param("username") String username, @Param("password") String password);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息
最后在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); } }
2、注册功能
在UserMapper接口中编写出注册功能所需的查询接口及添加接口
//判断用户名是否已经存在 User selectByUsername(String username); //添加用户数据 void add(User user);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息及添加信息
insert into tb_user values (null, #{username}, #{password})
最后在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实现网页的登录与注册的全部内容,如有问题,可以私信讨论,感谢阅读!
全部源码放在Java实现网页版登录注册系统-Java文档类资源-CSDN文库