JavaWeb如何使用mvc模式实现登录功能

JavaWeb如何使用mvc模式实现登录功能

这篇文章给大家分享的是有关JavaWeb如何使用mvc模式实现登录功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

部署项目、环境搭建

详细内容

1.导包

2.web >> index.jsp web >> login.jsp web >>success.jsp

1) web >> index.jsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>$Title$</title></head><body><ahref="login.jsp">登录</a></body></html>

2) web >> login.jsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%><htmllang="en"><head><metacharset="UTF-8"><title>登录</title><style>#msg{color:red;}</style></head><body><formaction="user"method="post">账号:<inputtype="text"name="userName"><spanid="msg"><%=request.getAttribute("msg")%></span>密码:<inputtype="text"name="passWord"><inputtype="hidden"name="method"value="login"><inputtype="submit"value="登录"></form></body></html>

3) web >>success.jsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@pageimport="constant.Con"%><html><head><title>用户中心</title></head><body><%=request.getSession().getAttribute(Con.USER)%><h2>欢迎您</h2><ahref="login.html">返回重新登录</a></body></html>

3.constant >> Con

packageconstant;importjava.io.Serializable;publicclassConimplementsSerializable{//session中保存用户登录信息publicstaticfinalStringUSER="user";}

entity >> User

packageentity;importjava.io.Serializable;publicclassUserimplementsSerializable{privateintid;privateStringuserName;privateStringpassWord;publicUser(intid,StringuserName,StringpassWord){this.id=id;this.userName=userName;this.passWord=passWord;}publicUser(){}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}}

4.resources >> prop.properties

driverClassName=com.mysql.cj.jdbc.DriverurlName=jdbc:mysql://localhost:3306/myjdbc?characterEncoding=utf8&useSSL=false&serverTimezone=UTCuserName=rootpasswordName=root

5.utils >> JDBCUtils

packageutils;importjava.io.IOException;importjava.io.InputStream;importjava.sql.*;importjava.util.Properties;/*JDBC工具类*/publicclassJDBCUtils{//声明驱动的路径staticStringdriverClass;staticStringurl;staticStringuser;staticStringpassword;/*静态代码块只会在加载class文件的时候执行一次,将注册驱动的代码由静态代码块来实现*/static{//创建属性集对象Propertiesprop=newProperties();//将文件中的数据读取到属性集中try{//prop.propertiesInputStreamis=JDBCUtils.class.getClassLoader().getResourceAsStream("prop.properties");prop.load(is);}catch(IOExceptione){e.printStackTrace();}//获取key对应的valuedriverClass=prop.getProperty("driverClassName");url=prop.getProperty("urlName");user=prop.getProperty("userName");password=prop.getProperty("passwordName");try{//加载驱动Class.forName(driverClass);}catch(ClassNotFoundExceptione){e.printStackTrace();}}/*将获取资源的方法进行封装:Connection连接接口对象*/publicstaticConnectiongetConnection()throwsSQLException,ClassNotFoundException{//获取连接Connectionconnection=DriverManager.getConnection(url,user,password);returnconnection;}/*封装方法,用于释放资源*/publicstaticvoidclose(Connectionconnection,Statementstatement,ResultSetresultSet){try{if(resultSet!=null){resultSet.close();}}catch(SQLExceptione){e.printStackTrace();}//调用已经实现功能的方法直接使用close(connection,statement);}/*重载一个释放资源的代码,用来释放两个资源*/publicstaticvoidclose(Connectionconnection,Statementstatement){try{if(statement!=null){statement.close();}}catch(SQLExceptione){e.printStackTrace();}try{if(connection!=null){connection.close();}}catch(SQLExceptione){e.printStackTrace();}}}

6.servlet >> UserServlet

packageservlet;importconstant.Con;importservice.UserService;importservice.impl.UserServiceImpl;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;@WebServlet(name="user",urlPatterns="/user")publicclassUserServletextendsHttpServlet{privateUserServiceuserService=newUserServiceImpl();@Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1.设置请求字符集为utf-8req.setCharacterEncoding("utf-8");//2.获取请求参数method,根据值调用不同方法处理业务Stringmethod=req.getParameter("method");if(method.equals("login")){this.login(req,resp);}}//登录方法privatevoidlogin(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1.获取账号和密码StringuserName=req.getParameter("userName");StringpassWord=req.getParameter("passWord");//2.调用service的方法处理登录booleanresult=userService.checkUser(userName,passWord);if(result){//true表示登录成功//转发跳转成功页面//req.getRequestDispatcher("/success.jsp").forward(req,resp);//将用户信息保存在session域对象中req.getSession().setAttribute(Con.USER,userName);//重定向跳转成功页面resp.sendRedirect(req.getContextPath()+"/success.jsp");}else{//false登录失败,返回登录页面req.setAttribute("msg","账号密码不匹配");req.getRequestDispatcher("/login.jsp").forward(req,resp);}}}

7.service >> UserServiceservice >> impl >> UserServiceImpl

packageservice;publicinterfaceUserService{//判断登录成功与否booleancheckUser(StringuserName,StringpassWord);}

packageservice.impl;importdao.UserDao;importdao.impl.UserDaoImpl;importentity.User;importservice.UserService;importutils.JDBCUtils;importjava.sql.Connection;importjava.util.List;publicclassUserServiceImplimplementsUserService{privateUserDaouserDao=newUserDaoImpl();@OverridepublicbooleancheckUser(StringuserName,StringpassWord){//连接对象Connectionconnection=null;try{//1.获取数据库连接connection=JDBCUtils.getConnection();//2.调用dao方法查询数据List<User>users=userDao.findUserByUserNameAndPassWord(connection,userName,passWord);//3.根据查询结果返回成功失败标志if(users.size()>0){returntrue;}else{returnfalse;}}catch(Exceptione){e.printStackTrace();returnfalse;}finally{JDBCUtils.close(connection,null);}}}

8.dao >> UserDao dao >> impl >> UserDaoImpl

packagedao;importentity.User;importjava.sql.Connection;importjava.util.List;publicinterfaceUserDao{//根据账号密码查询数据库,返回结果集List<User>findUserByUserNameAndPassWord(Connectionconnection,StringuserName,StringpassWord);}

packagedao.impl;importdao.UserDao;importentity.User;importutils.JDBCUtils;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.List;publicclassUserDaoImplimplementsUserDao{@OverridepublicList<User>findUserByUserNameAndPassWord(Connectionconnection,StringuserName,StringpassWord){//发送sql语句对象PreparedStatementstatement=null;List<User>userList=newArrayList<>();try{connection=JDBCUtils.getConnection();//获取Statement对象statement=connection.prepareStatement("select*fromuserwhereusername=?andpassword=?");statement.setString(1,userName);statement.setString(2,passWord);ResultSetrs=statement.executeQuery();while(rs.next()){Useruser=newUser();intid=rs.getInt(1);Stringusername=rs.getString(2);Stringpassword=rs.getString(3);user.setId(id);user.setUserName(username);user.setPassWord(password);userList.add(user);}returnuserList;}catch(Exceptione){e.printStackTrace();returnuserList;}finally{JDBCUtils.close(null,statement,null);}}}

登录实现

1.首页 index.jsp

2.错误登录login.jsp

3. 正确登录login.jsp

4. 登录成功success.jsp

感谢各位的阅读!关于“JavaWeb如何使用mvc模式实现登录功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

发布于 2022-03-03 21:29:41
收藏
分享
海报
0 条评论
50
上一篇:如何使用OpenCV-Python实现识别答题卡判卷功能 下一篇:如何解决MySQL使用中文乱码问题
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码