[html]  view plain  copy
  1. <pre name="code" class="html">WEB-INF下index.jsp:  
  2.   
  3. <%@page pageEncoding="utf-8"%>  
  4. <!DOCTYPE html>  
  5. <html>  
  6.     <head>  
  7.         <meta charset="utf-8"/>  
  8.         <title>首页</title>  
  9.     </head>  
  10.     <body>  
  11.         <!-- 在登陆时将用户名记住(cookie),在首页可以从cookie中取到它并替换XXX -->  
  12.         <!-- 1.可以写jsp脚本,通过request获取所有的cookie,然后遍历找到名为userName的  
  13.                cookie,将其值写入到此处.  
  14.              2.可以通过EL表达式获取cookie中.   
  15.                           语法:cookie.key.value -->  
  16.         <h1>欢迎你,${cookie.userName.value }</h1>  
  17.         <h2>${cookie.city.value }</h2>  
  18.     </body>  
  19. </html>  


[html]  view plain  copy
  1. WEB-INF下的login.jsp:  
[html]  view plain  copy
  1. <%@page pageEncoding="utf-8"%>  
  2. <!DOCTYPE html>  
  3. <html>  
  4. <head>  
  5. <meta charset="utf-8" />  
  6. <title>登陆</title>  
  7. </head>  
  8. <body>  
  9.     <form action="login.do" method="post">  
  10.         <p>  
  11.             账号:<input type="text" name="userName"  
  12.                 value="${cookie.userName.value }" />  
  13.         </p>  
  14.         <p>  
  15.             密码:<input type="password" name="pwd" />  
  16.         </p>  
  17.         <p>  
  18.             记住我: <input type="checkbox" name="remember" value="yes"  
  19.                 ${cookie.userName!=null?"checked":"" } />  
  20.         </p>  
  21.         <p>  
  22.             <input type="submit" value="登陆" />  
  23.         </p>  
  24.     </form>  
  25. </body>  
  26. </html>  

工作中遇到了实现登录页面记住我的功能,自己不熟悉,


晚上回去总结页面获得cookie的方法有哪些,

后台程序:

[java]  view plain  copy
  1. package web;  
  2.   
  3. import java.io.IOException;  
  4. import java.net.URLDecoder;  
  5. import java.net.URLEncoder;  
  6.   
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.http.Cookie;  
  9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12. public class ActionServlet extends HttpServlet {  
  13.     /* 
  14.      * 打开登陆页面:/cookieCase/login/toLogin.do 
  15.      * 登陆:/cookieCase/login/login.do 
  16.      * 打开首页:/cookieCase/main/toIndex.do 
  17.      * 登录页:/WEB-INF/login.jsp 
  18.      * 首页:/WEB-INF/index.jsp 
  19.      *  
  20.      */  
  21.     @Override  
  22.     protected void service(HttpServletRequest req, HttpServletResponse res)  
  23.             throws ServletException, IOException {  
  24.         req.setCharacterEncoding("utf-8");  
  25.         res.setContentType("text/html;charset=utf-8");//设置编码  
  26.         String uri = req.getRequestURI();  
  27.         uri = uri.replace(req.getContextPath(), "");//截取uri,项目名称替换为空  
  28.         if(uri.equals("/login/toLogin.do")){  
  29.             //打开登陆页面  
  30.             toLogin(req,res);  
  31.         }else if(uri.equals("/login/login.do")){  
  32.             //登陆  
  33.             login(req,res);  
  34.         }else if(uri.equals("/main/toIndex.do")){  
  35.             //进入首页  
  36.             toIndex(req,res);  
  37.         }  
  38.                   
  39.     }  
  40.     /**打开登录页面*/  
  41.     protected void toLogin(HttpServletRequest req, HttpServletResponse res)  
  42.             throws ServletException, IOException {  
  43.         String url ="../WEB-INF/login.jsp";  
  44.         req.getRequestDispatcher(url).forward(req, res);  
  45.           
  46.     }  
  47.     /**登陆*/  
  48.     protected void login(HttpServletRequest req, HttpServletResponse res)  
  49.             throws ServletException, IOException {  
  50.         String userName = req.getParameter("userName");  
  51.         String rmb = req.getParameter("remember");  
  52.         //验证:假设验证通过  
  53.         //记住我  
  54.         if("yes".equals(rmb)){  
  55.             //使用cookie记录账号和记住我,便于后续请求中的一些特殊业务  
  56.             //首页显示账号  
  57.             //再次打开登陆页时有默认账号;  
  58.             //默认只对当前路径下的资源有效:  
  59.             //cookieCase/login/  
  60.             //可以手动设置其生效的路径  
  61.             Cookie c = new Cookie("userName",userName);  
  62.             c.setPath(req.getContextPath());  
  63.             /* 
  64.              * 默认情况下,cookie存到浏览器内容中,浏览器关闭时则cookie消失, 
  65.              * 若希望浏览器关闭时cookie不消失,需要给这个cookie设置过期时间,那么cookie在关闭 
  66.              * 浏览器后还能存活这么长时间 
  67.              * cookie.setMaxAge();单位为秒 
  68.              */  
  69.             c.setMaxAge(3600);  
  70.             //将此cookie发送给客户端保存  
  71.             res.addCookie(c);  
  72.             //记住我可以通过userName判断出来,不用特意的记录它  
  73.               
  74.         }  
[java]  view plain  copy
  1. <span style="white-space:pre">        Cookie c2 = new Cookie("city","BeiJing");  
  2. <span style="white-space:pre">        </span>c2.setPath(req.getContextPath());  
  3. <span style="white-space:pre">        </span>c2.setMaxAge(3600);  
  4. <span style="white-space:pre">        </span>res.addCookie(c2);  
  5. <span style="white-space:pre">        </span>/* 
  6. <span style="white-space:pre">        </span> * 如果输入中文,cookie需要编码解码 
  7. <span style="white-space:pre">        </span> * 编码:URLEncoder.encode() 
  8. <span style="white-space:pre">        </span> */  
  9. <span style="white-space:pre">        </span>Cookie c3 = new Cookie("home",URLEncoder.encode("上海""utf-8"));  
  10. <span style="white-space:pre">        </span>c3.setPath(req.getContextPath());  
  11. <span style="white-space:pre">        </span>c3.setMaxAge(3600);  
  12. <span style="white-space:pre">        </span>res.addCookie(c3);  
  13. <span style="white-space:pre">        </span>/* 
  14. <span style="white-space:pre">        </span> * 重定向到首页 
  15. <span style="white-space:pre">        </span> * 当前:/JSP03/login/login.do 
  16. <span style="white-space:pre">        </span> * 目标:/JSP03/main/toIndex.do 
  17. <span style="white-space:pre">        </span> */  
  18. <span style="white-space:pre">        </span>res.sendRedirect("../main/toIndex.do");</span>  
[java]  view plain  copy
  1. <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">    }</span>  
[java]  view plain  copy
  1. /**进入首页*/  
  2. protected void toIndex(HttpServletRequest req, HttpServletResponse res)  
  3.         throws ServletException, IOException {  
  4.     //获取浏览器传递过来的cookie,并打印出他们的内容  
  5.     Cookie[] cs = req.getCookies();  
  6.     for(Cookie c:cs){  
  7.         //修改cookie  
  8.         if(c.getName().equals("city")){  
  9.             c.setValue("Shenzhen");//通过cookie.setValue()修改cookie中的内容  
  10.             res.addCookie(c);  
  11.         }  
  12.         if(c.getName().equals("home")){  
  13.             //解码:URLDecoder.decode()  
  14.             System.out.println(URLDecoder.decode(c.getValue(),"utf-8"));  
  15.         }else{  
  16.             System.out.println(c.getName()+":"+c.getValue());  
  17.         }  
  18.     }  
  19.     String url ="../WEB-INF/index.jsp";  
  20.     req.getRequestDispatcher(url).forward(req, res);//转发  
  21. }  


org.springframework.web.util.WebUtils

该方法需要引入上述类

1.Cookie cookie = WebUtils.getCookie(request,"参数名");

2.Cookie[] cookies = request.getCookies();

3.页面可以直接获得cookie的value;

下面写例子记忆一下,我用的是servlet

配置文件

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  3.   <display-name>cookieCase</display-name>  
  4.   <welcome-file-list>  
  5.     <welcome-file>index.html</welcome-file>  
  6.     <welcome-file>index.htm</welcome-file>  
  7.     <welcome-file>index.jsp</welcome-file>  
  8.     <welcome-file>default.html</welcome-file>  
  9.     <welcome-file>default.htm</welcome-file>  
  10.     <welcome-file>default.jsp</welcome-file>  
  11.   </welcome-file-list>  
  12.     
  13.   <servlet>  
  14.     <servlet-name>action</servlet-name>  
  15.     <servlet-class>web.ActionServlet</servlet-class>  
  16.   </servlet>  
  17.   <servlet-mapping>  
  18.     <servlet-name>action</servlet-name>  
  19.     <url-pattern>*.do</url-pattern>  
  20.   </servlet-mapping>  
  21.   
  22.   
  23. </web-app>