2 回答
TA贡献1830条经验 获得超9个赞
这个是spring父子容器的问题吧,SpringMVC的spring-mvc.xml负责@Controller注解的Bean的注册,Spring父容器的applicationContext.xml负责其他非@Controller注解的Bean的注册,可以把全部配置陪在子容器里面.如果把全部Bean在父容器注册,源码里面会导致从子容器中取不到注册的Controller从而找不到Handler,所以访问controller会是404.
TA贡献1863条经验 获得超2个赞
</servlet-mapping>
这个是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处
DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
通过ViewResolver解析逻辑视图名到具体视图实现;
本地化解析;
渲染具体的视图等;
如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。
load-on-startup:表示启动容器时初始化该Servlet;如果它存在,则它将在应用程序启动时装在servlet并调用它的init方法。若不存在,则在该servlet的第一个请求时加载。
url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。
该DispatcherServlet默认使用WebApplicationContext作为上下文,Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”。
<listener>
添加回答
举报