***
> Filter过滤端
***
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request= (HttpServletRequest) req;
HttpServletResponse response= (HttpServletResponse) resp;
Cookie[] cookies=request.getCookies();
User user= (User) request.getSession().getAttribute("user");
if(user!=null){
System.out.println("不为空");
}else{
System.out.println("为空,重新加载");
if(cookies!=null){
String username=cookies[1].getValue();
System.out.println(username);
String password=cookies[2].getValue();
System.out.println(password);
ComboPooledDataSource cpd=new ComboPooledDataSource();
QueryRunner qr=new QueryRunner(cpd);
String sql="select * from manager where M_name=? and M_password=?";
try {
user=qr.query(sql,new BeanHandler<User>(User.class),username,password);
request.getSession().setAttribute("user",user);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
chain.doFilter(request, response);
}
***
> Servlet数据处理端
***
//servlet获取form提交的数据
String name=request.getParameter("username")
String password=request.getParameter("password")
String autoLogin=request.getParameter("autoLogin")
//根据用户名和密码进行连接数据库查证,如有此用户返回所有数据,并被封装成Javabean
ComboPooledDataSource cpd=new ComboPooledDataSource()
QueryRunner qr=new QueryRunner(cpd)
String sql="select * from manager where M_name=? and M_password=?"
try {
User user=qr.query(sql,new BeanHandler<User>(User.class),name,password)
if(user!=null){
//如果用户选择了自动登录则将用户的信息返回到浏览器,以便下次会话使用验证(未进行密码加密)
if(autoLogin.equals("ok")){
Cookie cookieName=new Cookie("username",name)
Cookie cookPassword=new Cookie("password",password)
cookieName.setMaxAge(24*60*60)
cookPassword.setMaxAge(24*60*60)
cookieName.setPath(request.getContextPath()+"/")
cookPassword.setPath(request.getContextPath()+"/")
response.addCookie(cookieName)
response.addCookie(cookPassword)
}
//将个人数据设置到session中
request.getSession().setAttribute("user",user)
response.sendRedirect("/testWeb/success.jsp")
}else{
System.out.println("空")
}
} catch (SQLException e) {
e.printStackTrace()
}