环境配置
pom.xml文件中添加依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</denpendency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</denpendency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</denpendency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</denpendency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
配置文件web.xml的编写:
servlet-mapping中的 / 表示拦截所有的域名
<web-app>
<display-name>Diff Server</display-name>
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 字符编码过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<filtere-pattern>/*</filtere-pattern>
</filter-mapping>
</web-app>
配置文件spring.xml的编写
在配置视图解析器对象时,prefix属性代表扫描的目录,suffix目录代表扫描的文件后缀名
简介
MVC简介:
MVC设计模式就是将web层进行解耦,将复杂的web应用分解成职责清晰的几部分,方便开发和维护。
MVC即Model View Controller,模型-视图-控制器,MVC解决的是三层架构(Controller, Service, Dao)的表示层/控制层(Controller)的问题。
SpringMVC中的重要组件:
- DispatchServlet:前端控制器,接收所有请求(如果配置/不包括jsp)
- HandlerMapping:解析请求格式,判断需要执行哪个方法
- HandlerAdapter:负责调用具体的方法
- ViewResovler:视图解析器。解析返回结果,准备跳转到具体的物理视图
SpringMVC运行原理图
常用注解
@RequestMapping:属性:path—匹配路径 注解后,方法的返回值是对应的jsp页面名称。
method 设定请求拦截get方法(RequestMethod.GET)还是post(RequestMethod.POST)方法,默认都可以拦截
被@RequestMapping标注的方法可以在传入的形参中设置Request用来接收request对象,还可以直接接收参数,但参数名必须与传入的参数名相同。还可以设置一个实体类,让实体类中的属性名等于传入参数名,此时输入参数会被封到一个对象中。
@ResponseBody:将当前方法的返回值直接作为返回response的body对象解决和Ajax相互调用的问题。
@RequestBody:表示当前方法接收请求body中的json字符串,并转换为Java对象。
主要组件
前端控制器 DispatcherServlet 负责拦截请求,不需要我们开发
处理器映射器 HandlerMapping 负责解析请求的url,匹配相应的Handler。
处理器适配器 HandlerAdapter 负责执行映射器匹配的Handler。
处理器 Handler 负责执行具体的逻辑,需要我们开发
视图解析器 ViewResolver
视图 View 前端视图,需要我们开发。
综上可以看出,在使用时,后端开发人员只需要开发处理器Handler,通过@RequestMapping注解和输入参数实现请求和Handler的匹配,一个请求对应一个方法。
由于Spring MVC的控制器是单例的,为了保证线程安全,在控制器中不能写字段。