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 Spring MVC与传统web应用servlet共存时的行为_Servlets_Spring Mvc - Fatal编程技术网

Servlets Spring MVC与传统web应用servlet共存时的行为

Servlets Spring MVC与传统web应用servlet共存时的行为,servlets,spring-mvc,Servlets,Spring Mvc,我们有一个不使用SpringMVC的现有应用程序。我们决定保持现有功能不变,并通过诸如“/admin/*”的url为任何其他新功能添加SpringMVC 下面是web.xml映射: <servlet> <servlet-name>springRouted</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servle

我们有一个不使用SpringMVC的现有应用程序。我们决定保持现有功能不变,并通过诸如“/admin/*”的url为任何其他新功能添加SpringMVC

下面是web.xml映射:

<servlet>
    <servlet-name>springRouted</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>4</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springRouted</servlet-name>
    <url-pattern>/admin/*</url-pattern>
</servlet-mapping> 
<servlet-mapping>
   <servlet-name>ExistingServlet</servlet-name>
    <url-pattern>existing.do</url-pattern>
</servlet-mapping>

斯普林普劳特
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
类路径:spring/mvc-config.xml
4.
斯普林普劳特
/管理员/*
现有servlet
现有的

在现有servlet中,有一个对request.getRequestDispatcher().forward(“/admin/…jsp”)的调用,Spring会检测到这个forward,并报告一个无法找到“/admin/…jsp”映射的错误。它似乎在调用request.getRequestDispatcher().forward(“/admin/…jsp”)将使servlet容器重新检查web.xml并通过Spring的DispatchServlet重新路由。这是真的吗?我认为这种内部转发不会被Spring的DispatchServlet拦截A
RequestDispatcher
将根据部署描述符(web.xml)中的映射进行解析或者其他
Servlet
配置,基本上是所有Servlet映射

当你这样做的时候

 request.getRequestDispatcher("/admin/...jsp");
Servlet
容器找到用于处理该路径的
Servlet
(或其他资源),并将其包装在
RequestDispatcher
对象中。然后对返回的对象执行
RequestDispatcher#forward(…)
时,您正在执行
服务()
以前找到的
Servlet
方法

在您的示例中,这将是
DispatcherServlet
。如果您的
DispatcherServlet
配置为处理对
/admin/…jsp
的请求,则它将执行此操作。否则,它将抛出自己的自定义异常,以404响应HTTP请求