首页 > 代码库 > Servlet-cookies机制

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,然后跳转到根目录)

 

Servlet-cookies机制