Servlet:如何获取自己的URL模式?

Gil*_*ili 3 java servlets servlet-filters

servlet或过滤器可以查找自己的URL模式吗?

意思是,如果我将一些servlet或过滤器绑定到/first/*并且/second/*请求进来,我可以找出这两个模式中的哪一个触发了它吗?

即使servlet只绑定到一个模式,有没有办法从servlet内部查找(而不是硬编码一个值)?

And*_*res 7

HttpServletRequest类上的这个方法可以帮到你.您将在HTTP请求调用的任何Servlet方法上获得HttpServletRequest的实例.

getServletPath

java.lang.String getServletPath()返回此请求调用servlet的URL的一部分.此路径以"/"字符开头,包括servlet名称或servlet的路径,但不包含任何额外的路径信息或查询字符串.与CGI变量SCRIPT_NAME的值相同.

看看这个:

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getServletPath()


Jig*_*shi 5

您可以通过<url-pattern>以下方式获得 servlet的注册

ServletContext servletContext = getServletContext();
ServletRegistration servletRegistration = servletContext.getServletRegistration();
java.util.Collection<java.lang.String> mappings = servletRegistration.getMappings()
Run Code Online (Sandbox Code Playgroud)

并得到

final String path = getServletPath();
Run Code Online (Sandbox Code Playgroud)

来自requestAndreeas 建议并尝试通过比较字符串模式来找出映射


文档