SpringMVC基于xml配置文件
SpringMVC概述
概述
SpringMVC是一个容器(类比Spring),用于管理对象。使用Ioc核心技术,SpringMVC管理界面层(V)的控制器对象。
SpringMVC底层也是一个Servlet,以Servlet为核心,接收请求、处理请求,显示处理结果给用户。
SSM框架处理流程:
用户发起请求->SpringMVC->Spring->MyBatis->数据库
DispatcherServlet
DispatcherServlet
是SpringMVC中的核心Servlet
DispatcherServlet
是框架的一个Servlet对象,负责接收请求,相应处理结果。
DispatcherServlet
也叫做前端控制器(Front Controller)。
SpringMVC是用于管理控制器对象的,在使用SpringMVC之前使用Servlet作为控制器对象使用。现在通过SpringMVC容器创建一种名为控制器的对象(Controller),代替Servlet的控制器角色。
Hello Springmvc
主要步骤
1、创建maven模板项目,选择maven-archetype-webapp
2、接入maven依赖:
1 | <!-- springmvc依赖 --> |
3、声明springmvc核心对象DispatcherServlet
web.xml文件中的配置内容:
1 | <!-- |
4、创建 SpringMVC 配置文件
在resource资源文件夹下创建配置文件,同Spring的配置文件
5、创建处理器对象
1 | /** |
6、配置SpringMVC.xml文件
1 |
|
7、创建视图文件
1 | <!-- 发出请求jsp --> |
上述程序存在的问题,show.jsp可通过地址直接访问,不安全。
解决方法:将需要收到保护的视图存放至web项目的WEB-INF
(该目录不可通过路径直接访问)目录下,即在该目录下新建目录view(自定义),将视图丢进该目录。
在Controller需要修改对应视图的地址。
扩展:修改视图解析器的注册
SpringMVC框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器InternalResouceViewResolver
中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。
使用:
1、在SpringMVC配置文件中申明视图解析器
1 | <!-- 申明视图解析器,帮助处理视图路径问题 --> |
Controller代码修改
1 | // modelAndView.setViewName(""); 指定视图,参数表示视图的完整路径 |
SpringMVC请求的处理过程
简单的处理过程:
- 用户发起
some.do
请求 DispatcherServlet
将请求分配给对于控制器(上述程序中为MyController控制器的doSome()控制方法)- 控制器处理完成并返回结果(程序中的ModelAndView对象)给
DispatcherServlet
- 处理完成后返回相应
解决SpringMVC中的乱码问题
使用springmvc内置过滤器
1
2
3
4
5
6
7
8
9
10
11
12
13<!-- 解决乱码问题 -->
<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>
<url-pattern>/*</url-pattern>
</filter-mapping>