关于JSP用户登录连接数据库详情(2)

package com.ftzlover.demo.web; import com.ftzlover.demo.po.User; import com.ftzlover.demo.service.UserService; import com.ftzlover.demo.vo.ResultInfo; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/user") public class UserServlet extends HttpServlet { private UserService userService = new UserService(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接收用户行为 String actionName = request.getParameter("actionName"); if ("login".equals(actionName)) { // 用户登录 userLogin(request, response); } } /** * 用户登录 1. 获取参数 (姓名、密码) 2. 调用Service层的方法,返回ResultInfo对象 3. 判断是否登录成功 如果失败 将resultInfo对象设置到request作用域中 请求转发跳转到登录页面 如果成功 将用户信息设置到session作用域中 判断用户是否选择记住密码(rem的值是1) 如果是,将用户姓名与密码存到cookie中,设置失效时间,并响应给客户端 如果否,清空原有的cookie对象 重定向跳转到index页面 * @param request * @param response */ private void userLogin(HttpServletRequest request, HttpServletResponse response) { // 1. 获取参数 (姓名、密码) String userName = request.getParameter("userName"); String userPwd = request.getParameter("userPwd"); // 2. 调用Service层的方法,返回ResultInfo对象 ResultInfo<User> resultInfo = userService.userLogin(userName, userPwd); // 3. 判断是否登录成功 if (resultInfo.getCode() == 1) { // 如果成功 // 将用户信息设置到session作用域中 request.getSession().setAttribute("user", resultInfo.getResult()); // 判断用户是否选择记住密码(rem的值是1) String rem = request.getParameter("rem"); // 如果是,将用户姓名与密码存到cookie中,设置失效时间,并响应给客户端 if ("1".equals(rem)) { // 得到Cookie对象 Cookie cookie = new Cookie("user",userName +"-"+userPwd); // 设置失效时间 cookie.setMaxAge(3*24*60*60); // 响应给客户端 response.addCookie(cookie); } else { // 如果否,清空原有的cookie对象 Cookie cookie = new Cookie("user", null); // 删除cookie,设置maxage为0 cookie.setMaxAge(0); // 响应给客户端 response.addCookie(cookie); } // 重定向跳转到index页面 try { response.sendRedirect("index.html"); } catch (IOException e) { e.printStackTrace(); } } else { // 失败 // 将resultInfo对象设置到request作用域中 request.setAttribute("resultInfo", resultInfo); // 请求转发跳转到登录页面 try { request.getRequestDispatcher("login.jsp").forward(request, response); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }

附件:util层的DBUtil

package com.ftzlover.demo.util; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DBUtil { // 得到配置文件对象 private static Properties properties = new Properties(); static { try { // 加载配置文件(输入流) InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties"); System.out.println("是否获取到流对象:" + in); System.out.println("流对象:" + properties); // 通过load()方法将输入流的内容加载到配置文件对象中 properties.load(in); // 通过配置文件对象的getProperty()方法获取驱动名,并加载驱动 Class.forName(properties.getProperty("jdbcName")); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnetion() { Connection connection = null; try { // 得到数据库连接的相关信息 String dbUrl = properties.getProperty("dbUrl"); System.out.println(dbUrl); String dbName = properties.getProperty("dbName"); System.out.println(dbName); String dbPwd = properties.getProperty("dbPwd"); System.out.println(dbName); // 得到数据库连接 connection = DriverManager.getConnection(dbUrl, dbName, dbPwd); System.out.println(connection); } catch (SQLException throwables) { throwables.printStackTrace(); } return connection; } public static void close(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) { try { // 判断资源对象如果不为空,则关闭 if (resultSet != null) { resultSet.close(); } if (preparedStatement != null) { preparedStatement.close(); } if (connection != null) { connection.close(); } } catch (Exception e) { e.printStackTrace(); } } }

8、示例

十分炫酷的登陆界面加完善的后台登陆界面截图:

数据库代码:新建数据库名叫my 建表名叫tb_user

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysffd.html