forward是否共享一个request,能否通过getParameter取得参数
2015-03-18 13:07
288 查看
Request的getParameter和getAttribute的区别:
/article/1988708.html
本人依然很困惑,因为两个Servlet之间是共享一个Request的 为什么要先取出来getParameter得到值之后 setAttribute 在新的Servlet又getAttribute
难道新的Servlet里面无法获取共享的Request里面的patameter吗?
于是做了个实验:
第一个servlet
web.xml
放到tomcat的webapp下面
编译会报错
只要将tomcat下lib里面的servlet-api.jar加入CLASSPATH里面即可
编译成功后启动tomcat
以http://localhost:8080/myTest/hello?a=1 去访问下
看结果我们发现其实是可以取到的!
至于为什么 研究下tomcat源码之后再来进一步解释
/article/1988708.html
本人依然很困惑,因为两个Servlet之间是共享一个Request的 为什么要先取出来getParameter得到值之后 setAttribute 在新的Servlet又getAttribute
难道新的Servlet里面无法获取共享的Request里面的patameter吗?
于是做了个实验:
第一个servlet
package com.silvia; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyFirstServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println(req.getParameter("a")); req.getRequestDispatcher("/servlet2").forward(req,resp); } }第二个servlet
package com.silvia; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet2 extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("servlet2"); System.out.println(req.getParameter("a")); } }
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>myFirstServlet</servlet-name> <servlet-class>com.silvia.MyFirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myFirstServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>servlet2</servlet-name> <servlet-class>com.silvia.Servlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet2</servlet-name> <url-pattern>/servlet2</url-pattern> </servlet-mapping> </web-app>
放到tomcat的webapp下面
编译会报错
只要将tomcat下lib里面的servlet-api.jar加入CLASSPATH里面即可
编译成功后启动tomcat
以http://localhost:8080/myTest/hello?a=1 去访问下
看结果我们发现其实是可以取到的!
至于为什么 研究下tomcat源码之后再来进一步解释
相关文章推荐
- ssh2 action中通过ActionContext取得HttpServletRequest对象 然后使request.getParameter("参数名")得到参数值
- 一个通过反射改变request的请求参数的方法
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- 一个通过反射改变request的请求参数的方法
- 如何判断一个C++对象是否在堆上(通过GetProcessHeaps取得所有堆,然后与对象地址比较即可),附许多精彩评论
- Struts2中通过实现Aware接口解耦servlet API,可以多个方法共享一个application,session,request,parameter对象
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- 一个通过反射改变request的请求参数的方法
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- request.getParameter(“参数名”) 中文乱码解决方法
- 通过另类的泛型约束将两个输入输出参数不同的方法合并成一个方法的实现
- 创建存储过程,以部门编号为参数返回该部门的人数及平均工资(返回一个值可以通过函数来实现,但如果要返回多个值,需要使用out或in out模式参数实现)
- ASP.NET 页面通过url传递参数,另一页面通过Request.QueryString获取参数为乱码问题
- 实验1 远程客户机能否通过共享内存访问服务器
- 编写一个业务函数,实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。
- 判断一个字符串通过变化字符的位置,是否可以组成回文
- linux两个程序通过共享内存通信的一个简单例子
- Git---通过一个具体实例详解Git常用命令以及提交pr(pull request)
- 编写一个函数,从标准输入读取一列整数,把这些值存储于一个动态分配的数组中并返回这个数组。函数通过观察EOF判断输入列表是否结束。数组的第一个数是数组包含的值的个数,他的后面就是这些整数值。