zoukankan      html  css  js  c++  java
  • Servlet-cookies机制

    通过cookies,可以保存用户的使用习惯,优化用户体验,同时能减轻服务端压力.下面说下在Servlet中cookies机制的使用

    就用保存用户登录数据来举例子:

    打开网页的处理Servlet:

    package com.zhangwei;
    
    import java.io.*;
    import javax.servlet.http.*;
    
    public class CookiesPreCheck extends HttpServlet{
        
        //处理get请求
        public void doGet(HttpServletRequest req, HttpServletResponse res){
            res.setContentType("text/html; charset=GBK");
            Cookie[] cookiearray = req.getCookies();
            if(cookiearray != null){
                String username = null;
                String password = null;
                try{
                    PrintWriter pw = res.getWriter();
                    for(int i = 0; i<cookiearray.length;i++){
                        Cookie temp = cookiearray[i];
                        if(temp.getName().equals("username")){
                            username = new String(temp.getValue());
                        }
                        if(temp.getName().equals("password")){
                            password = new String(temp.getValue());
                        }
                    }
                    pw.print(username+password);
                    if(username!=null && password!= null){
                        HttpSession hs = req.getSession(true);
                        hs.setAttribute("username",username);
                        hs.setAttribute("password",password);
                        res.sendRedirect("account");
                        return ;
                    }
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            try{
                res.sendRedirect("login");
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        public void doPost(HttpServletRequest req, HttpServletResponse res){
            
            this.doGet(req,res);
        }
    }

    主要做了一件事情,检测本地的cookies,看里面是否保存了用户信息,如果有,那么就将用户信息写到session,如果没有就跳转到登录页面.

    用户信息页面主要是从会话中获取并显示用户信息

    登录页面主要是实现用户登录,并且将用户账号密码通过表单传递到登录处理页面

    登录处理页面:

    package com.zhangwei;
    
    import java.io.*;
    import javax.servlet.http.*;
    
    public class LoginCL extends HttpServlet{
        
        //处理get请求
        public void doGet(HttpServletRequest req, HttpServletResponse res){
            res.setContentType("text/html; charset=GBK");
            this.doPost(req,res);
        }
        public void doPost(HttpServletRequest req, HttpServletResponse res){
    
            String username = req.getParameter("username");
            String passwd = req.getParameter("passwd");
            //验证,并且将用户数据写入session和cookies
            try{
                HttpSession hs = req.getSession(true);
                hs.setAttribute("username",username);
                hs.setAttribute("password",passwd);
                Cookie c = new Cookie("username",username);
                Cookie e = new Cookie("password",passwd);
                //不设置有效时间的话cookies就不会被保存
                c.setMaxAge(30);
                e.setMaxAge(30);
                //res.sendRedirect("account");
                res.addCookie(c);
                res.addCookie(e);
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    用户处理页面主要做的事情是验证用户信息,如果通过,就将用户信息写入session和cookies,然后跳转到用户页面(当然也可以只写入cookies,然后跳转到根目录)

  • 相关阅读:
    CodeForces
    CodeForces
    CodeForces
    【模板】POJ-1511(dijkstra堆优化+链式前向星)
    【模板】POJ-1502(dijkstra)
    P2862 [USACO06JAN]Corral the Cows G
    P2495 [SDOI2011]消耗战
    CF613D Kingdom and its Cities
    P4655 [CEOI2017]Building Bridges
    P3917 异或序列
  • 原文地址:https://www.cnblogs.com/color-my-life/p/3980493.html
Copyright © 2011-2022 走看看