`
- 浏览:
289681 次
- 性别:
- 来自:
江西
-
Request、Session、servletContext区别
就servlet规范本身,servlet可以再三个不同的作用域存储数据,分别是: Request对象、Session对象和getServletContext()方法返回的servletContext对象中保存。以下是本人对他们之间区别的分析:
1 首先从作用范围来说
Request 保存的键值仅在下一个request对象中可以得到。
Session 它是一个会话范围,相当于一个局部变量,从Session第一次创建知道关闭,数据都一直 保存,每一个客户都有一个Session,所以它可以被客户一直访问,只要Session没有关闭和超时即浏览器关闭。
servletContext 它代表了servlet环境的上下文,相当于一个全局变量,即只要某个web应用在启动中,这个对象就一直都有效的存在,所以它的范围是最大的,存储的数据可以被所有用户使用,只要服务器不关闭,数据就会一直都存在。
2 它们的优缺点:
request:
好处:用完就仍,不会导致资源占用的无限增长。
弊处:数据只能被下一个对象获取,所以在写程序时会因为无法共享数据导致每次要用都从数据库中取,多做操作,自然会对性能有一些影响。
session:
好处:是一个局部变量,可以保存用户的信息并直接取出,不用每次都去数据库抓,少做操作,极大的方便了程序的编写。
弊处:每个客户都有一个session,只能自己使用,不同session可能保存大量重复数据; 可能耗费大量服务器内存; 另外session构建在cookie和url重写的基础上,所以用session实现会话跟踪,会用掉一点点服务器带宽和客户端保持联络, 当然session越多,耗费的带宽越多,理论上也会对性能造成影响。 集群的session同步会是个问题。
servletContext:
好处:不用每次都去数据库抓,少做操作。 存储的数据所有客户都可以用。 可减少重复在内存中存储数据造成的开销。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java Web开发中,"四个范围"是指PageContext、Request、Session和Application这四个不同的作用域,它们分别代表了Web应用程序中数据存储的不同层级和生命周期。理解并熟练掌握这四个范围,对于编写高效且可维护的...
### pageContext-request-session-application的使用及区别 #### 一、概述 在Web开发中,`pageContext`, `request`, `session`, 和 `application` 是四个非常重要的内置对象,它们分别代表了不同作用域内的数据存储...
标题中的“访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象”指的是在Java Web开发中,如何操作四个重要的请求处理对象:HttpServletRequest(Request)、HttpSession(Session)、...
request、session和application是Servlet编程中三种重要的域对象,它们各自管理着特定范围的数据存储。本文将深入解析这三者的概念、特点以及它们之间的关系。 1. HttpServletRequest request对象: request对象...
博客地址:...存放数据指的是这三个对象在工程中setAttribute(),removeAttribute()的时候,我们的监听器就会知道,然后在对应的方法中执行相应的操作。
Request、Session 和 Application 作用域的区别: * Request 作用域是指在当前请求中有效的信息共享范围 * Session 作用域是指在当前会话中有效的信息共享范围 * Application 作用域是指在所有应用程序中有效的信息...
### Struts2 访问 Request、Session 和 Application 作用域详解 #### 一、引言 Struts2 是一个基于 Java 的开源 Web 开发框架,它继承了 Struts1 的优秀特性并进行了改进,提供了更加灵活和强大的功能。在 Struts2...
快速认清pageContext,request,session,application/ServletContext的区别。 区别1:生命周期 区别2:共享范围 区别3:适合存储什么样的数据
在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...
在Struts2中,访问Web资源,如application、session和request,是常见的操作,这有助于实现数据共享和传递。本示例代码将帮助开发者更好地理解和运用这些功能。 一、Application域对象 Application域对象在所有用户...
通过 `request.getSession()` 方法创建一个新的 Session,如果已有 Session,则返回该 Session。如果 `true` 作为参数传递(如 `request.getSession(true)`),则在不存在 Session 时会新建一个。 2. **存储数据**:...
然后,你可以通过`getSessionById()`方法传入Session ID和ServletContext来获取对应的Session。 总的来说,Java Web中的Session监听器允许我们在Session生命周期的关键时刻执行自定义操作,而根据Session ID获取...
在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...
HttpSession session = request.getSession(); if (session != null) { return session.getServletContext(); } } return null; } } ``` #### 如何在Filter中设置Request 为了能够在普通的Java类中获取到`...
3.4 Session与Request应用区别 Request对象仅用于单次请求,而Session在整个会话期间有效,可以跨多个请求存储数据。 3.5 Session的生命周期 默认情况下,Session在用户一段时间内无活动后自动失效,这个时间间隔...
Session对象的创建是在程序中首次调用`request.getSession()`时触发,如果返回的Session是新创建的,可以通过`isNew()`方法验证。而Session的销毁有两种情况:一是超过默认的30分钟无活动,二是通过调用`session....
本课后习题主要关注以下几个关键知识点:Application、Session、页面生命周期、请求转发与重定向的区别,以及如何模拟像淘宝这样的电子商务平台的功能。让我们逐一深入探讨。 1. Application(应用上下文) ...
HttpSession session = request.getSession(); // session.setAttribute("username",username); session.setAttribute("user",user); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response....
作为Servlet的三大域对象之一(request、session、application/ServletContext),`HttpSession`提供了多种方法,如设置和获取属性、检查会话是否有效、以及销毁会话等。开发者可以通过`setAttribute()`和`...
sessionFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); } } ``` 5. **测试验证**: 创建一个简单的Controller,检查session数据是否能在不同的服务器实例间共享。 **优点与...