动态URL映射到tomcat

时间:2017-08-16 10:14:00

标签: java xml servlets web.xml tomcat8

我想将此网址映射到一个servlet:

http://localhost:8080/user/dynamic-user-name/edit

这是另一个servlet:

http://localhost:8080/user/dynamic-user-name

其中dynamic-user-name将根据用户输入而发生变化。

我尝试了以下内容,但似乎/*会引导所有内容。

<servlet>
    <servlet-name>userservlet</servlet-name>
    <servlet-class>controller.UserServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>edituser</servlet-name>
    <servlet-class>controller.EditUserServlet</servlet-class>
</servlet>

 <servlet-mapping>
    <servlet-name>userservlet</servlet-name>
    <url-pattern>/users/*</url-pattern>
</servlet-mapping>
  <servlet-mapping>
    <servlet-name>edituser</servlet-name>
    <url-pattern>/users/*/edit</url-pattern>
</servlet-mapping>

是否可以以某种方式单独映射它们?我正在使用tomcat服务器。

解决方案/解决方法(未映射到不同的servlet)

我在没有web.xml的情况下解决了它,而是在servlet中使用了getRequestUrl();和一些正则表达式,但我仍然在寻找一个更干净的解决方案,因为这会导致很多if语句。

String uri = URLDecoder.decode( request.getRequestURI(), "UTF-8" ).toLowerCase();  
if(uri.matches("/users/(.*?)/edit")){
        Pattern pattern = Pattern.compile("/users/(.*?)/edit");
        Matcher matcher = pattern.matcher(uri);

        if (matcher.find())
        {
            String username = matcher.find(1);
            // Do stuff
        }
}

0 个答案:

没有答案