request的生命周期

有如下功能:

从index.jsp页面点击超链接进入TestServlet服务器,TestServlet服务器再请求转发到test.jsp。

在index.jsp里设置了request的attribute:requestKey1,在TestServlet服务器里设置了request的attribute:requestKey2,然后在test.jsp页面里获取request的两个属性值。

 

具体代码如下:

 

 

运行结果:只能获取到request的requestKey2,不能获取requestKey1。这说明index.jsp的request和test.jsp不是同一个request,而TestServlet服务器的request和test.jsp是同一个request.

原因分析:

                                        超链接(相当于请求转发)  

                                        发送request②                          请求转发request②

                        index.jsp------------------>TestServlet服务器-------------------->test.jsp

(index.jsp里显示自身页面的request①)                                               (test.jsp里显示自身页面的request②)

也就是说,index.jsp页面的request是用来显示自身页面的的,刷新一下index.jsp页面,就发送一次request①从而页面完成请求和响应,request①就会被创建和销毁。

而从index.jsp页面点击超链接进入TestServlet服务器是另一个request②,TestServlet服务器对request②进行请求转发到test.jsp页面,此时test.jsp获取的请求仍然是request②,而且test.jsp页面显示自身的也是request②。如果刷新test.jsp页面,就会再发送一次request②(从index.jsp---->TestServlet服务器)

 

那么,如果是TestServlet服务器是重定向到test.jsp,将会是如下流程:

                                            超链接(相当于请求转发)  

                                       发送request②                          请求重定向request③

                        index.jsp------------------>TestServlet服务器-------------------->test.jsp

(index.jsp里显示自身页面的request①)                                               (test.jsp里显示自身页面的request③)

 此时如果刷新一下test.jsp页面,再次发送的request③和前面index.jsp的request①、TestServlet服务器的request②没有半点关系。

 

 

原文地址:https://www.cnblogs.com/TTTTT/p/6005765.html