2012-07-12 85 views
6

我想使用RequestDispatcher将数据从一个servlet传递到另一个servlet。这是我的Dispatcher代码。使用RequestDispatcher将数据从servlet传递到另一个servlet

String address; 

address = "/Java Resources/src/coreservlets/MapOut.java"; 

RequestDispatcher dispatcher = 
    request.getRequestDispatcher(address); 
dispatcher.forward(request, response); 

当我尝试运行它,它给了我一个错误说的路径是不可用的。我必须包含一些让调度员发送给另一个servlet的东西吗?

回答

12

你只需要通过在getRequestDispatcherservlet-mappingurl-pattern

让我们说你的servlet映射是 “MYMAP” 在web.xml的 “MapOut” Servlet的。那么它应该是

RequestDispatcher dispatcher = request.getRequestDispatcher("/myMap"); 
dispatcher.forward(request,response); 

转发的Servlet doGet()将被调用。

例如:web.xml中

 <servlet> 
     <description></description> 
     <servlet-name>MapOut</servlet-name> 
     <servlet-class>coreservlets.MapOut</servlet-class> 
     </servlet> 
     <servlet-mapping> 
     <servlet-name>MapOut</servlet-name> 
     <url-pattern>/myMap</url-pattern> <!-- You can change this--> 
     </servlet-mapping> 
+0

我还是有点困惑,你说的servlet映射是什么意思。 – StackTraceYo 2012-07-13 17:28:46

+0

RequestDispatcher rd; \t rd = request.getRequestDispatcher(“/ MapOut”); \t rd.forward(request,response); 这就是我在servlet上所要创建的属性将被转发到“\ MapOut”...我必须在MapOut类中提出请求吗? – StackTraceYo 2012-07-13 20:33:28

+0

@AhmadFarag:查看编辑答案 – 2012-07-14 08:49:46

1

您可以直接写在request.getRequestDispatcher("your servlet name");该servlet的名字,将根据web.xml配置获取路径。

RequestDispatcher rd= request.getRequestDispatcher("MyServletName"); 
rd.forward(request,response); 
+1

它不工作。 PLZ让我在哪个版本工作..我使用的servlet 2.4 – sar 2014-11-19 14:33:32

+0

@saurabh是的。它在servlet 2.4, 中工作,请检查servlet和路径的名称。 – 2014-11-20 05:40:14

+0

这通过'javax.servlet.ServletContext.getNamedDispatcher(String)'完成。 'request.getRequestDispatcher'只能用于路径 – 2017-02-24 15:05:50