request对象的Parameter能不能被转发携带,实际测试

第一个jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP  starting page</title>
  </head>
 <body>
    		这是一个表单
  <form action="/news/test/test2.jsp?temp=temp" method="get">
   		姓名:<input type="text" name="test">
  		<input type="submit"	value="提交">
  </form>  
  </body>
</html>

在表单中填入999后进行提交

第二个jsp(是第一个页面的表单提交的路径)

如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	out.print("request的temp结果是"+request.getParameter("temp"));
 %>

测试结果:页面上会显示:

 request的temp结果是null

若将第一个jsp的提交方式改成post,则显示结果是

  request的temp结果是temp

若不展示输出流,换成转发到下一个页面,如下

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	request.getRequestDispatcher("/test/test3.jsp").forward(request, response);
	//out.print("request的temp结果是"+request.getParameter("temp"));
 %>

则本页没有任何展示

第三个jsp(是第二个jsp转发的目的地)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP  starting page</title>
  </head>
  <body>
  request的test结果是<%=request.getParameter("test") %>
  request的temp结果是<%=request.getParameter("temp") %>
  
  </body>
</html>

最后执行后的结果是
当表单方式为get时

request的test结果是999        request的temp结果是null//(999是在第一个jsp输入的内容)

当表单方式为pos时:

request的test结果是999        request的temp结果是temp

所以,结论:

测试

  • 结论1:post的input值属性会被转发携带走,可以一直用request.getParameter获取
  • 结论2:post的表单的?可以携带一次到下一个界面,并且可以一直用request.getParameter获取
  • 结论3:get的input值属性会被转发携带走,可以一直用request.getParameter获取(和post一样)
  • 结论4:get的表单的?会被 丢失 就无法访问到?后面携带的参数和值,只能得到null

总结:表单的input值会"永久"存放在request对象里面,而表单action里面的?所直接携带的值,如果是post,可以一直存放,如果是get则被丢失

补充 至于重定向…会直接丢失request对象里所有的数据,就不用看了

补充:之前的测试做得不严谨结论也不是很正确,抱歉了,现在已经改成正确结论了

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值