- 浏览: 880987 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
今天主要学习了Session,跟张老师学习了使用url重写实现Session跟踪以及Session的持久化,张老师不光只讲基础知识,今天学的使用url重写实现Session跟踪还有以前学习防止表单重复提交,都是在实际项目中要用到的,提前学习,加深基础知识的理解,又为以后项目的学习打好基础。
使用url重写实现Session跟踪
这是在浏览器不支持Cookie的情况下,servlet引入的一种补充的会话机制。当用户发出下一次请求时,如果请求消息中没有包含Cookie头字段,Servlet引擎则认为客户端不支持Cookie,他将依据请求url参数中的会话标识号来实施会话跟踪。这种方式要求响应消息中出现的超链接地址后面附带会话标识号参数,用户也必须通过超链接来提交后续的访问请求。
这种技术成为url重写,tomcat发送给客户端的会话标识号的Cookie名称为JSESSIONID。url重写就是将JSESSIONID关键字作为参数名和将会话标识号作为参数附加到URL后面。如果浏览器不支持Cookie或者关闭Cookie,就必须对所有可能被客户端访问的请求路径进行URL重写,如超链接,form表单的action属性和重定向的URL
HttpServletResponse接口定义了两个用于URL重写的方法:
encodeURL方法,用于超链接和form表单的action属性中设置的URL进行重写
encodeRedirectURL 方法 用于对传递给HttpServletResponse.sendRedirect方法的URL进行重写
他们根据请求消息中是否含有Cookie头字段来决定是否进行url重写。把URL作为参数传递给这两个方法,他们就能完成url重写,在url后面添加jsessionid参数及其值。可以关闭浏览器的Cookie,然后,进行实验,在网页源文件中查看URL后面是否有jsessionid参数及其值。
Session的持久化
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用web服务器内存资源。
web服务器通常将那些暂时不活动但为超时的HttpSession对象转移到文件系统或数据库中保存,服务器要使用他们时再将他们从文件系统或数据库中装载入内存,这种技术称为Session的持久化。
将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中;将HttpSession对象从文件系统或数据库中装载如内存时,需要采用反序列化的方式,恢复HttpSession对象中的每个属性对象。所以存储在HttpSession对象中的每个属性对象必须实现Serializable接口。
Session的持久化的作用:
1.提高服务器内存的利用率,保证那些暂停活动的客户端在会话超时之前继续原来的会话
2,在多台web服务器协同对外提供服务的集群系统中,使用Session的持久化技术,某台服务器可以将其中发生改变的Session对象复制给其他服务器。保证了在某台服务器停止工作后可以由其他服务器来接替它与客户端的会话
3,在一个web应用程序重启时,服务器也会持久化该应用程序中所有HttpSession对象,保证客户端的会话活动仍可以继续。
Tomcat使用Session Manager 类来管理Session的持久化,他提供了两个SessionManager类
org.apache.catalina.session.StandardManager
org.apache.catalina.session.PersistentManager
StandardManager是tomcat默认使用的,在web应用程序关闭时,对内存中的所有HttpSession对象进行持久化,把他们保存到文件系统中。默认的存储文件为
<tomcat 安装目录>\work\Catalina\<主机名>\<应用程序名>\sessions.ser
PersistentManager比StandardManager更为灵活,只要某个设备提供了实现org.apache.catalina.Store接口的驱动类,PersistentManager就可以将HttpSession对象保存到该设备
发表评论
-
UrlRewriteFilter--动态URL静态化
2011-04-25 13:38 2020版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Java框架数据库连接池比较(c3p0,dbcp和proxool)
2011-04-08 22:34 689现在常用的开源数据连 ... -
Java Proxool 源代码分析
2011-04-03 00:31 1081入口点:ProxoolFacade. 启动顺序: ... -
一个相当好的自定义标签---分页(二)
2011-04-02 22:23 926在上一个介绍里面主要讲到了分页标签的配置,逻辑处理,引用。 ... -
一个相当好的自定义标签---分页(一)
2011-04-02 22:21 1429发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的. ... -
恢复被CVS被Override and Update后的代码
2011-04-02 20:45 2003今天做了件相当愚蠢的事,把一个新的功能(之前未提交过代码)写完 ... -
MD5加密
2011-03-07 09:03 854因为用到所以就写了个加密的方法 如您发现有任何错误请Mailt ... -
抓取谷歌网页问题
2011-03-02 11:52 872当使用 URL url = new URL("htt ... -
readme
2011-03-01 15:57 7552011-3-1 /** * 循环创建父目录 * @ ... -
proxool配置文档(一)
2011-02-21 22:16 1092一、 所需要包 conmmons-loggin ... -
proxool配置文档(一)
2011-02-21 22:10 949一、 所需要包 conmmons-loggin ... -
总结一些常用功能源码
2011-02-18 09:32 903最近比较闲,总结一些开发中常用到的功能源码,把它挂出来;这样一 ... -
jboss + JMS 开发实例
2011-02-14 17:07 1781核心提示:异步进程通信是面向服务架构(SOA)一个重要的组 ... -
成为软件架构师
2011-02-01 21:48 908现在软件架构师满天飞 ... -
log4j中配置日志文件相对路径
2011-01-28 16:52 1146方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4 ... -
HttpClient|HttpClient请求详解
2011-01-28 12:50 1131HttpClient 是 Apache Jakarta Com ... -
Log4J通用配置|注意问题 笔记
2011-01-28 12:46 1114关于日志的等级 那些去 百度就知道了! 这几天 要搭个新框架 ... -
JAVA WEB学习笔记(一)-Cookie和Session专题
2011-01-27 12:46 1072一、cookie机制和session机制的区别******** ... -
深入 理解 Statement 和 PreparedStatement
2011-01-26 22:05 1057一、使用Statement而不是PreparedState ... -
培析J2EE分层结构
2011-01-20 22:56 923http://hi.baidu.com/gabe2008/bl ...
相关推荐
如果客户端不支持 Cookie,Servlet 容器可以通过重写 URL 来实现 Session 的跟踪。 三、Session 的管理 当一个 Session 开始时,Servlet 容器会创建一个 HttpSession 对象。在某些情况下,把这些 HttpSession 对象...
以上就是使用`SessionListener`、持久化`Session`和`Springmvc拦截器`实现单点登录的基本原理和实现步骤。通过这样的设计,可以有效地提升用户体验,同时确保系统的安全性。在实际项目中,还需要根据具体需求进行...
每个session都有一个唯一的ID,这个ID通过cookie或者URL重写等方式发送给客户端。客户端在后续的请求中携带此ID,服务器据此识别出对应的session。session在默认情况下会在客户端一段时间无活动后自动失效。 3. ...
1. **参数控制**:WebLogic Server提供了一系列参数来控制其`HttpSession`的实现方式,包括是否使用Cookie、URL重写、Session的持久化设置、Session的有效期设置以及Cookie的相关配置等。 2. **持久化设置**:通常...
注意,虽然Memcached提供了一种快速的session存储解决方案,但也要考虑其局限性,如数据持久化、安全性等问题。在实际应用中,可能需要结合其他技术,如Redis或数据库,以提供更全面的解决方案。
4. **表单数据持久化**:对于多步骤的表单,可以将用户的输入暂存于Session中,方便用户返回上一步进行修改。 #### 五、Session的生命周期 Session的生命周期通常包括以下几个阶段: 1. **创建**:当用户第一次...
- 为了提高性能和扩展性,大型应用往往不直接存储大量数据在Session中,而是用Session作为用户标识,将购物车数据持久化到数据库或其他缓存系统。 在“SessionCart”这个文件中,很可能包含了实现上述功能的Servlet...
虽然这个系统没有使用数据库进行持久化存储,但仍然可以展示基本的添加、删除商品以及计算总价等核心功能。 【主要知识点】 1. **JSP与Servlet**: JSP是动态网页技术,用于创建视图层,而Servlet是Java Web开发...
通过创建和管理session,开发者可以实现用户状态的持久化,例如购物车功能。 ### 7. Filter Servlet Filter允许在请求到达Servlet之前拦截和修改它。开发者可以使用`Filter`接口和`FilterChain`类实现过滤器,用于...
3. 为了持久化用户登录状态,服务器还可以创建一个包含Session ID的Cookie(默认名为JSESSIONID),并将其设置为浏览器,这样每次请求时,浏览器都会自动携带这个Cookie。 4. 用户再次访问其他受保护的页面时,...
- 使用URL重写,即将SessionID附加到URL上,不依赖Cookie。 - 使用Local Storage或Session Storage(HTML5引入),存储在客户端,适用于单页应用。 - 利用数据库或分布式缓存(如Redis)存储用户状态,适用于大型...
在IT行业中,尤其是在Web应用程序开发领域...但是,也要注意Redis的数据持久化和安全性,防止因服务器故障导致Session丢失。在大型分布式系统中,合理地管理和共享Session是保持用户体验一致性和系统稳定性的重要环节。
它的优势在于序列化和反序列化速度极快,内存占用少,非常适合在网络之间或者持久化到内存中存储数据。在Tomcat Session共享中,Kryo可以将Session对象转换为字节数组,然后在各个节点间传递。 接着,配置Tomcat ...
4. Session和Cookie:Session用于跟踪用户的会话状态,而Cookie可以持久化用户数据在客户端,两者在Web开发中用于实现用户登录状态的保持。 5. URL映射:通过在Servlet的web.xml配置中,或者使用@WebServlet注解,...
8. **Session和Cookie**:Servlet API提供了对HTTP Session和Cookie的支持,用于在客户端和服务器之间持久化数据。Session用于存储用户会话信息,Cookie常用来实现用户跟踪和个性化设置。 9. **Filter链**:通过`...
如果需要更复杂的功能,如session管理、过滤器等,就需要使用Servlet容器。 在实际项目中,我们通常不会从零开始编写整个HTTP服务器和Servlet引擎,而是选择已有的成熟框架,如Spring Boot,它提供了内置的Tomcat...
7. **存储聊天记录**:为了保存历史聊天记录,可以使用数据库或其他持久化存储方案。Servlet接收到新消息后,可以将其添加到数据库中,以便后续查询和展示。 8. **前端界面**:虽然这里主要讨论的是后端的Servlet...
订单信息同样需要持久化到数据库中。 5. 订单状态跟踪:系统应能显示订单的状态,如待支付、已支付、正在处理、已完成等。Servlet会监控这些状态变化,并更新前端展示。 6. 支付集成:如果系统支持在线支付,还...