在我们的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)。
答案 0 :(得分:0)
您可以尝试:
<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中工作。
答案 1 :(得分:0)
给定的答案(到目前为止)都没有达到我的要求,但我找到了一个简单的解决方案。
由于某种原因,事实证明WebSphere将自己处理JSP,而不是委托给具有/*
映射的servlet - 即使web.xml中没有提到JSP的特定映射。也许这是规范的一部分,如果你想让它处理这些请求,就必须将*.jsp
显式映射到servlet?
在任何情况下它都适合我 - 而不是使用/admin/index.html
我可以使用/admin/index.jsp
(并且可能会将index.jsp
添加到welcome-file-list,以便/admin
的请求1}}也会给这个页面。)
答案 2 :(得分:0)
您可以在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;
}