当前位置:文档之家› jsp中Session的有效期设置、监控怎么实现

jsp中Session的有效期设置、监控怎么实现

jsp中Session的有效期设置、监控怎么实现
jsp中Session的有效期设置、监控怎么实现

jsp中Session的有效期设置、监控怎么实现

* 在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。

* Session的创建(代表会话周期的开始):第一次调用request.getSession()方法时,会创建一个se ssion对象。

* Session的销毁(代表会话周期的结束):在某个请求周期内调用了Session.invalidate()方法,此请求周期结束后,session被销毁;或者是session超时后自动销毁。

* 对于JSP,如果指定了<%@ page session="false"%>,则在JSP中无法直接访问内置的session 变量,同时也不会主动创建session,因为此时JSP未自动执行request.getSession()操作获取sessio n。

* 在session对象刚创建的第一个请求周期内,调用session.isNew()方法将得到true。

1.有效期设置

* 可以在web.xml文件中配置session默认的超时时间(分钟): 10 也可以调用session. setMaxInactiveInterv al()方法设置session超时时间(分钟)

2.监控

* 通过SessionListenr可以监听session的创建和销毁,步骤:

1.写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCr eated()、sessionDestroyed()方法

2.在web.xml中配置SessionListener:

MySessionListener类全名

* 当session 被创建和销毁时,容器会分别调用SessionListener的sessionCreated()方法和sessio nDestroyed()方法,这两个方法中传入了一个参数对象HttpSessionEvent,可以通过此对象的getSes sion()方法获取session对象。

应用示例:在线人数统计

1import java.util.HashSet;

2

3import javax.servlet.ServletContext;

4

5import javax.servlet.http.HttpSession;

6

7import javax.servlet.http.HttpSessionEvent;

8

9import javax.servlet.http.HttpSessionListener;

10

11public class MySessionListener implements HttpSessionListener {

12

13public void sessionCreated(HttpSessionEvent event) {

14

15HttpSession session = event.getSession();

16

17ServletContext application = session.getServletContext();

18

19// 在application范围由一个HashSet集保存所有的session

20

21HashSet sessions = (HashSet) application.getAttribute("sessions");

22

23if(sessions == null) {

24

25sessions = new HashSet();

26

27application.setAttribute("sessions", sessions);

28

29}

30

31// 新创建的session均添加到HashSet集中

32

33sessions.add(session);

34

35// 可以在别处从application范围中取出sessions集合

36

37// 然后使用sessions.size()获取当前活动的session数,即为“在线人数” 38

39}

40

41public void sessionDestroyed(HttpSessionEvent event) {

42

43HttpSession session = event.getSession();

44

45ServletContext application = session.getServletContext();

46

47HashSet sessions = (HashSet) application.getAttribute("sessions"); 48

49// 销毁的session均从HashSet集中移除

50

51sessions.remove(session);

52

53} 54 55} 56

深入理解ServletJSP之Cookie和Session原理

由于H T T P协议的无状态特征,W e b应用中经常使用C o o k i e和S e s s i o n来保存用户在与系统交互过程中的状态数据。下面通过分析H T T P协议对C o o k i e和S e s s i o n的工作原理加以了解。 一、C o o k i e C o o k i e的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的C o o k i e通过请求信息带到服务器端。 下面的S e r v l e t展示了C o o k i e的功能。 ......... p u b l i c v o i d d o G e t(H t t p S e r v l e t R e q u e s t r e q u e s t,H t t p S e r v l e t R e s p o n s e r e s p o n s e) t h r o w s S e r v l e t E x c e p t i o n,I O E x c e p t i o n{ r e s p o n s e.s e t C o n t e n t T y p e("t e x t/h t m l"); P r i n t W r i t e r o u t=r e s p o n s e.g e t W r i t e r(); S t r i n g o p t i o n=r e q u e s t.g e t P a r a m e t e r("o p t i o n"); i f("s h o w".e q u a l s(o p t i o n)){ //获得请求信息中的C o o k i e数据 C o o k i e[]c o o k i e s=r e q u e s t.g e t C o o k i e s(); i f(c o o k i e s!=n u l l){ //找出名称(键)为“c o o l”的C o o k i e f o r(i n t i=0;i"+c o o k i e s[i].g e t N a m e()+":" +c o o k i e s[i].g e t V a l u e()+""); } } } }e l s e i f("a d d".e q u a l s(o p t i o n)){ //创建C o o k i e对象 C o o k i e c o o k i e=n e w C o o k i e("c o o l","y e a h!"); //设置生命周期以秒为单位 c o o k i e.s e t M a x A g e(20); //添加C o o k i e r e s p o n s e.a d d C o o k i e(c o o k i e); }

asp中设置session过期时间方法总结

asp中默认session过期时间为20分钟,很多情况下不够,今天有客户要求很多就要重新登录了,所以准备了这篇文章,方便需要的朋友。 如果程序中没有设置session的过期时间,那么session过期时间就会按照IIS设置的过期时间来执行,IIS中session默认过期时间为20分钟,IIS中session时间可以更改时间设置要放在前面 例如 Session.Timeout=30 'SEESION有效时间为30分钟 Session("ID")=Rs("id") Session("Name")=Rs("Name") Session("Pass")=Rs("Pass" 利用Session.Timeout 属性设置超时时限 对于一个登录到ASP 应用程序的用户,如果用户在系统默认的时间内未进行其它任何操作,当设置的时间一到便自动撤销这个用户的Session,这样就可以防止系统的资源被浪费。Session 对象的TimeOut 属性可以用来设置“过期时间”,已分钟为单位,其设置格式为: 代码如下: Session.TimeOut=MaxTime 实例代码:(5.asp)页面,本实例说明如何控制会话的结束。 代码如下: <%@ language="vbscript" %> <% session.timeout=60 %> 控制会话的结束时间 <% who = Session.SessionID CurrentPage=Request.ServerVariables("SCRIPT_NAME") Response.AppendTolog who & ":" & CurrentPage Response.write "

你的会话标识为:" & who & "" Response.write "你当前访问的页面路径为:" & CurrentPage & "" if Session("I")="" then session("i")=1 else session("i")=session("i")+1 end if

Session用法小结

https://www.doczj.com/doc/0e3807639.html, Session详解及Session莫名丢失的原因及解决办法 作者:YanJun 日期:2007-07-29 字体大小: 小中大 Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。 这个唯一的SessionID是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的SessionID自动附加在HTTP头信息中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给SessionID所对应的用户。试想,如果没有SessionID,当有两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。当然,SessionID还有很多其他的作用,我们会在后面提及到。 除了SessionID,在每个Session中还包含很多其他信息。但是对于编写ASP或https://www.doczj.com/doc/0e3807639.html,的程序与来说,最有用的还是可以通过访问ASP/https://www.doczj.com/doc/0e3807639.html,的内置Session对象,为每个用户存储各自的信息。例如我们想了解一下访问我们网站的用户浏览了几个页面,我们可能在用户可能访问到每个的页面中加入: <% If Session("PageViewed") = ""Then Session("PageViewed") = 1 Else Session("PageViewed") = Session("PageViewed") + 1 End If %> 通过以下这句话可以让用户得知自己浏览了几个页面:

在JSP编程中Application的使用方法详解

Jsp 调用Javeabean 命令UseBean 中有Scope 设置,一般有Application session page 等设置,Page就是每页重新产生uscbcan中的javabean新对象,一般情况是用这种,如果多个Jsp程序间为共享数据,可以使用session 而application的意思,该javabean将一直存在,与session相对用户来说,application 是相对应用程序的,一般来说,一个用户有一个session.并且随着用户离开而消失;而application则是一直存在,类似一个servlet程序,类似整个系统的"全局变量",而且只有一个实例。 MVC中控制功能 因此application这个特性,很适合用来做MVC中的控制功能,一般传统MVC是用servlet 做控制功能,V基本是Jsp页而,21就是中间件Javabean Z类。 但是随着Jsp功能的完善和推广,逐渐有替代servlet之趋势,我们在实践中更多使用的也是Jsp,有时为了省却麻烦的事情,就使用Jsp代替servlet.尤其是英控制功能。 实际上,这个控制功能是封装在一个Javabcan中,Jsp使用scope=application来调用这个Javabean,这样,具备控制功能的javabean就类似servlet常驻内存,并和后台各种中间件交互操作。 “首页”的展现 在实际应用中,我们经常有多个用户要同时访问一个页而,如首页,这个首页中有很多功能要运行,比如目录分类,首页程序要从数据库中读入树形数据并展开,输岀到首页,这个功能是封装在Javabean中的。 那么首页Jsp调用这个Javabean时,使用scope=application,再通过树形数据的缓冲算法,这样,多个用户同时访问首页时,首页JSp就无需每次启动Javabean然后再反复读取数据库了。无疑大大提髙速度。 所以如果你的首页Jsp访问量很髙,那么就应该在这方而多花点时间优化。 更多信息请查看IT技术专栏

Session对象失效的客户端解决方法

Session对象失效的客户端解决方法 魏莹李锋冯珊 问题的提出 ASP(Active Server Pages)技术的Session对象用于存储用户在对话期间的私有信息。当前用户的Session对象中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,因此在用ASP开发网络应用程序时,可以利用Session对象保存和跟踪用户的状态信息。 Session对象有一个十分重要的属性:Timeout,它用于设置在会话资源被释放前,会话对象所能保持非活动状态的时间(默认值为20分钟)。当Timeout属性设置的时间值耗尽后,会话资源将被释放。通过Timeout属性破坏Session对象,避免了Session对象在服务器中无限制地产生,保护了服务器资源。但是,在实际网络开发中,常常遇到由于Session对象失效,用户状态信息丢失而导致应用流程无法正常完成的问题。 虽然利用Timeout属性释放资源的策略是出于保护服务器的目的,但是Session对象不可预知的失效性,却成为开发应用程序的一个弊病。因而在实际应用程序的开发中,必须解决Session对象失效的问题。 传统的解决方法 现有的解决方法都是采用服务器端方法解决Session对象失效问题。典型的处理方法分为两大类:失效前的处理和失效后的处理。 失效前的处理是指在Session对象尚未失效之前,对变量进行转存等处理,做到防患于未然。典型的解决方法是在应用程序中设定一个定时器,在Session对象失效前5分钟触发定时器,然后重新设置Session对象的各个变量和对象。由于必须在服务器端实时维护该定时器,并且必须保证该段程序在整个会话过程中处于激活状态,所以采用这种方法增加了服务器的额外负载。 失效后的处理是指在Session对象失效后,立即提示用户进行处理。典型的解决方法是在Session对象失效后,在服务器端保存断点,并提示用户重新登录,继续完成工作。这种方法实现简单,但是往往因为断点的不可完全自动恢复性,以及重新登录过程的复杂性,而受到最终用户的抱怨和指责。 针对以上两类解决方案的缺陷,笔者在编程实践中结合Cookie对象的特性,采用Session 对象与Cookie对象在客户端联合存取会话级变量的方法,既避免了对服务器资源的额外需求,又解决了断点不可自动恢复的问题,而且还免去了重新登录的麻烦。 新的解决方法 Cookie对象是用来存储有关当前用户数据的小信息包,它可以在浏览器和Web服务器之间传递。在Web应用中,Cookie提供了一种用于跟踪、记录每个用户位置的机制。Cookie 最常见的用处之一,就是保存一个Web应用中最后一次被访问的网络页面的时间以及日期或被访问的网址。 通常,Cookie对象在客户端Windows系统目录下Cookies子目录中以文件形式存储。存储在Cookie对象中的信息数据能够被保存较长时间,所以,可以将会话级变量备份在Cookie 对象中,在Session对象失效后,通过检索并利用Cookie对象中的信息来自动恢复断点。Cookie对象具有如下几个属性: ●Expires:设定Cookie对象到期的日期; ●Domain:将Cookie对象的传送确定为仅由Domain属性确定的成员; ●Path:确定Cookie对象传送路径;

Java基础-关于session的详细解释

Java基础-关于session的详细解释 session, Java, 基础, 解释 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的 含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程,有时候也被称为一个transaction),然而有时候也可能仅仅是指一次连接,也有可能是指含义①,其中的差 别只能靠上下文来推断②。 然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了

电话通信才能开始,与此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了。“保持状态”则是指通信的一方能够把一系列的消息关联起来,使得消息之间可以互相依赖,比如一个服务员能够认出再次光临的老顾客并且记得上次这个顾客还欠店里一块钱。这一类的例子有“一个TCP s ession”或者“一个POP3 session”③。 而到了web服务器蓬勃发展的时代,session在web开发语境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”⑤。由于各种用于web开发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,session也被用来指代该语言的解决方案,比如经常把Java 里提供的javax.servlet.http.HttpSession简称为session⑥。 鉴于这种混乱已不可改变,本文中session一词的运用也会根据上下文有不同的含义,请大家注意分辨。 在本文中,使用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表达含义⑤,使用 具体的“HttpSession”来表达含义⑥

session使用方法

session使用方法 在PHP开发中对比起Cookie,session是存储在服务器端的会话,相对安全,并且不像Cookie 那样有存储长度限制,本文简单介绍session的使用。 由于Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改Session 内容。实际上在服务器端的Session 文件,PHP 自动修改session文件的权限,只保留了系统读和写权限,而且不能通过ftp 修改,所以安全得多。PHP China 开源社区门户k%W%e2C Y 对于Cookie 来说,假设我们要验证用户是否登陆,就必须在Cookie 中保存用户名和密码(可能是md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢?因为客户端Cookie 中的信息是有可能被修改的。假如你存储$admin 变量来表示用户是否登陆,$admin 为true 的时候表示登陆,为false 的时候表示未登录,在第一次通过验证后将$admin 等于true 存储在Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为true 的$admin 变量那不是就立即取的了管理权限么?非常的不安全。 而Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改session文件的内容,因此我们可以单纯存储一个$admin 变量来判断是否登陆,首次验证通过后设置$admin 值为true,以后判断该值是否为true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证Cookie 而传递密码的不安全性了(session验证只需要传递一次,假如你没有使用SSL 安全协议的话)。即使密码进行了md5 加密,也是很容易被截获的。 当然使用session还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。 session在php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改PHP.ini 的权限,默认session的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后我会介绍。 开始介绍如何创建session。非常简单,真的。 启动session会话,并创建一个$admin 变量: 如果你使用了Seesion,或者该PHP 文件要调用Session 变量,那么就必须在调用Session 之前启动它,使用session_start() 函数。其它都不需要你设置了,PHP自动完成session文件的创建。

jsp复习题

一、单选题 1. Servlet中,HttpServletResponse的(C )方法用来把一个Http请求重定向到另外的URL。 A. sendURL() B. redirectURL() C. sendRedirect() D. redirectResponse() 2. 一个servlet的生命周期不包括( D )方法。 A. init()方法 B. destroy()方法 C. service()方法 D. invalidate()方法 3. session对象的( A )方法用于设置会话的超时时间。 A. session.setMaxInactiveInterval(30); B. session.setMaxTime(30) ; C. session.getMaxInactiveInterval(); D. session.setAttribute(“time”,30) ; 4. 有一JSP页面,需要在页面中定义一个int型的Java全局变量myInt,定义的方法是( D )。 A. <% int myInt %> B. <%! int myInt !%> C. <%int myInt !%> D. <%! int myInt %> 5. 下面哪个不是JSP中和javabean相关的标记( B )。 A. B. C. D. 6. 在客户端浏览器的源代码中可以看到( B )。 A. JSP注释 B. HTML注释 C. JSP注释和HTML注释 D. JA V A注释 7. 以下哪种技术不属于动态网页技术( C )。 A. JSP B. CGI C. DHTML D. Perl 8. 在JSP中,只有一行代码:<%=’A’+’B’%>,运行将输出( C )。 A. A+B B. AB C. 131 D. 错误信息(表达式错误) 9. HttpServletRequest对象的( C )方法能够获取一个表单参数的值。 A. getQuaryString() B. getPathInfo() C. getParameter() D. getAttribute() 10. ( A )被称为一个会话。 A. 从访问者连接到服务器,到访问者关闭浏览器离开该服务器 B. 从服务器启动,到服务器关闭 C. 从访问者连接到服务器,到服务器关闭 D. 从服务器启动,到访问者关闭浏览器离开该服务器 11. 有聊天系统用servlet实现,用户发表言论时,需要对文字的敏感信息自动过滤,采用过滤器来实现,过滤的方法在( C )中实现。 A. init B. doPost C. doFilter D. doGet 12. 关于Filter,下面说法错误的是( D )。 A. 可以处理请求和响应 B. 创建时必须实现Filter接口 C. 必须在web.xml文件中进行配置才能生效 D. 如果没有配置初始化参数,创建Filter时可以不实现init()方法 13. 使用JavaScript语言中Document的( A )方法可以在页面上输出字符。 A. document.write() B. document.print() C. document.out() D. document.flush() 14. page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是( D )。 A. <%@ page %>作用于整个JSP页面 B. 可以在一个页面中使用多个<%@ page %>指令 C. 为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的

session过期时间设置word精品文档10页

在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户没有使用系统一定时间后,自动退出登录,销毁session。 具体设置很简单: 在主页面或者公共页面中加入: session.setMaxInactiveInterval(900); 参数900单位是秒,即在没有活动15分钟后,session将失效。 这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。 在一般系统中,也可能需要在session失效后做一些操作, (1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。 (2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了 那么如何在session失效后,进行一系列的操作呢? 这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序,就可以了。 监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法

自己可以继承这个类,然后分别实现。 sessionCreated指在session创建时执行的方法 sessionDestroyed指在session失效时执行的方法 给一个简单的例子: public class SessionListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent event) { HttpSession ses = event.getSession(); String id=ses.getId()+ses.getCreationTime(); https://www.doczj.com/doc/0e3807639.html,erMap.put(id, Boolean.TRUE); //添加用户 } public void sessionDestroyed(HttpSessionEvent event) { HttpSession ses = event.getSession(); String id=ses.getId()+ses.getCreationTime(); synchronized (this) { https://www.doczj.com/doc/0e3807639.html,ERNUM--; //用户数减一 https://www.doczj.com/doc/0e3807639.html,erMap.remove(id); //从用户组中移除掉,用户组为一个map } }

课题_Spring MVC中Session的正确用法之我见

Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性、可复用性与易集成性。优良的设计模式遍及各处,使得其框架虽然学习曲线陡峭,但一旦掌握则欲罢不能。初学者并不需要过多了解框架的实现原理,随便搜一下如何使用“基于注解的controller”就能很快上手,而一些书籍诸如“spring in action”也给上手提供了非常优良的选择。 网上的帖子多如牛毛,中文的快速上手,英文的深入浅出。这样看来,Spring的学习简直是一个轻松愉快的过程。 但是!! 关于Spring中session的使用,大部分资料都讳莫如深。也许这个问题太过容易推断出?大部分资料都没有包括我下面所将要陈述的内容。关于Spring中session的正确使用方法,这里甚至建议直接使用Session。但这种方法显然违背了Spring “technology agnostic” (这个名词我理解意思就是无论你是在什么具体的应用中使用类似的控制逻辑,servlet、一个本地JVM 程序或者其他,你的Controller都可以得到复用)的初衷。 于是我开始从庞大的网络资源和书籍中搜索关于Session的正确用法及Spring MVC处理Session的机制,其中讲得最深入而且清楚的算是这一篇。从上文的内容,及我所查阅的比如官方文档这种资料中,我可以大约推断出几个要点: 1. Spring框架会在调用完Controller之后、渲染View之前检查Model的信息,并把@SessionAttributes()注释标明的属性加入session中 2. @ModelAttribute在声明Controller的参数的时候,可以用来表明此参数引用某个存在在Model中的对象,如果这个对象已经存在于Model中的话(Model可以在调用Controller之前就已经保存有数据,这应该不仅仅因为HandlerInterceptor或者 @ModelAttribute标记的方法已经显式的将一些对象加入到了Model对象中,也因为Spring会默认将一些对象加入到Model中,这一点很重要)。 3. 如果Session中已经存在某个对象,那么可以直接使用ModelAttribute声明Controller的参数,在Controller中可以直接使用它。 其中1很明确,我提到的那篇文章主要就在说明这一点。而从2和3我们也许可以大胆地推出一个结论: Spring会在调用Controller之前将session中的对象填入Model中 因为想从2得到3,这个结论就显得比较自然。那么事实上是不是如此呢?可以做一个小实验。仿效我所引用的那篇文章,我写了如下代码: @Controller @RequestMapping("/user") @SessionAttributes("userId") public class UserController { @RequestMapping(value="/login", method=GET) public String login ( int id, Model model, ServletRequest request, Session session) { model.addAttribute("userId", id); System.out.println("");

JSP页面间传递参数方法介绍txt

JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数。下面介绍一下实现的方法。 (1)直接在URL请求后添加 如:直接传递参数< /a> 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?action=transparams&detail=directe") ,可用request.getParameter(name)取得参数 (2)jsp:param 它可以实现主页面向包含页面传递参数,如下: 还可以实现在使用jsp:forward动作做页面跳转时传递参数,如下: < jsp:forward page="Relative URL"> < jsp:param name="paramname" value="paramvalue" /> < /jsp:forward> 通过这种方式和一般的表单参数一样的,也可以通过request.getParameter(name)取得参数 (3)设置session和request 通过显示的把参数放置到session和request中,以达到传递参数的目的 session.setAttribute(name,value); request.setAttribute(name,value) 取参数: value=(value className)session.getAttribute(name); value=(value className)request.getAttribute(name); 大家肯定已经注意到了,在取参数的时候,做了类型转换,这是因为放置在session和request 中的对象的属性被看作https://www.doczj.com/doc/0e3807639.html,ng.Object类型的了,如果不转换,在将直付给value时会报classcastexception异常。 在多个JSP页面之间传递参数 1. 怎么在多个JSP页面之间进行参数传递?需要使用JSP的内置作用域对象session。利用它的两个方法setAttribute(),getAttribute() 2. 下面的这个实例实现了把第一个JSP页面的参数传递给第三个页面的功能

《web开发技术(java)》实验四——利用Session完成用户登录功能

《利用Session完成用户登录》 实验指导书 一、实验目的 理解会话对象的功能。 二、实验任务 1、利用会话对象完成用户的模拟登录功能(组织界面输入用户名密码,如果用户名等于neusoft,密码等于123则视作合法用户,并完成登录功能)。登录界面如下: 2、验证用户是否成功登录(如果已经登录显示登录用户信息,否则跳转到登录界面)。 成功登录界面如下:

验证成功登录界面如下: 三、预备知识 1.会话就是驻留服务器上的托管对象,位于JSP容器中。其主要作用是跟踪由一个用户发送的请求。 2.JSP容器与浏览器通过协作使用标准的HTTP协议来实现会话,JSP、Servlet开发人员无需实现会话,也不直接处理会话实现机制。只要能

够使用会话对象即可。 3.获取对象的方法:JSP中直接使用session对象即可,Servlet中需要调用HttpServletRequest实例的getSession()、getSession(flag)方法即可获得。getSession()以及getSession(true)完成的功能是:如果所需的会话不存在,立即创建;getSession(false)完成的功能是:若请求的会话存在,则获取使用,否则返回空值。 4.向会话中添加信息:调用HttpSession实例的setAttribute(String,Object)方法即可将要加的信息添加到Session,但注意如果要添加的属性名同已有的属性名重名,则当前值会覆盖原有的值。 5.获取属性中的信息:调用HttpSession实例的getAttribute(String)方法即可返回需要的值,注意方法的参数为属性的名称。 6.删除属性中的信息:有时根据需要将Session中已有的属性信息予以删除,此时需要调用HttpSession实例的romoveAttribute(String)删除指定的属性。 7.获取会话中所有的属性信息:有时可能根据需要,列出会列出会话中所有的属性值,此时需要调用HttpSession实例的getAttributeNames()方法获取所有的属性名,然后在根据这些属性名分别调用getAttribute(String)方法返回对应的属性值 四、实验步骤 1.创建Web项目 2.创建login.html首页 3.创建完成登录功能的Servlet或JSP

c#下使用cookie和session

c#如何记住用户的信息 记录加密之后的信息,确保用户的信息安全 使用cookie和session记录用户的信息 1、保存时间 session的默认保存时间是24分钟 cookie在没有设置的情况下关闭之后立即结束生命周期 设置cookie的时间,cookie-name.Expires=Date.Now.AddDays();/DateTime.MaxValue;(永久) C#读取设置Cookie 设置: HttpCookie cookie = new HttpCookie("cookieName"); cookie.Value = "name1" HttpContext.Current.Response.Cookies.Add(cookie); 读取: HttpContext.Current.Request.Cookies["cookieName"].Value 判断cookie是否存在: if(HttpContext.Current.Request.Cookies["cookieName"]==null){ //do something } 设置cookie有效期 cookie.Expires = DateTime.Now.AddDays(1); https://www.doczj.com/doc/0e3807639.html,中Cookies的用法(转) 一,cookies 写入 方法1: Response.Cookies["username"].Value="gjy"; Response.Cookies["username"].Expires=DateTime.Now.AddDays(1); 方法2: System.Web.HttpCookie newcookie=new HttpCookie("username"); newcookie.Value="gjy"; newcookie.Expires=DateTime.Now.AddDays(1); Response.AppendCookie(newcookie); 创建带有子键的cookies: System.Web.HttpCookie newcookie=new HttpCookie("user"); newcookie.Values["username"]="gjy"; newcookie.Values["password"]="111";

JSP中request.getParameter()和session.getAttribute()的区别

JSP中request.getParameter()和session.getAttribute()有没有区别,它们各自适合那些场合 request.get()是从上一个页面用户提交的数据中取得, 而session存在范围是用户这一次看你的网站。比如用,用户需要密码才能访问你的网站,用户初次登录时,你可以把变量设到SESSION里,以后只要检查SESSION里的变量就可以知道用户是否已经在登录状态。 ●request.getParameter() request 是请求,即把需要的参数得到,一般是从上一个页面用户提交的数据中得到 ●session.getAttribute() session 是用来保持会话的连接,说明见上面 1,request.getParameter() 得到客户端数据 2,session.getAttribute() 存入变量以便让更多页面可以得到该变量,通过设置存在时间,可以用在是否在线,是否已登录等场合 request.getParameter()是从上一个页面用户提交的数据中取得, session.getAttribute()在整个会话期间都有效,这样可以方便的多次获得该变量 request.getParameter()上一个页面提交的。比如 form 里的或者是url 里的。session.getAttribute()是在用户的整个会话期有效。 这个问题主要是request和session的差别,request范围较小一些,只是一个请求,简单说就是你在页面上的一个操作, request.getParameter()就是从上一个页面中的url、form中获取参数,但如果一个request涉及多个类,后面还要取参数,可以用 request.setAttribute()和request.getAttribute(),但是当结果输出之后,request就结束了。而session可以跨越很多页面,可以理解是客户端同一个IE窗口发出的多个请求。这之间都可以传递参数,比如很多网站的用户登录都用到了。

Session的生命周期

Session的生命周期 以前在学习的时候没怎么注意,今天又回过头来仔细研究研究了一下Session的生命周期。 Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon 在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用 request.getSession(true)强制生成Session。 Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。 2. 调用Session的invalidate方法。 Session对浏览器的要求: 虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。 该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说

session应用详解

Session 对象 可以使用Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web 页之间跳转时,存储在Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则Web 服务器将自动创建一个Session 对象。当会话过期或被放弃后,服务器将终止该会话。 Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session 对象中。有关使用Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。 注意会话状态仅在支持cookie 的浏览器中保留。 语法 Session.collection|property|method 集合 Contents 包含已用脚本命令添加到会话中的项目。 StaticObjects 包含通过 标记创建的并给定了会话作用域的对象。 属性 CodePage 将用于符号映射的代码页。 LCID 现场标识。 SessionID 返回用户的会话验证。 Timeout 应用程序会话状态的超时时限,以分钟为单位。 方法 Abandon 该方法破坏Session 对象并释放其资源。 事件 global.asa 文件中声明下列事件的脚本。 Session_OnEnd Session_OnStart 有关以上事件及global.asa 文件的详细信息, 请参阅Global.asa 参考. 注释 您可以在Session 对象中存储值。存储在Session 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。 <%

JSP的四大作用域:page、request、session、application

JSP的四大作用域:page、request、session、application page作用域:代表变量只能在当前页面上生效 reques t:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie 就会一直生效,cookie生效,session的使用就不会受到影响。 application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。 Cookie在jsp中语法: Cookie cookie_name =new Cookie("Parameter","Value"); 例: Cookie username_Cookie =new Cookie("username","waynezheng"); response.addCookie(username_Cookie); 读取cookie 从提交的HTML表单中获取,用户名 String userName=request.getParameter("username"); 以"username", userName 值/对创建一个Cookie Cookie theUsername=new Cookie("username",userName); 在JSP中,使用setMaxAge(int expiry)方法来设置Cookie的存在时间,参数expiry 应是一个整数。正值表示cookie将在这么多秒以后失效。注意这个值是cookie 将要存在的最大时间,而不是cookie现在的存在时间。负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。如: Cookie deleteNewCookie=new Cookie("newcookie",null); deleteNewCookie.setMaxAge(0); 删除该Cookie deleteNewCookie.setPath("/"); response.addCookie(deleteNewCookie); 实例: <%

文本预览