我正在写spring spring mvc application。
在我的应用程序中,我有网页以及其他Web服务来处理ajax调用。
我在web.xml
中输入了以下内容<servlet>
<servlet-name>myapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring_myapp-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myapp</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
我应该使用与
相同的servlet映射我的rest url<servlet-mapping>
<servlet-name>myapp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
或者我应该让新的servlet条目休息。
我已经在pom.xml中为“org.codehaus.jackson”完成了所需的条目,并且我在spring_myapp-servlet.xml中创建了必需的条目。
对于html页面,我在控制器中使用下面的代码
@RequestMapping(value = "/htmlUrl")
public ModelAndView ModifyValiodation(HttpServletRequest request) {
// my code
}
对于休息服务我正在使用
@RequestMapping(value = "/restUrl")
public @ResponseBody Map<String, String> restUrl(HttpServletRequest request) {
// my code
}
如果我只使用一个servlet进行两个url映射,那么将会产生总共4个url。
如果我使用两个不同的servlet和单独的dispacherServlet,那么我是否必须在servlet.xml中输入spring的每个组件和服务?
请指出公开其余网络服务的解决方案。
谢谢!
答案 0 :(得分:0)
使用
<servlet-mapping>
<servlet-name>myapp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
如果使用两个DispatcherServlet条目,它将在您的应用程序中加载两个ApplicationContext对象。由于您使用spring mvc来处理对应用程序的所有请求,因此您应该可以使用此配置。任何以.html结尾的请求网址或任何包含/ rest /的网址都将由spring处理。
答案 1 :(得分:0)
由您来设计基础架构的服务器端。
RESTful规范都没有任何执行此操作的说明,也没有Servlet规范强制执行此操作。
在Applications设计上,我认为最好保留两个不同的servlet来处理不同的URL,因为随着时间的推移,类会变得复杂和冗长。这些可以用作前端控制器,并且可以在后端具有共同的逻辑类。