目录
一、SpringMVC概述
Spring MVC是在使用Spring进行WEB开发时的轻量级控制器框架。
可以和Spring框架无缝整合(SpringMVC无法单独使用,所以一开始就是一个SS整合【Spring+SpringMVC】)。
运行效率远高于Struts2框架(主要原因之一是SpringMVC的Controller是单例的而Struts2的Action不是单例的)。
注解式开发可以更高效。
二、SpringMVC运行原理
Struts2 与 SpringMVC 对比
# 简要步骤分析
1. 请求被DispatcherServlet接收。
2. DispatcherServlet使用RequestMappingHandlerMapping对象来把请求路径对应到某个Controller方法上。
3. DispatcherServlet使用RequestMappingHandlerAdapter对象来对请求参数进行解析,也传入相应的Controller方法中。
4. 根据Controller的不同返回值做不同处理,如果返回的是“页面逻辑名”(也可以称为“视图逻辑名”),则会交给InternalResourceViewResolver对象进行进一步处理。
三、环境搭建
1.引入依赖
<!--spring相关--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!--springmvc,要和spring的版本保持一致--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.2.RELEASE</version> </dependency> <!--JavaEE--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!--jstl--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
2.springmvc配置文件
旧版本传统开发方式(了解即可,功能较少,不推荐使用):手动注册理器映射器、处理器适配器和视图解析器(SpringMVC三大组件)。
新版本标准开发方式(练环境搭建只练这个就行):使用mvc命名空间的注解驱动注册处理器映射器和处理器适配器,然后手动注册视图解析器。
3.web.xml配置
4.控制器基本开发
另外,@RequestMapping还支持以下写法:
@RequestMapping
、@GetMapping
、@PostMapping
、@PutMapping
、@DeleteMapping
的value属性值为访问路径。
@RequestMapping
只做路径匹配,其他的会进行路径和请求方式的双重匹配(会在后面的课程详细讲)。无论以何种形式书写
@XxxMapping
的value属性值,Controller方法的访问路径永远是类的访问路径加方法的访问路径,访问路径一定是/
开头。
四、SpringMVC中的跳转
这一部分需要彻底记住!!!
Controller跳转到JSP
forward:
return "页面逻辑名"
redirect:
return "redirect:/xxx.jsp"
(redirect不会经过视图解析器,jsp路径要写全)
Controller跳转到Controller(无论被跳转到的Controller在什么位置,路径要写全)
forward:
return "forward:/a/b"
redirect:
return "redirect:/a/b"
如果要使用request作用域携带数据,必须是forward跳转。当A和B两个业务没有直接关系时,A跳转到B多数情况下是redirect。