Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets SpringMVCServlet映射,是否有可能/&引用;对于servlet 1和/服务器/";对于servlet 2?_Servlets_Spring Mvc_Mapping_Url Pattern - Fatal编程技术网

Servlets SpringMVCServlet映射,是否有可能/&引用;对于servlet 1和/服务器/";对于servlet 2?

Servlets SpringMVCServlet映射,是否有可能/&引用;对于servlet 1和/服务器/";对于servlet 2?,servlets,spring-mvc,mapping,url-pattern,Servlets,Spring Mvc,Mapping,Url Pattern,目前我有以下web.xmlconfig: <servlet> <servlet-name>Website</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servl

目前我有以下
web.xml
config:

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

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

现在我的问题是,当我尝试调用/server/api.json url时,服务器不会给出json响应,而是给出以下错误:

PageNotFound:1108 - No mapping found for HTTP request with URI [/WorldDefense/server/api.json] in DispatcherServlet with name 'Website'
这基本上意味着它试图在网站servlet中搜索/server/api.json,而不是在服务器serlvet中搜索,至于我的问题:有可能让这个设置正常工作吗?(So/server/to映射到服务器servlet,所有其他url组合映射到网站servlet)

编辑1 我更新了代码以反映Costi Ciudatu建议的更改,但仍然不起作用。我删除了@RequestMapping(“/server”),现在handleActionJson方法中只有@RequestMapping。两者都会导致这些错误:

10:57:26,046  WARN PageNotFound:1108 - No mapping found for HTTP request with URI [/WorldDefense/server/server/api.json] in DispatcherServlet with name 'Website'
10:57:40,509  WARN PageNotFound:1108 - No mapping found for HTTP request with URI [/WorldDefense/server/api.json] in DispatcherServlet with name 'Website'
根据tomcat日志的映射:

服务器servlet

11:03:49,655  INFO RequestMappingHandlerMapping:178 - Mapped "{[/api.json],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json],custom=[]}" onto public java.lang.String com.world2.worlddefense.server.controllers.ApiRequests.handleActionJson(javax.servlet.http.HttpServletRequest)
11:03:50,125  INFO RequestMappingHandlerMapping:178 - Mapped "{[/api.json],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json],custom=[]}" onto public java.lang.String com.world2.worlddefense.server.controllers.ApiRequests.handleActionJson(javax.servlet.http.HttpServletRequest)
网站servlet

11:03:50,380  INFO RequestMappingHandlerMapping:178 - Mapped "{[//*.html],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.world2.worlddefense.website.controllers.IndexController.showIndex()
11:03:50,381  INFO RequestMappingHandlerMapping:178 - Mapped "{[/login],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.world2.worlddefense.website.controllers.TempTestController.showTest()

您可以在同一
web.xml
中定义多个
DispatcherServlet
s,并根据需要映射它们。但是,servlet映射不应反映在控制器的
@RequestMapping
中。控制器始终映射到相对于servlet映射的路径;在您的情况下,如果您尝试
/worldDefense/server/server/api.JSON
,我认为您可以得到JSON响应

如果希望不同的控制器与这两个Dispatcher关联,则只需确保在相应的应用程序上下文中加载了适当的控制器:
Website servlet.xml
Server servlet.xml
,以防您遵守此约定

长话短说,ApiRequests的映射应该是“/”而不是“/server”,并且该控制器应该只包含在“server”调度程序上下文中


作为补充说明,从3.2.x开始,
.json
扩展由ContentNegotiationManager处理,因此您的控制器应该返回一些域对象,这些域对象将由Spring HttpMessageConverter机制透明地封送,从而能够毫不费力地生成json以外的媒体类型。

请参阅更新的问题,它仍然给我带来问题。此外,服务器和网站的控制器加载在各自的应用程序上下文(website-servlet.xml和serverservlet.xml)中
11:03:49,655  INFO RequestMappingHandlerMapping:178 - Mapped "{[/api.json],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json],custom=[]}" onto public java.lang.String com.world2.worlddefense.server.controllers.ApiRequests.handleActionJson(javax.servlet.http.HttpServletRequest)
11:03:50,125  INFO RequestMappingHandlerMapping:178 - Mapped "{[/api.json],methods=[GET],params=[],headers=[],consumes=[],produces=[application/json],custom=[]}" onto public java.lang.String com.world2.worlddefense.server.controllers.ApiRequests.handleActionJson(javax.servlet.http.HttpServletRequest)
11:03:50,380  INFO RequestMappingHandlerMapping:178 - Mapped "{[//*.html],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.world2.worlddefense.website.controllers.IndexController.showIndex()
11:03:50,381  INFO RequestMappingHandlerMapping:178 - Mapped "{[/login],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.world2.worlddefense.website.controllers.TempTestController.showTest()