在导航栏的header.jsp中的登录按钮进行处理:
<li><a href="${pageContext.request.contextPath }/user_login.jsp" >登录</a></li>
user_login.jsp给form表单一个链接的地址:
<form action="${pageContext.request.contextPath }/user_login" method="post">
在servlet层中加入一个servlet类,命名为:UserLoginServlet.java
定义两个变量:
String ue=request.getParameter("ue");
String password=request.getParameter("password");
在UserDao.java写入查询的语句,一个是根据用户名(username)查询,另一个是根据邮箱(email)查询:
public User selectByUsernamePassword(String username,String password) throws SQLException { QueryRunner r = new QueryRunner(DBUtil.getDataSource()); String sql="select * from user where username=? and password=?"; return r.query(sql, new BeanHandler<User>(User.class),username,password); } public User selectByEmailPassword(String email,String password) throws SQLException { QueryRunner r = new QueryRunner(DBUtil.getDataSource()); String sql="select * from user where email=? and password=?"; return r.query(sql, new BeanHandler<User>(User.class), email,password); }
在UserService.java中写入根据UserDao层查询出来的结果进行一个处理:
public User login(String ue,String password) { User user=null; try { user = uDao.selectByUsernamePassword(ue, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(user!=null) { return user; } try { user=uDao.selectByEmailPassword(ue, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(user!=null) { return user; } return null; }
UserLoginServlrt.java中通过由service层中处理的结果从而获取数据,当登录失败时候的结果:
package com.guiyan.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.guiyan.model.User; import com.guiyan.service.UserService; /** * Servlet implementation class UserLoginServlet */ @WebServlet("/user_login") public class UserLoginServlet extends HttpServlet { private UserService uService=new UserService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ue=request.getParameter("ue"); String password=request.getParameter("password"); User user=uService.login(ue, password); if(user==null) { request.setAttribute("failMsg", "用户名、邮箱或者密码错误,请重新登录!!!"); request.getRequestDispatcher("/user_login.jsp").forward(request, response); } } }
数据库里的内容:
其登录失败的效果图:
上图是登录失败的结果
处理登录成功后跳转到个人中心
最终效果:
UserLoginServlet.java进行登录成功的处理:
package com.guiyan.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.guiyan.model.User; import com.guiyan.service.UserService; /** * Servlet implementation class UserLoginServlet */ @WebServlet("/user_login") public class UserLoginServlet extends HttpServlet { private UserService uService = new UserService(); /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ue = request.getParameter("ue"); String password = request.getParameter("password"); User user = uService.login(ue, password); if(user==null) { request.setAttribute("failMsg", "用户名、邮箱或者密码错误,请重新登录!!!"); request.getRequestDispatcher("/user_login.jsp").forward(request, response); }else { request.getSession().setAttribute("user", user); request.getRequestDispatcher("/user_center.jsp").forward(request, response); } } }
user_center.jsp的创建:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4 5 6 <!DOCTYPE html> 7 <html> 8 <head> 9 <title>个人中心</title> 10 <meta name="viewport" content="width=device-width, initial-scale=1"> 11 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 12 <link type="text/css" rel="stylesheet" href="css/bootstrap.css"> 13 <link type="text/css" rel="stylesheet" href="css/style.css"> 14 <script type="text/javascript" src="js/jquery.min.js"></script> 15 <script type="text/javascript" src="js/bootstrap.min.js"></script> 16 <script type="text/javascript" src="js/simpleCart.min.js"></script> 17 </head> 18 <body> 19 20 21 22 23 24 25 26 <!--header--> 27 <jsp:include page="/header.jsp"></jsp:include> 28 29 30 <!--//header--> 31 32 33 <!--account--> 34 <div class="account"> 35 <div class="container"> 36 <div class="register"> 37 38 <form action="my.action" method="post"> 39 <input type="hidden" name="user.id" value="1"> 40 <div class="register-top-grid"> 41 <h3>个人中心</h3> 42 43 <h4>收货信息</h4> 44 <div class="input"> 45 <span>收货人<label></label></span> 46 <input type="text" name="user.name" value="${user.name }" placeholder="请输入收货"> 47 </div> 48 <div class="input"> 49 <span>收货电话</span> 50 <input type="text" name="user.phone" value="${user.phone }" placeholder="请输入收货电话"> 51 </div> 52 <div class="input"> 53 <span>收货地址</span> 54 <input type="text" name="user.address" value="${user.address }" placeholder="请输入收货地址"> 55 </div> 56 <div class="register-but text-center"> 57 <input type="submit" value="提交"> 58 </div> 59 <hr> 60 <h4>安全信息</h4> 61 <div class="input"> 62 <span>原密码</span> 63 <input type="password" name="user.password" placeholder="请输入原密码"> 64 </div> 65 <div class="input"> 66 <span>新密码</span> 67 <input type="password" name="user.passwordNew" placeholder="请输入新密码"> 68 </div> 69 <div class="clearfix"> </div> 70 <div class="register-but text-center"> 71 <input type="submit" value="提交"> 72 </div> 73 </div> 74 </form> 75 <div class="clearfix"> </div> 76 </div> 77 </div> 78 </div> 79 <!--//account--> 80 81 82 83 84 85 86 <!--footer--> 87 <jsp:include page="/footer.jsp"></jsp:include> 88 <!--//footer--> 89 90 </body> 91 </html>