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。

改进您的问题,不清楚您在问什么!是的。举个例子希望对你有帮助,举个例子我想要的。非常感谢。