本文章要实现的功能如下: 1、首页未登录状态: 2、首页已登录状态: (这篇文章先不涉及下方图书信息的显示,该部分内容将在后续文章进行) 3、修改密码功能
4、注销用户功能
新建Filter类文件,起名为AutoLoginFilter 为该文件添加Filter接口 在该文件的doFilter()方法里添加过滤操作
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; //获取cookie对象 Cookie[] cookies=request.getCookies(); String autoLogin=null; //遍历cookie对象的所有信息,判断用户是否选择了自动登录选项 for(int i=0;cookies!=null&&i<cookies.length;i++) { if("autologin".equals(cookies[i].getName())) { //用户选择了自动登录,获取存在cookie里的用户信息 autoLogin=cookies[i].getValue(); break; } } if(autoLogin!=null) { //提取用户的用户名和密码 String[] parts=autoLogin.split("-"); String username=parts[0]; String password=parts[1]; UserDaoImp udi=new UserDaoImp(); //判断cookie里的信息是否和数据库中信息相匹配,如果匹配成功,则将信息存到session中,便于后面的调用 if(udi.search(username, password)) { User user=new User(); user.setUsername(username); user.setPassword(password); request.getSession().setAttribute("user", user); } } chain.doFilter(request, response); }修改密码所需要的接口:
boolean update(String username,String password);接口实现:
public boolean update(String username, String password) { // TODO Auto-generated method stub boolean flag=false; DBCon dbcon=new DBCon(); cn=dbcon.getConnection(); String sql="update register set password=? where username=?"; try { psm=cn.prepareStatement(sql); psm.setString(1, password); psm.setString(2, username); if(psm.executeUpdate()!=0) { flag=true; } cn.close(); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return flag; }updatePwd.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>图书管理系统修改密码</title> </head> <center><h3>图书管理系统修改密码</h3></center> <body style="text-align:center"> <form action="${pageContext.request.contextPath}/UpdatePwdServlet" method="post"> <table border="0" width="350px" cellpadding="0" cellspacing="0" align="center" style="background:#CFF;"> <tr> <td height="50" align="center">修改前密码: <input type="password" name="usedPwd" /></td> </tr> <tr> <td height="50" align="center">修改后密码: <input type="password" name="pwd" /></td> </tr> <tr> <td height="50"> <input type="submit" value="修改" /> <inut type="reset" value="重置" /> </td> </tr> </table> </form> </body> </html>UpdatePwdServlet.java:
package 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 daoImp.UserDaoImp; import entity.User; @WebServlet("/UpdatePwdServlet") public class UpdatePwdServlet extends HttpServlet { private static final long serialVersionUID = 1L; public UpdatePwdServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String usedPwd=request.getParameter("usedPwd"); String pwd=request.getParameter("pwd"); User user=new User(); user=(User) request.getSession().getAttribute("user"); UserDaoImp udi=new UserDaoImp(); if(udi.update(user.getUsername(), pwd)) { //修改完成后跳转到登录页面 String url="boolManage/login.jsp"; response.sendRedirect(url); } } }实现注销功能需要的接口:
boolean delete(String username);接口实现:
public boolean delete(String username) { // TODO Auto-generated method stub boolean flag=false; DBCon dbcon=new DBCon(); cn=dbcon.getConnection(); String sql="delete from register where username=?"; try { psm=cn.prepareStatement(sql); psm.setString(1, username); if(psm.executeUpdate()!=0) { flag=true; } cn.close(); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return flag; }LogoutServlet.java:
package servlet; import java.io.IOException; 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 daoImp.UserDaoImp; import entity.User; @WebServlet("/LogoutServlet") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LogoutServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user=new User(); //获取要注册的用户信息 user=(User) request.getSession().getAttribute("user"); //删除保存在session里的用户信息 request.getSession().removeAttribute("user"); //获取浏览器里的cookie对象 Cookie[] cookies=request.getCookies(); //判断cookie里是否存有要注销的用户信息,如果有则删除 for(int i=0;cookies!=null&&i<cookies.length;i++) { if("autologin".equals(cookies[i].getName())) { cookies[i].setMaxAge(0); response.addCookie(cookies[i]); break; } } UserDaoImp udi=new UserDaoImp(); udi.delete(user.getUsername()); response.sendRedirect(request.getContextPath()+"/index.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }源码下载
下一步:主页面图书显示