cookie 是保留在客户端的,session是保存在服务器端的。两者不存在关联关系,为什么不能用session。
解决方案 »
- 从系统中导入一个zip包
- 如何用java抓取slip包??
- struts2的<s:token>标签问题
- 如何根据项目文件查看项目的开发工具和版本?
- 我对面向对象编程思想简单的理解
- 请问,启动tomcat后,用IE打开http://localhost:8080/JavaWebTest/后,出现404错误。
- 对web中应用j2ee的理解
- weblogic问题
- struts开发者请留下MSN。
- Unconnected sockets not implemented 创建Socket失败
- html邮件中能否直接内嵌二进制图片文件
- 在win2003下的SQL Server for JDBC的不运行情况,急,在线等
http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。
为了实现session,必须有浏览器支持。浏览器可以用cookie存储session,这是最通用的做法。
但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。
好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空间中的,不保存在硬盘cookie中。
sessionid是作为一个临时cookie放在浏览器端的。session的具体信息放在服务器端。每次浏览器发出的请求,都会在http header里 带上 sessionid来标识自己。既然用Struts,顺便再把JSTL用上,下面一个非常有用的标签:清单 12. <c:url> 操作的语法
<c:url value="expression" context="expression"
var="name" scope="scope">
<c:param name="expression" value="expression"/>
...
</c:url>
URL 重写是由 <c:url> 操作自动执行的。如果 JSP 容器检测到一个存储用户当前会话标识的 cookie,那么就不必进行重写。但是,如果不存在这样的 cookie,那么 <c:url> 生成的所有 URL 都会被重写以编码会话标识。注:如果在随后的请求中存在适当的 cookie,那么 <c:url> 将停止重写 URL 以包含该标识。
参考:http://www-900.ibm.com/developerWorks/cn/java/j-jstl0318/index.shtml
1 Cookies
2 URL Rewriting