使用RequestDispatcher将数据从一个servlet传递到另一个servlet

6

我正在尝试使用RequestDispatcher从一个servlet传递数据到另一个servlet。以下是我的Dispatcher代码:

String address;

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

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

当我尝试运行它时,它会给我一个错误,说路径不可用。我是否需要包含一些内容以便分派程序将其发送到另一个servlet?
2个回答

12
你只需要将servlet-mapping的url-pattern传递给getRequestDispatcher即可。
假设你在web.xml中为MapOut Servlet设置了名为"myMap"的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>

我还有点困惑,你说的servlet映射是什么意思? - stacktraceyo
RequestDispatcher rd; rd = request.getRequestDispatcher("/MapOut"); rd.forward(request, response);这是我在servlet上的代码,我希望在"\MapOut"中创建的属性可以被转发。我需要在MapOut类中发出请求吗? - stacktraceyo
1
我们可以有一个没有映射的Servlet吗? - Koray Tugay
@HardikMishra 我有一个小问题。我们不需要通过设置属性来转发请求吗?为什么我们不使用它? - Dil.
@pippilongstocking:你可以使用那个,但这里的问题是关于转发而不是设置属性。 - Hardik Mishra

1
你可以直接在request.getRequestDispatcher("your servlet name");中写入servlet的名称,它会根据web.xml配置获取路径。
RequestDispatcher rd= request.getRequestDispatcher("MyServletName");
rd.forward(request,response);

1
它不起作用。请告诉我在哪个版本中它可以工作。我正在使用servlet 2.4。 - sar
@saurabh 是的,它可以在servlet版本2.4中工作,请检查servlet的名称和路径。 - Mitul Maheshwari
1
这是通过 javax.servlet.ServletContext.getNamedDispatcher(String) 完成的。request.getRequestDispatcher 仅适用于路径。 - Anton Krosnev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接