一直以来,我以为request的生命周期是一样的。。但最近遇到个问题,
发现有点不同,,结果最终确认到是request.getParameter 和 request.getAttribute 上来了
一般是这样的,在action中定义一个request.setAttribute,然后通过ActionForward转向到某个a.jsp后(此称为响应),
可以在这个a.jsp中用request.getAttribute 来获取,不过如果这个a.jsp通过跳转到另一个b.jsp去了,那么在b.jsp中request.getAttribute 是获取不到这个值的。。
同样的,在c.jsp中request.setAttribute提交到action中的list,那么在list也可以用request.getAttribute 可以获取这个值,而且如果list跳转到add或者edit等,只要还在这个action中request.getAttribute 都可以获取这个值的! 现在我说下发现的在不同:
如果在d.jsp中,有如下:
<form action="...." method="post" name="..">
<input type=hidden name="searchtxt" value="request.getParameter('searchtxt')">
</form>
这个d.jsp如果是提交到acion中去了,在action可以通过request.getParameter('searchtxt')获取这个值,
但 是这个action再ActionForward回这个d.jsp的时候,这个jsp的的隐藏标签还可以通过request.getParameter('searchtxt')获得这个值
说明这个request.getParameter('searchtxt')的生命周期比request.getAttribute长一些,
它从一个jsp到action再到jsp依然存在!
而request.getAttribute从一个jsp到action后,如果action响应回某个jsp的时候,这个request就结束了
请高手帮我分析下这种区别不好意思我没什么分给大家
发现有点不同,,结果最终确认到是request.getParameter 和 request.getAttribute 上来了
一般是这样的,在action中定义一个request.setAttribute,然后通过ActionForward转向到某个a.jsp后(此称为响应),
可以在这个a.jsp中用request.getAttribute 来获取,不过如果这个a.jsp通过跳转到另一个b.jsp去了,那么在b.jsp中request.getAttribute 是获取不到这个值的。。
同样的,在c.jsp中request.setAttribute提交到action中的list,那么在list也可以用request.getAttribute 可以获取这个值,而且如果list跳转到add或者edit等,只要还在这个action中request.getAttribute 都可以获取这个值的! 现在我说下发现的在不同:
如果在d.jsp中,有如下:
<form action="...." method="post" name="..">
<input type=hidden name="searchtxt" value="request.getParameter('searchtxt')">
</form>
这个d.jsp如果是提交到acion中去了,在action可以通过request.getParameter('searchtxt')获取这个值,
但 是这个action再ActionForward回这个d.jsp的时候,这个jsp的的隐藏标签还可以通过request.getParameter('searchtxt')获得这个值
说明这个request.getParameter('searchtxt')的生命周期比request.getAttribute长一些,
它从一个jsp到action再到jsp依然存在!
而request.getAttribute从一个jsp到action后,如果action响应回某个jsp的时候,这个request就结束了
请高手帮我分析下这种区别不好意思我没什么分给大家
解决方案 »
- org.hibernate.MappingException: Unknown entity
- 关于javaee6 tutorial官方文档的疑惑。
- 各位有遇到过SESSION在页面跳转之后失效的问题吗?
- 请教datepick 问题,不能将值存入TEXT中
- JSP+MySQL 中文乱码问题
- 为了减少数据库建立的连接,我只建一个连接,看看我这种设计思想
- 新手上路:推荐几本从入门到精通的书
- 请教高手啊!为什么我的JDOM包中不让使用org.jdom.output.Format
- 请问这是为什么?java.sql.SQLException: [Microsoft][ODBC 驱动程序 管理器] 非法的游标状态
- Springboot controller中遍历参数
- 在线等..急!
- 100分求一个下拉条联动的详细源码,问题得到解决马上结贴!
如果在d.jsp中,有如下:
<form action="...." method="post" name="..">
<input type=hidden name="searchtxt" value="〈%=request.getParameter('searchtxt')%〉">
</form>
这个d.jsp如果是提交到acion中去了,在action可以通过request.getParameter('searchtxt')获取这个值,
但 是这个action再ActionForward回这个d.jsp的时候,这个jsp的的隐藏标签还可以通过request.getParameter('searchtxt')获得这个值
如果在d.jsp中,有如下:
<%
reques.setAttribute("searchtxt","123");
String str=request.getAttribute("searchtxt");
%>
这个d.jsp如果是提交到acion中去了,在action可以通过request.getAttribute('searchtxt')获取这个值,
但 是这个action再ActionForward回这个d.jsp的时候,这个jsp的的隐藏标签还可以通过request.getAttribute('searchtxt')就不能获得这个值 这就是说明了两种方法的生命周期是不一样的
例如:
action里面写上
request.setAttribute("msg");
用DAO添加一个对象后,
request.setAttribute("msg", "添加成功!");
return mapping.findForward("update");
//========================================
struts-config.xml设置:
<forward name="update" path="/college.do?method=queryCollege" redirect="true"></forward>
//==================================
在list.jsp页面上
request.getAttribute("msg")为Null了。
若不使用从定向的话,则设置redirect="false", 跳转到list.jsp后,我手动刷新页面,有再次添加了同一个对象。
有什么办法解决??