【问题标题】:How to choose Servlet manually?如何手动选择Servlet?
【发布时间】:2014-09-15 09:31:49
【问题描述】:

在我的应用程序中,我在 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>

并且声明了两个dispatcher 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”。

考虑到这一切,我想使用新 URL 向“mvc-dispatcher”发送一个请求,并从中检索 HTTPServletResponse

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

【问题讨论】:

  • 你也将使用 apache http 服务器吗?如果是,您可以使用重定向(如果我完全理解您的问题)
  • 是的,tomcat。不,那是不可能的。我想从 servlet 获取响应,对其进行一些更改,然后将其作为结果发送回来。
  • httpd.apache.org apache http 服务器在这里。顺便说一句,您也可以选择使用 jsp 重定向。我相信,重定向是您正在寻找的。​​span>
  • 谢谢,BTW 重定向不适用于我的情况。
  • okey,是不是类似于:获取 url,使用正则表达式(或其他)找到“重定向”,如果它位于第三位,则向新 url /rest/call 发送请求.... 通过 ajax 获取内容?

标签: java servlets


【解决方案1】:

解决办法是

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);
      }
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多