如何正确映射我的servlet?

时间:2013-10-29 19:45:11

标签: java servlets spring-mvc configuration

我有这两个控制器:

@Controller
@RequestMapping("/controllerPath")
public class MyController {

    @RequestMapping("/sayHello")
    public String sayHello(Model model){
        ...
    }

}

@Controller
@RequestMapping("/restControllerPath")
public class RestController {

    @RequestMapping (value = "importantObject", method = RequestMethod.GET)
    @ResponseBody
    public  VeryImportantlClass getInformation(){
        ...
    }
}

第一个控制器呈现为jsp

第二个返回JSON。

因此,我希望为此控制器提供不同的配置

我在web.xml中写了以下内容:

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
                  org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>mvc-dispatcher-rest</servlet-name>
        <servlet-class>
                  org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/controllerPath/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>mvc-dispatcher-rest</servlet-name>
        <url-pattern>/restControllerPath/*</url-pattern>
  </servlet-mapping>

当我从浏览器发送http请求时,我看到404

如果我只对一个servlet使用so style(下面):

<servlet-mapping>
            <servlet-name>mvc-dispatcher-rest</servlet-name>
                <url-pattern>/</url-pattern>
          </servlet-mapping>
  • 控制器方法调用,我看到了良好的结果。

如何使用第一种样式重写它?

1 个答案:

答案 0 :(得分:0)

mvc-dispatchermvc-dispatcher-rest都加载了相同的servlet。

所以,你不需要两个条目。只需使用单个条目并将根上下文/映射到servlet。