特定域的多个Servlet

时间:2016-11-14 11:19:55

标签: java spring jsp servlets routing

所以我刚刚开始使用JSP和Spring,现在我有以下web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>JSP_HelloWorld</display-name>

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我的root-url&#34; /&#34;。现在是否可以创建第二个servlet,例如&#34; users&#34;,它用于对&#34; / users /&#34;的所有请求,例如&#34; / users / login& #34;将转到用户servlet,但&#34; / aboutus&#34;仍会转到默认的servlet?所以,当我在&#34; / users /&#34;我的控制器中只需要@RequestMapping("/login")而不是@RequestMapping("/users/login")。这甚至是拆分我的申请的好方法吗?

1 个答案:

答案 0 :(得分:1)

您应该为您正在使用的每个资源添加Controller。

在您的情况下,“user”是服务器正在处理请求的资源/实体,因此您应该按如下方式添加Controller,

 @Controller("/users")
 public UserContoller {

  //handler methods
  @RequestMapping(value = "/login", method = RequestMethod.POST)
  public String login(ModelMap model) {
        return "success";
  }
}

对于登录等其他一般用途,您可以使用另一个具有不同URL映射的控制器。

 @Controller
 public GeneralContoller {

   //handler methods
   @RequestMapping(value = "/login", method = RequestMethod.POST)
   public String login(ModelMap model) {
        return "success";
   }
}

您的web.xml servlet映射已足以满足您的所有要求,因为您的请求将根据该映射进行处理。