图解:
package web;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import domain.User;
import service.LoginService;
public class AutoLoginFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 强制转换
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resq=(HttpServletResponse) response;
HttpSession session=req.getSession();
//获取cookie进行登录操作
//定义cookie_username和cookie_password
String cookie_username=null;
String cookie_password=null;
//获取cookie
Cookie []cookies=req.getCookies();
//获取名字是cookie_name和cookie_password
for (Cookie cookie : cookies) {
if ("cookie_username".equals(cookie.getName())) {
cookie_username=cookie.getValue();
}
if ("cookie_password".equals(cookie.getName())) {
cookie_password=cookie.getValue();
}
}
//判断cookie_username是否为空
if (cookie_username!=null&&cookie_password!=null) {
//进行登录
User user=null;
try {
LoginService service=new LoginService();
user=service.findUser(cookie_username,cookie_password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//将用户保存到session,目的让其他页面也能用
session.setAttribute("user", user);
}
//放行
chain.doFilter(req, resq);
//配置文件
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import domain.User;
import service.LoginService;
import utils.C3p0UtilsDao;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//获取数据
String username=request.getParameter("username");
String password=request.getParameter("password");
//封装数据(这里忽略)
//传递数据
User user=null;
try {
LoginService service=new LoginService();
user=service.findUser(username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (user!=null) {
//判断用户是否勾选自动登录
String autologin=request.getParameter("autologin");
if (autologin!=null) {
//创建cookie
Cookie cookie_username=new Cookie("cookie_username", user.getUsername());
Cookie cookie_password=new Cookie("cookie_password",user.getPassword());
//设置持久化时间
cookie_username.setMaxAge(60*60);
cookie_password.setMaxAge(60*60);
//设置cookie的携带路径(该项目的路径)
cookie_username.setPath(request.getContextPath());
cookie_password.setPath(request.getContextPath());
//发送cookie
response.addCookie(cookie_username);
response.addCookie(cookie_password);
}
//将用户保存到session,目的让其他页面也能用
HttpSession session=request.getSession();
session.setAttribute("user", user);
//重定向到首页
response.sendRedirect(request.getContextPath());
} else {
request.setAttribute("loginInfo", "用户名或者密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}