Java 一个web.xml中的两个DispatherServlet
我编写了SpringMVC应用程序 我有两个控制器。我想处理不同的dispatcherservlet实例 我怎样才能做到 控制器1:Java 一个web.xml中的两个DispatherServlet,java,spring,rest,spring-mvc,web.xml,Java,Spring,Rest,Spring Mvc,Web.xml,我编写了SpringMVC应用程序 我有两个控制器。我想处理不同的dispatcherservlet实例 我怎样才能做到 控制器1: @Controller @RequestMapping("/controllerPath") public class MyController { @RequestMapping("/sayHello") public String sayHello(Model model){ ... } } 控制器2: @Cont
@Controller
@RequestMapping("/controllerPath")
public class MyController {
@RequestMapping("/sayHello")
public String sayHello(Model model){
...
}
}
控制器2:
@Controller
@RequestMapping("/restControllerPath")
public class RestController {
@RequestMapping (value = "importantObject", method = RequestMethod.GET)
@ResponseBody
public VeryImportantlClass getInformation(){
...
}
}
我需要在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>
其他尝试:
<servlet-mapping>
<servlet-name>mvc-dispatcher-rest</servlet-name>
<url-pattern>/restControllerPath/**</url-pattern>
</servlet-mapping>
mvc调度程序rest
/restControllerPath/**
上面的变体是-404
但是
<servlet-mapping>
<servlet-name>mvc-dispatcher-rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
mvc调度程序rest
/
工作方式您只需要一个DispatcherServlet 它可以同时处理REST控制器和JSP呈现
<servlet>
<servlet-name>jspservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jspservlet</servlet-name>
<url-pattern>/controllerPath/**url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/user-webservice-beans.xml
</param-value>
</context-param>
<servlet>
<servlet-name>user-webservice</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>user-webservice</servlet-name>
<url-pattern>/restControllerPath/**</url-pattern>
</servlet-mapping>
jspservlet
org.springframework.web.servlet.DispatcherServlet
1.
jspservlet
/controllerPath/**url模式>
上下文配置位置
/WEB-INF/applicationContext.xml
/WEB-INF/user-webservice-beans.xml
用户Web服务
org.apache.cxf.transport.servlet.CXFServlet
2.
用户Web服务
/restControllerPath/**
无法理解为什么需要两个单独的dispatcher servlet,但web.xml配置应类似于:
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/controllerPath/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet2</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Servlet2</servlet-name>
<url-pattern>/restControllerPath/*</url-pattern>
</servlet-mapping>
Servlet1
org.springframework.web.servlet.DispatcherServlet
1.
Servlet1
/控制器路径/*
Servlet2
org.springframework.web.servlet.DispatcherServlet
1.
Servlet2
/restControllerPath/*
您需要将2个dispatcher servlet配置为具有不同的配置上下文,否则spring会感到困惑。以下是我们对此的定义:
<servlet>
<servlet-name>web-spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/web-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>api-spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/api-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>web-spring-mvc</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>api-spring-mvc</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
WebSpringMVC
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring/WEB-servlet.xml
1.
api spring mvc
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring/api-servlet.xml
1.
WebSpringMVC
/网/*
api spring mvc
/原料药/*
您应该能够使用这种类型的配置,只需更改上下文和url模式以满足您的需要
请注意,两个控制器都需要将
@RequestMapping
更改为@RequestMapping(value=“/”)
,才能工作。为什么需要2个dispatcher servlet?第二个是rest web服务,第一个是呈现到JSPY您说需要2个dispatcher servlet,但在我的回答中,您说需要一个。你能更新你的问题来澄清你真正想要的是什么吗?我想要不同的配置不同的*-servlet.xml文件为什么你想要这样?好处是什么?是的,你说了你为什么要这样。但是想要好处吗?它不会使任何事情更快…一个项目由RESTWeb服务和standart jsp组成。对itI使用不同的配置请参见404,我需要一个控制器-一个DispatcherServlet
<servlet>
<servlet-name>web-spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/web-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>api-spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/api-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>web-spring-mvc</servlet-name>
<url-pattern>/web/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>api-spring-mvc</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>