有如下功能:
从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②没有半点关系。