在网址

时间:2015-12-17 10:25:59

标签: tomcat servlets web-applications servlet-filters

我正在开发托管在Tomcat上的Java WebApplication。我在Tomcat上托管了以下Web应用程序:

申请名称:“公司”

访问网址:http://192.28.123.20:8085/Companies

现在我可以使用访问URL访问我的“公司”应用程序,但现在我想访问“公司”webapp,如果我输入任何案例即(公司,公司,公司等)。

我知道我们可以使用“ROOT”来处理上述要求,为此我需要在ROOT中使用一个servlet过滤器,并在“web.xml”中进行url映射,如下所示:

<filter>
    <display-name>BaseFilter</display-name>
    <filter-name>ContextFilter</filter-name>
    <filter-class>sample.context.filter.BaseFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>BaseFilter</filter-name>
    <url-pattern>/companies</url-pattern>
    <url-pattern>/comPAnies</url-pattern>
    <url-pattern>/ComPaNIes</url-pattern>
    <url-pattern>/companies/</url-pattern>
    <url-pattern>/comPAnies/</url-pattern>
    <url-pattern>/ComPaNIes/</url-pattern>
  </filter-mapping>

上面的url-pattern映射是在ROOT文件夹中点击Servlet过滤器,像这样我可以得到很多组合 处理混合案例应用程序名称。

任何机构都可以告诉我,我是否按照正确的方式处理要求? 如果有其他方法可以处理这种混合案例要求,请建议我。

1 个答案:

答案 0 :(得分:1)

假设您的应用程序的上下文根是/ *,您可以将过滤器映射设置为/ *,然后在调用过滤器时,您可以这样做:

if (request.getServletPath().toUpperCase().equals("COMPANIES") {
      request.getRequestDispatcher("/Companies").forward(request.response)
}

问题是,对于运行容器的过滤器,必须为入站请求找到有效的目标。为了确保这一点,您可以添加一个默认的servlet(带有&#34; / *&#34的映射的servlet;)。如果这个servlet被调用,请将请求转发到欢迎页面。

另请注意,代码段不允许请求中的任何路径信息,因此如果您需要允许,请从request.getPathInfo()获取路径信息并将其添加到&#34; / Companies&# 34;当你收到请求调度员。