有关于request,session的几个问题[总结网络搜集的一些资料]

1. sendRedirect()方法是通过浏览器重定向的

例:JSP1代码
String [] test=new String[2];
test[0]="1";
test[1]="2";
request.setAttribute("test",test) ;
response.sendRedirect("jsp2.jsp");
JSP2代码
String test[]=(String[])request.getAttribute("test");
out.print(test);

在第二个JSP页面中获得的request并非是前一个页面的request(两次请求生成了前后两个不同的 request对象了

--------------RequestDispatcher接口的forward()方法试试看


2. request.setAttribute()  VS  session.setAttribute()

不同页面间传值使用request.setAttribute("obj1",obj)【把obj这个对象放在名称为obj1的变量中】时,只会从a.jsp到b.jsp一次传递,之后这个request就会失去它的作用范围,再传就要再设一个 request.setAttribute(),而使用session.setAttribute()会在一个过程中始终保有这个值。


3. JavaScript不能取得jsp页面跳转过程中request和session的值,因为JavaScript运行在客户端,而request/session对象运行在服务器端。若想使它们之间可以相互传递参数,可以在JSP中设置一个hidden控件,用request.getAttribute/session.getAttribute得到在request/session中变量的value,再用js去取这个value


4.servletContext,session,request,page的作用范围

request.setAttribute的生命周期就是request级别的 
request.getSession().setAttribute的生命周期是session级别的

   

5request是服务器端对象,客户端接收不到。request的生命周期就是在服务器端页面之间,来自客户端的请求经Servlet容器处理后,由request对象进行封装,它作为servlet service()方法的一个参数由容器传递给JSP页面,因此,JSP转发时,request会随着发到下一个页面,但一旦最后一个页面处理完成,这个request的生命周期也就结束了,客户端再次提交请求Servlet又会生成一个新的request对象。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值