springMVC框架原理
- 发起请求到前端控制器,
- 前端控制器请求handlerMapping查找Handler,xml配值,注解,
- 处理器映射器handlermapping返回handler
- 前端控制器请求处理器适配器执行handler,
- 执行handler
- 返回ModelAndView给适配器
- 适配器返回前端控制器,
- 请求视图解析器进行视图解析,
- 返回前端控制器view
- 前端控制器进行渲染,
- 前端控制器响应。
SpringMVC各组件配置
- 在web.xml配置前端控制器
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!-- 让servlet随服务启动 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/代表的拦截所有,可以springmvc.xml中配值,静态资源地址,避免其拦截静态资源。
同时在web.xml中配值springmvc.xml配置文件的地址
<servlet>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/springmvc.xml</param-value>
</init-param>
</servlet>
- 配置控制器
@Controller
public class IndexController{
@RequestMapping("/")
public String IndexPage(){
return "index";
}
}
springmvc的配值文件中解析前缀和后缀,会把视图名还原为实际的jsp地址
- SpringMVC配值
<!-- 配置适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 处理器映射器 -->
<!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 配置处理器 -->
<bean name="/hello.action" class="com.mt.controller.Hello"></bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
同时可以将请求定义在类基本上,这样就可以将RequestMapping进行拆分
网友评论