#springMVC框架之概览
引入依赖
<!--springMVC基于Servlert-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--编写jsp,发送请求-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<!--RequestBody ResponseBody注解使用
Springmvc 默认用 MappingJacksonHttpMessageConverter 对 json 数据进行转换,
需要加入 jackson 的包。mavne 工程直接导入坐标即可-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<!--测试助手-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
web.xml配置
<!-- 解决post中文乱码 (springmvc默认编码格式为“ISO-8859-1”,将收的中文参数(jsp上编码为utf-8))转成ISO-8859-1编码,造成乱码。get请求乱码需要修改tomcat的server.xml
-->
<filter>
<filter-name>CharacterEncodingFilter</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>
<!--启动过滤器 -->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!--拦截所有请求 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 拦截所有资源 a:/**/ a值一半 -->
<!-- <url-pattern>1/2a</url-pattern>-->
<!--拦截前端控制器servlet -->
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
</filter-mapping>
<!-- 配置MVC前端控制器-(就是一个servlet,接收所有请求) -->
<servlet>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
<!-- 配置初始化参数,用于读取 SpringMVC 的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:springMVC_config.xml</param-value>
</init-param>
<!-- 配置servlet创建时间,加载web.xml时创建,只能是正整数,表示启动顺序 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
MVC配置文件基本配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 配置创建 spring 容器要扫描的包 -->
<context:component-scan base-package="cn.itheima"></context:component-scan>
<!--配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp"></property>
<property name="prefix" value="/WEB-INF/pages/"></property>
</bean>
<!-- 类型转换工厂 -->
<bean id="converterService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!--的类型转换器集合 -->
<property name="converters">
<array>
<!--自定义转换类 -->
<bean class="cn.itheima.converters.StringToDateConverter"></bean>
</array>
</property>
</bean>
<!--文件上传配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 最大允许上传大小5MB -->
<property name="maxUploadSize" value="5242880" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
<!--异常处理器 -->
<bean id="handlerExceptionResovler" class="cn.itheima.exceptionResover.CustomExceptionResovler"></bean>
<!--拦截器配置 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="cn.itheima.incepters.CustomeInceperter"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!--静态资源放行:
DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,
包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<!-- 替代注解处理器和适配器的配置-->
<!-- 引用自定义类型转换器,适配器会将String === Date Controller预先经过自定义转换类 -->
<mvc:annotation-driven conversion-service="converterService"></mvc:annotation-driven>
</beans>
springMVC组件 | 作用 | 描述 |
---|---|---|
DispatcherServlet | 前端控制器:请求入口,相当于Servlet—收集所有请求 | 在web.xml配置 |
HandlerMapping | 映射器 | 负责请求和Controller建立关系 |
HandlerAdapter | 处理适配器 | 负责请求适配到相应的Controller |
Controller | 处理器 | 处理请求:接收参数,返回数据 |
ViewResolver | 视图解析器 | 将Controller返回的String解析成资源的物理地址 |