关于Session和Cookie简单实例
2016-03-05 19:41
441 查看
关于Session和Cookie 这里就不细说了,直接上代码说明网站中的"记住我"checkbox的应用
第一个Servlet
1 正常情况下浏览器cookie是开启的,但是万一被禁用这里暂时使用了url重写 的方式解决,当然还有其它的方式。
2 个人测试的时候(火狐)即使禁用了cookie但还是可以正常访问,后来通过 firebug发现,cookie选项上选择禁用localhost的cookie就可以了。
3 这里关于cookie的配置,api就可以了都是有的而且解释很清楚。
本文出自 “探究web框架” 博客,请务必保留此出处http://itfei.blog.51cto.com/5513589/1747906
第一个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/1747906
相关文章推荐
- 个人项目四则运算生成程序进展——第二周
- Java集合Map接口与Map.Entry学习
- poj1061 扩展欧几里得
- 上机题目(初级)- 键盘控制小球(Java)
- YUV数据格式
- 二柱子的第一次入坑
- 阅读计划
- Linux内核分析第二周学习笔记
- mysql开放远程连接
- Java—面向对象—权限修饰符及思维导图
- 二叉树的反转,递归实现和非递归实现。
- 关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
- 编译原理--概论
- LINUX内核分析第二周学习总结——操作系统是如何工作的
- python安装mysqldb
- 【模板】(未完成)AVL
- 前端面试内容汇总
- dispatch_source
- 深度学习入门学习:Multi-view Face Detection Using Deep Convolutional Neural Networks
- Android系统镜像改造指南