关于Session和Cookie简单实例
2016-03-04 23:25
309 查看
关于Session和Cookie 这里就不细说了,直接上代码说明网站中的"记住我"checkbox的应用
第一个Servlet
1 正常情况下浏览器cookie是开启的,但是万一被禁用这里暂时使用了url重写 的方式解决,当然还有其它的方式。
2 个人测试的时候(火狐)即使禁用了cookie但还是可以正常访问,后来通过 firebug发现,cookie选项上选择禁用localhost的cookie就可以了。
3 这里关于cookie的配置,api就可以了都是有的而且解释很清楚。
本文出自 “探究web框架” 博客,请务必保留此出处http://itfei.blog.51cto.com/5513589/1747744
第一个Servlet
public class cookieServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); String name = (String) request.getSession().getAttribute("userName"); if(name!=null&&!name.trim().equals("")){ out.print("欢迎你"+name); }else{ out.print("请登陆"); } System.out.println(request.getSession().getId()+"------get请求"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String checked = request.getParameter("me"); if(checked!=null){ Cookie ck = new Cookie("JSESSIONID",request.getSession().getId()) ck.setMaxAge(60*30); ck.setPath("/"); response.addCookie(ck); } String userName = request.getParameter("userName"); if(userName!=null&&!userName.trim().equals("")){ request.getSession().setAttribute("userName", userName); } //doGet(request, response); //禁用cookie url重写 //form 请求 但一共是两次请求 dopost中的session和doget中的session不是同 一个了已经 //response.sendRedirect(request.getContextPath()+"/cookieServlet"); System.out.println(request.getSession().getId()+"------post请求"); //url 重写 String url = response.encodeRedirectURL(request.getContextPath()+"/cookie Servlet"); response.sendRedirect(url); } }第二个Servlet
package com.test.cookie; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestCookieServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String name = (String) request.getSession().getAttribute("userName"); if(name!=null&&!name.trim().equals("")){ out.print("你是"+name+"-----TestCookieServlet"); }else{ out.print("你是没有名字-----TestCookieServlet"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); } }一个jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <!-- <form action="cookieServlet" method="post"> --> <!--url重写 --> <form action="<%=response.encodeURL("cookieServlet")%>" method="post"> <input type="text" name="userName"><br/> <input type="checkbox" name="me" value="1">记住我 <input type="submit"> </form> <br/> <!-- <a href="cookieServlet"/>GOGO</a> --> <!-- url 重写 --> <a href="<%=response.encodeURL("cookieServlet")%>">GOGO</a> </body> </html>说明
1 正常情况下浏览器cookie是开启的,但是万一被禁用这里暂时使用了url重写 的方式解决,当然还有其它的方式。
2 个人测试的时候(火狐)即使禁用了cookie但还是可以正常访问,后来通过 firebug发现,cookie选项上选择禁用localhost的cookie就可以了。
3 这里关于cookie的配置,api就可以了都是有的而且解释很清楚。
本文出自 “探究web框架” 博客,请务必保留此出处http://itfei.blog.51cto.com/5513589/1747744
相关文章推荐
- eclipse优化
- 深入Android的消息机制源码详解~Handler,MessageQueue与Looper关系
- 将DHT11移植到Linux系统上续
- 编译安卓2.3错误遇见的错误及解决办法
- Eclipse使用技巧
- inline-block
- System Permissions --1.4
- 班委选举(dfs)
- Scale和Resolution的含义及转换算法
- android开发JNI之高级篇
- HDU3966(树链剖分)
- stl里面的空间适配器
- AngularJS 中 Controller 之间的通信
- 华为绩效管理:这样减员、增效、加薪,不服不行!
- 2016/03/04 codes
- 自我介绍
- 在Python中使用正则表达式进行查找
- Apk反编译工具之Apktool
- 87. Scramble String
- C/C++调用java---JNI常用函数