request 生命周期及参数信息
当从一个jsp发出一个request,即表明了这个request生命周期的开始,当到达action之后一般有两种处理request的方式,一种为request.getDispatcher.forward,一种是response.sendRedirect.
对于request的forward,该request的生命周期将会继续延续下去,当采用forward如果到达JSP页面,那么之前从第一个JSP页面中发送出来的request的消息将仍然存在,新的页面同样能够取得该request里所包含的一些信息,比如之前的JSP发送request中所包含的参数信息.事实上,它们是同一个request.
而如果是使用response.sendRedirect那么该request的生命周期将结束.
对于request,对request信息的传递,只有setAttribute()这一个方法,该方法将设置一个Object对象到request中.
但是,如果当一个request是从jsp从发出,包含的信息段为param1=test这样的方式,那么只能通过getParameter()得到,getAttribute()是得不到param1的value的.
再次,对于JSP的EL表达式,${}这中方式只能得到setAttribute中的值,因此当从一个JSP发送request到达action并且被forward到新的JSP中时,如果想在该JSP中取得JSP发送时的参数信息需要写为这种形式:${param.patam1}.
//1.已验证,使用jstl中的c标签set存入的值,设置作用域为request时,转发到其他servlet或jsp后,是通过getAttribute和${}来取出,所以c标签中的set相当于setAttribute.
//2.不同于c:param标签,c:param中的ky(键值对)是name和value,是用来重定向传值的,还需要配合c:url标签ky是var和value,还有带有重定向功能的标签(如a标签(超链接))等一起使用(不需要c:url好像也行),(ky键值对形式为var和value的好像都可以用${}来获取,在页面中定义的其他var和value都默认作用于在page?所以这种形式的value都可以这样取?)(存在request中的就不用说了)