多个DispatcherServlet有什么用处.md

简介: 有看到一些应用在 web.xml 文件中配置了多个 DispatcherServlet,例如:    en    org.springframework.web.servlet.DispatcherServlet    1    ib    org.

有看到一些应用在 web.xml 文件中配置了多个 DispatcherServlet,例如:

<servlet>
    <servlet-name>en</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet>
    <servlet-name>ib</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
    <servlet-name>en</servlet-name>
    <url-pattern>/en/*</url-pattern>
</servlet-mapping>
 
<servlet-mapping>
    <servlet-name>ib</servlet-name>
    <url-pattern>/ib/*</url-pattern>
</servlet-mapping>

这两个 servlet 起到的作用是请求的时候url路径不一样,比如 http://ip:port/en/index.jsp 与 http://ip:port/ib/index.jsp。
实际上这个功能可以通过只定义一个缺省的 dispatcherservlet,然后通过 @RequestMapping 注解区分路径,如下所示:

<servlet>
    <servlet-name>en</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
@RequestMapping("/en")
public class EnController{}
@RequestMapping("/ib")
public class EnController{}

因此定义多个 dispatcherservlect 实际上是没有什么特别的用处的,并且还是得要考虑,不同的DispatcherServlet 的 url-pattern 是否会相互影响。
多个DispatcherServlet的应用场景,可能是引入了第三方的jar包,而对方的接口与项目的冲突了,通过 DispatcherServlet 来解决。但是如果出现这种情况,只能说明第三方的jar包的restful接口并太随意了,完全没有考虑第三方引用的情况。
目前是没有想到一定要使用多个 DispatcherServlet 的必要性

目录
相关文章
|
前端开发 Java 应用服务中间件
配置SpringMVC的前端控制器DispatcherServlet时,<url-pattern>中“/“和“/*“的区别
配置SpringMVC的前端控制器DispatcherServlet时,<url-pattern>中“/“和“/*“的区别
|
前端开发 Java 开发者
Dispatch 设计| 学习笔记
快速学习 Dispatch 设计。
134 0
Dispatch 设计| 学习笔记
|
Java Spring
05DispatcherServlet的初始化策略
流程回顾及后续规划 接收到spring之后回调之后的初始化策略
133 0
|
XML 存储 前端开发
02创建DispatcherServlet来处理所有的请求
1.Servlet的生命周期 2.DispatcherServlet的类结构体系 3.让DispatcherServlet来处理所有的请求
264 0
|
前端开发
DispatcherServlet源码注解分析
DispatcherServlet源码注解分析
149 0
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
311 0
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
|
设计模式 开发框架 前端开发
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
257 0
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
SpringMVC源码解析从service到doDispatch(上))
SpringMVC源码解析从service到doDispatch(上))
160 0
SpringMVC源码解析从service到doDispatch(上))
|
前端开发 Java 开发者
Dispatch设计|学习笔记
快速学习Dispatch设计
Dispatch设计|学习笔记
DispatcherServlet请求流程解析-doDispatch(三)
上篇文章我们主要看了DispatcherServlet在提供服务之间做的初始化工作,大部门工作都在WebApplicationContext中完成,然后WebApplicationContext是DispatcherServlet的一个属性。