我应该在web.xml中为休息和普通html创建两个不同的servlet条目

时间:2014-10-15 06:07:10

标签: java spring rest servlets web.xml

我正在写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。

  1. 的myapp / htmlUrl.html
  2. 的myapp / restUrl.html
  3. 的myapp /休息/ HTMLURL
  4. 的myapp /休息/ restUrl
  5. 如果我使用两个不同的servlet和单独的dispacherServlet,那么我是否必须在servlet.xml中输入spring的每个组件和服务?

    请指出公开其余网络服务的解决方案。

    谢谢!

2 个答案:

答案 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,因为随着时间的推移,类会变得复杂和冗长。这些可以用作前端控制器,并且可以在后端具有共同的逻辑类。