1 SpringMVC 入门
-
- 简介:
MVC
M:Model
V:View
C:Controller - servlet/action/controller
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
Spring MVC主要由DispatcherServlet、处理器映射【找控制器】、适配器【调用控制器的方法】、控制器【业务】、视图解析器、视图组成。
1.2 SpringMVC的原理
1.3 Spring入门案例
第一步:导入springmvc jar包
暂时先导入下面的jar包
第二步:在web.xml配置DispatcherServlet
<servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
第三步:在WEB-INF目录下创建DispatcherServlet-servlet.xml
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
</beans> |
第四步:配置DispatcherServlet-servlet.xml
<!-- 1. 配置处理器映射,springmvc默认的处理器映射器 BeanNameUrlHandlerMapping:根据bean的name属性的url去找handlerController --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 2. 配置处理器适配置器执行Controller --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 3.配置一个控制器 --> <bean name="/user.do" class="com.gyf.backoffice.web.controller.UserController"/> <!-- 4.配置springmvc视图解析器 视图解析器解析的视频路径为:前缀 + 后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views"/> <property name="suffix" value=".jsp"/> </bean> |
第五步:创建个Controller控制器
|
第六步:创建一个userList.jsp页面
第七步:运行项目,访问路径
|
1.4 Spring的执行流程
流程图
控制器处理适配器源码
SimpleControllerHandlerAdapter
1.5URL处理器映射【了解】
BeanNameUrlHandlerMapping
功能:寻找Controller
根据url请求去匹配bean的name属性,从而获取Controller
SimpleUrlHandlerMapping
功能:寻找Controller
根据浏览器url匹配简单url的key,key就是Controller的id找到Controller
测试路径:
http://localhost:8080/springmvc-demo01/user1.do
http://localhost:8080/springmvc-demo01/user2.do
http://localhost:8080/springmvc-demo01/user3.do
ControllerClassNameHandlerMapping
功能:寻找Controller
根据类名(MyController)类名.do来访问,类名首字母小写
测试
1.6 处理器适配器
SimpleControllerHandlerAdapter
功能:执行controller
调用controller里面方法,返回modelAndView
HttpRequestHandlerAdapter
执行控制器
负责调用实现HttpRequestHandler接口的控制器
|
|
http://localhost:8080/springmvc-demo01/user2.do |
注意:两个处理器适配器可以共存
1.7 命令控制器【了解】
Springmvc通过命令设计模式接受页面参数
添加页面
|
Command控制器
Info.jsp
views结构
DispatchServelt-sevlet配置文件
如果bean中配置name,都要加上/斜杠 |
测试
默认日期格式只能2017/10/11格式,其它格式接收参数会为空 |
|
乱码问题
POST请求乱码
<!-- 配置编码过滤器 --> <filter> <filter-name>EncodingFilter</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>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
GET请求乱码
Tomcat8 默认进行了url编码,get请求不乱码,Tomcat7会乱码
日期类型转换
springmvc默认接收的日期格式为yyyy/MM/dd,如果添加其它格式,只要重写一个方法,如图