自动登录(过滤器filter的应用)
//反復實驗的時候注意數據庫數據的更新
//將數據存儲到cookie里面
protected void doGet(HttpServletRequest request, HttpServletResponse response)
?? ??? ??? ?throws ServletException, IOException {
???? request.setCharacterEncoding("utf-8");
???? HttpSession se = request.getSession();
???? String username = request.getParameter("username");
???? String password = request.getParameter("password");
???? UserService ser=new UserService();
???? User1 user=null;
???? try {
?? ??? ?user=ser.login(username,password);
?? ?} catch (SQLException e) {
?? ??? ?// TODO Auto-generated catch block
?? ??? ?e.printStackTrace();
?? ?}
???? System.out.println("您好");
???? if(user!=null){
?? ??? ? String autoLogin=request.getParameter("autoLogin");
?? ??? ? if(autoLogin!=null){
?? ??? ??? ? System.out.println("0");
?? ??? ??? ? Cookie cookie_username=new Cookie("cookie_username",username);
?? ??? ??? ? Cookie cookie_password=new Cookie("cookie_password",password);
?? ??? ??? ? System.out.println(username);
?? ??? ??? ? System.out.println(password);
?? ??? ??? ? //設置cookie持續化時間
?? ??? ??? ? cookie_username.setMaxAge(60*10);
?? ??? ??? ? cookie_password.setMaxAge(60*10);
?? ??? ??? ? //設置路徑
?? ??? ??? ? cookie_username.setPath(request.getContextPath());
?? ??? ??? ? cookie_password.setPath(request.getContextPath());
?? ??? ??? ? //發送cookie
?? ??? ??? ? response.addCookie(cookie_username);
?? ??? ??? ? response.addCookie(cookie_password);
?? ??? ??? ? System.out.println("0.1");
?? ??? ? }
?? ??? ? //非自動登錄部分
?? ??? ? se.setAttribute("user", user);
?? ??? ? response.sendRedirect(request.getContextPath());
???? }else{
?? ??? ? request.setAttribute("logininfo", "用戶名密碼錯誤");
?? ??? ? request.getRequestDispatcher("login.jsp").forward(request, response);
???? }??
?? ?}
//攔截器部分代碼
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
?? ??? ?HttpServletRequest req=(HttpServletRequest)request;
?? ??? ?HttpServletResponse resp=(HttpServletResponse)response;
?? ??? ??? HttpSession session = req.getSession();
?? ??? ??? String cookie_username=null;
?? ??? ??? String cookie_password=null;
?? ??? ??? System.out.println("1");
?? ??? ??? Cookie[] cookies = req.getCookies();
?? ??? ??? if(cookies!=null){
?? ??? ??? ??? ??? for(Cookie cookie:cookies){
?? ??? ??? ??? ??? ? ?
?? ??? ??? ??? ??? ??? if("cookie_username".equals(cookie.getName())){
?? ??? ??? ??? ??? ??? ??? cookie_username=cookie.getValue();
?? ??? ??? ??? ??? ??? }
?? ??? ??? ??? ??? ??? if("cookie_password".equals(cookie.getName())){
?? ??? ??? ??? ??? ??? ??? cookie_password=cookie.getValue();
?? ??? ??? ??? ??? ??? }
?? ??? ??? ??? ??? }
?? ??? ??? }
?? ??? ??? System.out.println("3");
?? ??? ?? ?
?? ??? ??? if(cookie_username!=null&&cookie_password!=null){
?? ??? ??? ??? UserService ser = new UserService();
?? ??? ??? ??? User1 user=null;
?? ??? ??? ??? try {
?? ??? ??? ??? ?user=ser.login(cookie_username, cookie_password);
?? ??? ??? ?} catch (SQLException e) {
?? ??? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ??? session.setAttribute("user", user);
?? ??? ??? ??? if(user!=null){
?? ??? ??? ??? ??? request.getRequestDispatcher("index.jsp").forward(req,resp);
?? ??? ??? ??? }
?? ??? ??? ?? ?
?? ??? ??? ?? ?
?? ??? ??? }
?? ??? ??? ?
?? ??? ??? ?chain.doFilter(req, resp);
?? ??? ??? ?System.out.println("5");
?? ?}
//web.xml的配置
<filter>
??? <display-name>Myservlet2</display-name>
??? <filter-name>Myservlet2</filter-name>
??? <filter-class>cn.jy.web.Myservlet2</filter-class>
? </filter>
? <filter-mapping>
??? <filter-name>Myservlet2</filter-name>
??? <url-pattern>/*</url-pattern>????????????????????????????? //注意? /*
? </filter-mapping>
?
轉載于:https://www.cnblogs.com/Fisherman13/p/10535118.html
總結
以上是生活随笔為你收集整理的自动登录(过滤器filter的应用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode PHP题解--D6 5
- 下一篇: 装饰器 -- 函数装饰器(tornado