首页 > 代码库 > 【Head First Servlets and JSP】笔记13:session & cookie
【Head First Servlets and JSP】笔记13:session & cookie
session的接口
杀死会话
cookie的性质
cookie的接口
再总结——cookie、session的前世今生
简单的定制cookie示例
1、session的接口,配合一些代码来理解。
2、杀死会话——杀死的含义是使session无效化(在JVM中清除??)。
- 立刻杀死,已知方式有两种,
- 在DD中设定“默认期限”
- 在代码中对具体session设定“期限”
3、cookie的特性
4、cookie的接口
从客户请求得到cookie——稍微现代点的方法是这样的:
Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie cookie : cookies){ if(cookie.getName().equals("JSESSIONID")){ System.out.println("JSESSIONID="+cookie.getValue()); } cookie.setMaxAge(0); response.addCookie(cookie); } }
5、 再总结——cookie、session的前世今生
cookie之前世今生。
cookie的产生:客户端向服务器发送request,服务器返回response并set-cookie
就这样客户端中就存在一个对应cookie了,
cookie的后续:之后客户端每次向服务器发送request,都会携带这个cookie
本质上,cookie就是客户端和服务端交换一小段信息。
session的前世今生
session的产生:通常是伴随着一个getSession语句 //这里有误
session的后续:
- 我们用session来管理会话、存储信息
- 我们必须通过JSESSIONID来查找访问对应的session
- 我们必须在适当的时候杀死session
本质上,session就是存在于服务端JVM中的一个对象。
6、 简单的定制cookie示例
通常,我的习惯是先写一个hello程序跑通一下环境。
<!DOCTYPE html><html><head> <meta charset="US-ASCII"> <title>Home Page</title></head><body><form action="CookieTest.do" method="post"> Username: <input type="text" name="username"> <input type="submit" value="submit"></form></body></html>
<?xml version="1.0" encoding="ISO-8859-1" ?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>CookieTest</servlet-name> <servlet-class>com.example.web.CookieTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieTest</servlet-name> <url-pattern>/CookieTest.do</url-pattern> </servlet-mapping></web-app>
package com.example.web;import javax.servlet.ServletException;import javax.servlet.http.*;import java.io.IOException;public class CookieTest extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.getWriter().println("hello"); }}
成功跑出来之后开始写代码~
package com.example.web;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.*;import java.io.IOException;public class CookieTest extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); String name = req.getParameter("username"); Cookie cookie = new Cookie("username", name); cookie.setMaxAge(30*60); // 如果不设置的话,cookies的生存期限默认为“关闭浏览器为止” resp.addCookie(cookie); RequestDispatcher view = req.getRequestDispatcher("result.jsp"); view.forward(req, resp); }}
result.jsp
<html> <body> <a href="http://www.mamicode.com/checkcookie.do">click here</a> </body></html>
checkcookie.do
<?xml version="1.0" encoding="ISO-8859-1" ?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>CookieTest</servlet-name> <servlet-class>com.example.web.CookieTest</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieTest</servlet-name> <url-pattern>/CookieTest.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>checkcookie</servlet-name> <servlet-class>com.example.web.CheckCookie</servlet-class> </servlet> <servlet-mapping> <servlet-name>checkcookie</servlet-name> <url-pattern>/checkcookie.do</url-pattern> </servlet-mapping></web-app>
package com.example.web;import javax.servlet.ServletException;import javax.servlet.http.*;import java.io.IOException;import java.io.PrintWriter;public class CheckCookie extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter pw = resp.getWriter(); Cookie[] cookies = req.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("username")) { pw.println("Hello " + cookie.getValue()); break; } } } }}
【Head First Servlets and JSP】笔记13:session & cookie
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。