Cookie案例:简单登录界面中的应用

ServletDemo1.java

 1 package ztq.servlet.study;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.Cookie;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 public class ServletDemo1 extends HttpServlet {
13     public void doGet(HttpServletRequest request, HttpServletResponse response)
14             throws ServletException, IOException {
15         //设置服务器端以UTF-8编码进行输出
16         response.setCharacterEncoding("UTF-8");
17         //设置浏览器以UTF-8编码进行接收,解决中文乱码问题
18         response.setContentType("text/html;charset = UTF-8");
19         PrintWriter out = response.getWriter();
20         
21         //获取cookie
22         String username = "";
23         String check = "";
24         Cookie[] cookies = request.getCookies();
25         for(int i = 0; cookies != null && i < cookies.length; i++){
26             Cookie c = cookies[i];
27             if("username".equals(c.getName())){
28                 username = c.getValue();
29                 check = "checked = 'checked'";
30                 break;
31             }
32         }
33         
34         //登录页面
35         out.write("<form action = '" + request.getContextPath() + "/servlet/ServletDemo2' method = 'post'>");
36         out.write("用户名:<input type = 'text' name = 'username' value = '" + username + "'><br />");
37         out.write("密码:<input type = 'password' name = 'password' value = ''><br />");
38         out.write("记住用户名:<input type = 'checkbox' name = 'remember'" + check + "'><br />");
39         out.write("<input type = 'submit' name = 'submit' value = '登录'><br />");
40     }
41     public void doPost(HttpServletRequest request, HttpServletResponse response)
42             throws ServletException, IOException {
43         doGet(request, response);
44     }
45 }

 

ServletDemo2.java

package ztq.servlet.study;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo2 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String remember = request.getParameter("remember");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset = UTF-8");
        PrintWriter out = response.getWriter();
        
        //创建一个新的Cookie
        Cookie cookie = new Cookie("username", username);
        cookie.setPath(request.getContextPath());
        if(remember != null){
            //如果选择了记住用户名,则设置Cookie的有效期为一个不为0的整数
            cookie.setMaxAge(Integer.MAX_VALUE);
        }else{
            //否则则把有效期设置为0,即命令浏览器删除该cookie
            cookie.setMaxAge(0);
        }
        //将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时就会把cookie也输出到客户端服务器
        response.addCookie(cookie);
        out.write("登录成功!");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

 

结果:

输入用户名和密码,选择记住用户名,然后点击登录。

 

页面显示登录成功!

 

重新打开浏览器,再次访问登录界面,会显示如图。

 

posted @ 2016-10-04 21:55  Chris_z  阅读(2902)  评论(0编辑  收藏  举报