如何手动选择Servlet?

时间:2014-09-15 09:31:49

标签: java servlets

在我的应用程序中,我在web.xml中有以下过滤器

<filter>
    <filter-name>webServiceFilter</filter-name> 
    <filter-class>org.bakhtiari.filter.WebServiceFilter</filter-class> 
</filter>
<filter-mapping>

    <filter-name>webServiceFilter</filter-name>
    <url-pattern>/webservice/RestEasy/*</url-pattern>
</filter-mapping>

宣布两个调度程序Servlet

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/webservice/RestEasy/*</url-pattern>
</servlet-mapping>

现在假设一个HTTP请求来到url“/ webservice / RestEasy / redirect / callUserService”。

考虑到我的业务,​​如果URL的第三部分等于“重定向”,我必须调用URL“/ rest / callUserService”。

考虑到所有这些,我想向“mvc-dispatcher”发送一个带有新URL的请求,并从中检索HTTPServletResponse

请注意,我无法使用java.net或类似内容向新URL发送请求,因为我的应用程序在“/ *”URL上有安全过滤器,并且在每个请求中放置身份验证参数会导致服务器上出现大量过载。

1 个答案:

答案 0 :(得分:0)

解决方案是

public class WebServiceFilter implements Filter {

   @Override
   public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException,
         IOException {
      if(/* CONDITION */){

         RequestDispatcher rd = req.getRequestDispatcher("/rest/callUserService");
         rd.forward(req, res);
      }
   }
}