Servlets 有没有使用简单正则表达式映射Javaservlet的方法?
我需要将Servlets 有没有使用简单正则表达式映射Javaservlet的方法?,servlets,servlet-filters,servlet-mapping,Servlets,Servlet Filters,Servlet Mapping,我需要将/Test映射到一个servlet Test.java,还需要将/anything/Test映射到同一个servlet。我读到,/*/Test在web.xml中不起作用,因为它不接受正则表达式 有没有其他方法可以使用过滤器来完成?由于某些阻塞问题,我无法使用Tuckey URL筛选器。另外,我的servlet中也需要“任何东西”。如果我能够映射,我计划处理该url字符串 比如说 /ProjectName/Test 应该打开测试servlet 还有/ProjectName/xyz/Test
/Test
映射到一个servlet Test.java,还需要将/anything/Test
映射到同一个servlet。我读到,/*/Test
在web.xml中不起作用,因为它不接受正则表达式
有没有其他方法可以使用过滤器来完成?由于某些阻塞问题,我无法使用Tuckey URL筛选器。另外,我的servlet中也需要“任何东西”。如果我能够映射,我计划处理该url字符串
比如说
/ProjectName/Test
应该打开测试servlet
还有/ProjectName/xyz/Test
还应该打开测试servlet
现在xyz可以是任何东西。我还想在我的测试servlet中获得xyz。我计划通过
request.getRequestURI()
获取xyz并从url获取它。您需要一个过滤器
这是一个基本的,应该工作
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String url = req.getRequestURI();
if (url.endsWith("test")) {
request.getServletContext().getNamedDispatcher("TestServlet").forward(request, response);
} else {
chain.doFilter(request, response);
}
}
关键点。我使用getNamedDispatcher
获取您希望使用的命名servlet。最好根本不要将这个servlet映射到模式
通过使用
getNamedDispatcher
,它不会损坏目标servlet中的请求url。改进您的问题,不清楚您在问什么!是的。举个例子希望对你有帮助,举个例子我想要的。非常感谢。