请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

今天遇到了一个jsp与Servlet传值的问题,通过查资料解决了。下面和大家来分享一下。

    例子一

            index.jsp相关代码如下

    

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

     Servlet相关代码如下

    

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

list.jsp相关代码如下

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

解释例子一    

   上面的例子一描述的时index.jsp通过超链接向Servlet中传去borderid的值。  再在Servlet中通过请求转发(注意只能通过请求转发,因为重定向会再创建一个request对象,而请求转发会将当前的request的值传给下一个页面)将Servlet中的borderid的值传递给list.jsp。

    原因是从index.jsp跳转到Servlet时会将传去的值存发在request对象里面。Servlet获取值之后通过请求转发跳转到list.jsp界面中。 注意从index.jsp跳转到Servlet,再从Servlet跳转到list.jsp界面。请求对象只创建了一次(是在index.jsp访问Servlet时创建的)。因此request对象中的值一直存在。

 

例子二

    detail.jsp相关代码如下

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

  post2.jsp相关代码如下

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

Servlet相关代码如下

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

  解释例子二

     上面的例子二描述的是detail.jsp通过超链接向post2.jsp传去title和topicid的值,在通过post2.jsp的超链接向Servlet传去title和topicid的值。(结果保证在Servlet中无法获取到detail.jsp中topicid的值)

原因:当detail.jsp通过超链接向post2.jsp时会向post2.jsp发出一次请求,会将传去title和topicid的值存储在request对象中。当post2.jsp的超链接向Servlet时又会创建一个request对象,所以将原先title和topicid的值抹去。所以Servlet无法获取到detail.jsp中title和topicid的值。

  解决方法

      只要在post2.jsp跳转到Servlet时带上title和topicid的值

     解决图片如下

         

请求转发中jsp界面跳转到Servlet跳转到jsp与jsp跳转到jsp跳转到Servlet之间传值的区别

请求对象啥时会被创建

   一般来说当你发生界面跳转时就会被创建,就是当web客户端向Servlet发出请求时或者Servlet通过重定向技术实现跳转时。除了运用请求转发会保留原先的request。