本文章要实现的功能如下:
1、首页未登录状态:
2、首页已登录状态:
(这篇文章先不涉及下方图书信息的显示,该部分内容将在后续文章进行)
3、修改密码功能
4、注销用户功能
一、编写主界面
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!--导入JSTL标签库 --><%@ taglib prefix="c" uri="/jsp/jstl/core" %><!DOCTYPE html><html><head><meta charset="utf-8"><title>首页</title></head><body><br /><center><h3>欢迎进入图书管理系统</h3></center><br /><br /><c:choose><%-- 判断用户信息是否存在在session中,如果不存在,则显示登录页面链接 --%><c:when test="${sessionScope.user==null}"><a href="${pageContext.request.contextPath}/login.jsp">用户登录</a></c:when><c:otherwise><%-- 如果存在,则直接显示用户信息 --%>欢迎你,${sessionScope.user.username }! <a href="${pageContext.request.contextPath}/updatePwd.jsp">修改密码</a> <a href="${pageContext.request.contextPath}/LogoutServlet">注销</a><hr /><br /></c:otherwise></c:choose></body></html>
二、编写自动登录过滤器
新建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);}
三、在web.xml文件配置过滤器信息
<filter><filter-name>AutoLoginFilter</filter-name><filter-class>filter.AutoLoginFilter</filter-class></filter><filter-mapping><!--该元素用来设置过滤器要拦截的资源 --><filter-name>AutoLoginFilter</filter-name><url-pattern>/bookManage/index.jsp</url-pattern></filter-mapping>
四、编写修改密码界面及后台servlet
修改密码所需要的接口:
boolean update(String username,String password);
接口实现:
public boolean update(String username, String password) {// TODO Auto-generated method stubboolean 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 blocke.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);}}}
五、编写LogoutServlet类,实现注销功能
实现注销功能需要的接口:
boolean delete(String username);
接口实现:
public boolean delete(String username) {// TODO Auto-generated method stubboolean 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 blocke.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 stubdoGet(request, response);}
源码下载
下一步:主页面图书显示