【问题标题】:How can I make an exception to /* url-pattern in web.xml?如何在 web.xml 中对 /* url-pattern 进行例外处理?
【发布时间】:2013-05-11 14:38:18
【问题描述】:

在我们的 web.xml 中,我们将 CXFServlet 映射到 /* url 模式:

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

这很好用,我们现在不想更改它。但我想要一个 CXFServlet 不处理的 html 页面 (/admin/index.html),而只是直接作为 html 提供。我怎样才能做到这一点?我不知道如何创建一个 servlet 映射只是为了提供一个 html 页面。

请注意,如果这很重要,我们使用的是 IBM WebSphere 8 (WAS 8)。

【问题讨论】:

  • 考虑welcome-file-listwelcome-file
  • welcome-file 不起作用;我添加了 index.html 的欢迎文件,但 CXFServlet 仍然处理对 /admin/admin/ 的请求。它以“未找到服务”作为响应。
  • @MichaelLucas,是的,你是对的。应该反过来。

标签: java websphere web.xml


【解决方案1】:

你可以试试:

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/admin/*</url-pattern>
</servlet-mapping>

它在 Jetty 和 Tomcat 中工作。

【讨论】:

    【解决方案2】:

    (到目前为止)没有一个给出的答案符合我的要求,但我找到了一个简单的解决方案。

    由于某种原因,事实证明 WebSphere 将自己处理 JSP,而不是委托给具有 /* 映射的 servlet——即使 web.xml 中没有提及 JSP 的特定映射。也许这是规范的一部分,如果您希望它处理这些请求,则必须将 *.jsp 显式映射到 servlet?

    在任何情况下它都对我有用——我可以使用/admin/index.jsp 代替/admin/index.html(并且可能会将index.jsp 添加到welcome-file-list 以便/admin 的请求也将提供此页面)。

    【讨论】:

      【解决方案3】:

      你可以在 CXFServlet.java 中有一些代码

      在 doget() 方法中:

      URL url = new URL(request.getRequestURL());
          System.out.println("URL is:" + url);
      if (url.toString().contains("/admin/")) {
              response.setContentType("text/html; charset=UTF-8");
              PrintWriter pw = response.getWriter();
              pw.print("<!DOCTYPE html><html lang=\"fa\" dir=\"rtl\">\n"
                      + "<head>"
                      + "<meta charset=\"utf-8\"/>"
                      + "</head>"
                      + "<body>"
                      + "<div>some thing</div>"
                      + "<body></html>");
              pw.close();
              return;
          }
      

      【讨论】:

      • 我们不想修改 CXFServlet.java
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2017-05-08
      • 2013-08-02
      • 2016-08-07
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多