注解开发
配置文件
配置web.xml文件
配置listener监听器

具体作用在执行流程说明。
配置servlet标签

包含主配文件的位置和名称,以及处理请求的类型。
配置servlet.xml文件
启动注解
<!-- 启用spring mvc 注解 -->
<context:annotation-config />
设置注解作用域
<!-- 设置使用注解的类所在的包 可以通过扫描,创建后端控制器 -->
<context:component-scan base-package="com.asm"></context:component-scan>
PS:component-scan默认扫描@Controller、@Service、@Repository、@Component标识的类
配置请求分派器
<!-- 请求分派器(前端控制器) 完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
配置视图定位器
<!-- 视图定位器 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
配置示例:

注释后端控制器
@Controller
标识后端控制器 不需要实现任何接口

@RequestMapping和@RequestParam
- @RequestMapping用来标识请求对应的方法;
- @RequestParam用于当表单的请求参数名和方法中形参不一致时,将指定的请求参数赋给方法中形参。
注:若形参名和表单提交的参数名一致,参数自动注入,无需使用@RequestParam注释形参
PS:方法的返回值不一定要是ModelAndView,可以是包含转向信息的字符串,如上图。
使用ModelAndView对象传递转向信息:
使用客户端(重定向)跳转
Spring MVC默认的跳转方式是服务端跳转。
通过ModelAndView对象可以采用重定向的方式跳转页面:

PS:使用重定向,无需经过视图定位器对转向信息进行组合。
使用表单对象作为方法参数
Spring MVC支持方法的形参为表单对象。

执行该方法时:
- 自动创建出对应的对象;
- 自动将表单中的参数设到对象中的同名属性,不同类型的数据将进行自动转换;
- 自动将对象设到request中,属性名为变量名属性值为该表单对象;
注:表单对象必须为每个属性提供setter、getter方法。
Spring和Spring MVC集成
配置文件
如果Spring使用配置方式开发,则需配置Spring配置文件的位置,如果是注解方式,则无需配置。
在web.xml文件中添加全局初始化参数:

@Resource
使用@Resource标识关联属性

对象创建后,自动给关联属性注入数据:
- 到application中拿bean工厂;
- 从bean工厂中找id为@Resource中name的值对应的对象,将对象注入给关联属性。
执行流程
初始化
假设使用Tomcat服务器
- Tomcat启动,创建监听器对象;
- Tomcat创建application内置对象,读取全局初始化参数,设到application中;
- 监听器监听到application创建,自动调用contextInitialized方法,通过传入的事件对象拿到application;
- 从application中拿到全局初始化参数,根据初始化参数创建bean工厂,启动IOC容器, 创建bean工厂中配置的对象,并将bean工厂设到application中;
- Tomcat读取servlet标签,创建DispatcherServlet对象,执行init方法,读取主配文件,创建web工厂:
① 通过web工厂中的component-scan扫描,创建后端控制器对象;
② 创建请求分派器对象;
③ 创建视图定位器;
注:使用Spring注解开发时,直接根据配置类创建出bean工厂。
处理请求
Tomcat收到请求:
- Tomcat将请求传给DispatcherServlet对象;
- DispatcherServlet截取请求,将请求传给web工厂中的请求分派器;
- 请求分派器到web工厂中找后端控制器(@Controller 标签);
- 通过@RequestMapping标签,将请求映射到对应的方法中;
- 向方法中注入参数,并执行;
- 方法执行结束后,返回转向信息给请求分配器;
- 请求分派器根据通过视图定位器组合后的转向信息,进行服务端跳转。
说明:本文仅用作学习笔记,无其他用途,如有冒犯可联系本人删除
版权声明:本文为m0_50489432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。