当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

Struts构架中的Session对象成立和掌握[Java编程]

赞助商链接



  本文“Struts构架中的Session对象成立和掌握[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

首先谈一下对session对象在web开辟中的成立以及sessionId生成并返回客户端的运行机制.

session对象当客户端初次拜候时,成立一个新的session对象.并同时生成一个sessionId,并在此次呼应中将sessionId以呼应报文的方法些回客户端浏览器内存或以重写url方法送回客户端,来保持整个会话,只要sever端的这个session对象没有销毁,今后再调用request.getSession()时就直接按照客户端的sessionId来检索server端生成的session对象并返回,不会再次去新建,除非按照此sessionId没有检索到session对象.

下面是在IE下测试,因为IE6.0的一个BUG就是IE的隐私设置即便是禁止全部cookie时,也还是会以会话cookie来保存sessionId.所以下面都是以会话cookie来谈论的,

(1)在server没有关闭,并在session对象销毁时间内,当客户端再次来恳求server端的servlet或jsp时,将会将在第一次恳求时生成的sessionId并附带在恳求信息头中并向server端发送,server端收到sessionId后按照此sessionId会去搜索(此历程是透明的)server对应的session对象并直接返回这个session对象,此时不会重新去成立一个新的session对象.

(2)当server关闭(之前产生的session对象也就灭亡了),或session对象过了其销毁时间后,浏览器窗口不关,并在本浏览器窗口再次去恳求sever端的servlet和jsp时,此时一样会将sessionId(server关闭或session销毁时生成的sessionId)发送到server端,server按照sessionId去找其对应的session对象,但此时session对象已经不存在,此时会重新生成一个新的session对象,并生成新的sessionId并一样将这个新生成的sessionId以呼应报文的情势送到浏览器内存中.

(3)当server没有关闭,并session对象在其销毁时间内,当恳求一个jsp页面回客户端后,关闭此浏览器窗口,此时其内存中的sessionId也就随之销毁,在重新去恳求sever端的servlet或jsp时,会重新生成一个sessionId给客户端浏览器,并存在浏览内存中.

上面的理论在servlet中测试都是成立的,下面谈一下在struts框架下举行上面的测试时的差别的地方.

先扼要说下测试程序的流程:

客户端恳求index.do--->进入server端的IndexAction--->转向login.jsp页面----->恳求login.do----->进入server端的LoginAction.

首先阐明:IndexAction中没有去产生session对象,login.jsp中设置.

(1)环境servlet + jsp:

在sevlet+jsp测试跟踪时,在index.do进入IndexAction后转向login.jsp时,此时浏览器内存中是没有会话cookie的,那么在login.jsp上恳求login.do进入LoginAction后,用request.getCookies()测试时,其值是为null的!后果是稳合的,因为从始置终没有产生过session嘛!

(2)环境struts + jsp:

在struts+jsp测试跟踪时,跟上面的流程一样,开始想后果也应当是一样的,但经过调试后发现后果却不是所想的那样.在login.do进入LoginActoin后用,用request.getCookies()测试时,发现其值不为null,即其有name和value,开始很不睬解,因为根本就没有成立过session对象,哪来的会话cookie值呢.但是后果有,那么想着此时浏览器内存中也就应当有会话cookie,问题就在这里!从那边来的?

后来经过细心考虑后,想到struts中的特点,我们自己写的Action类是担当struts的Action的,并且之前是经过struts的中央掌握器ActionServlet来掌握转向的,所以我想必定是在程序进入我自己写的IndexAction之前,struts框架中的代码必定已经成立了session对象并已经生成了sessionId.于是就找到相关书籍查看了ActionServlet工作流程以及调用哪些类,看了之后公然在此中看到了HttpSession session = request.getSession();这样一句话!于是答案也就明了了.

大家知道struts的ActionServlet类中在接纳到我们客户端的恳求(*.do)后(之前会做一系列初始化工作),并非直接去处理我们的恳求并调用呼应的Action(我们写的如IndexAction),而是将处理工作交给RequestProcessor类,其process办法中会调用一系列的办法来完成呼应的恳求处理和转向操作.此中有一个办法惹起了我的关注,就是processLocale()办法.


  以上是“Struts构架中的Session对象成立和掌握[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在Google App Engine中操纵Struts2框架
  • 关于Struts和Spring两种MVC框架的比较
  • <b>Struts2文件上传</b>
  • 让Struts与Hibernate顺利协同工作
  • Hibernate+Spring+Struts扩大Struts
  • J2EE底子 用Struts框架开辟MVC系统步骤
  • <b>J2EE底子:Struts框架初学者从这里入门</b>
  • struts2整合tiles及配置
  • Struts2.0深化学习 命名空间,模子驱动,表单反复提交
  • 操纵Struts 2开辟RESTful服务
  • Struts2输入校验(一) validate办法-validateXxx办法
  • Struts2输入校验(二) 考据框架
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .