如何将请求从servlet转发到struts2的动作?

Sun*_*nil 9 java servlets struts2 dispatcher

我想从一个请求转发的Servlet操作这样使用RequestDispacher这样的

RequestDispatcher dispatcher=request.getRequestDispatcher("hello.action");
dispatcher.include(request, response);
Run Code Online (Sandbox Code Playgroud)

它不起作用.我该如何解决这个问题?

Dav*_*ton 9

为了做到这一点,你可能还需要设置过滤器在FORWARD上运行(和你的代码显示的INCLUDE,尽管你声明你想要一个FORWARD):

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher> 
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher> <!-- If you want includes as well -->
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)


Rom*_*n C 8

使用servlet中的代码

getServletContext().getRequestDispatcher("/hello.action").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

您还配置了struts2过滤器以接受转发请求

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)