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="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; } } } } }
时间: 2024-10-05 01:59:34