SpringMVC整体架构(执行原理),快速入门
1:SpringMVC简介

1:Spring体系简介

2:回顾MVC设计模式

service + mapper + pojo
3:SpringMVC的整体架构 - 执行原理 - 记住

1、 用户发起http请求到DispatcherServlet
2、 前端控制器通过HandlerMapping查找Handler(执行这个请求的人)
3、 映射器返回执行链(HandlerExecutorChain),包含2部分内容,一,Hadnler对象,二,拦截器(组)
4、 前端控制器通过适配器执行Handler
5、 执行业务逻辑
6、 返回ModelAndView,view不是真正的视图对象,是视图名称,model:模型数据
7、 将ModelAndView返回前端控制器
8、 前端控制器通过视图解析器查找视图
9、 返回真正的视图对象
10、 渲染视图
11、 返回渲染结果
12、 产生响应
2:快速入门
1:新建项目导入jar包
4个基本jar + 2个日志包+ 1个springmvc + 1个spring对web的支持包+jsp 4
2:创建和引入配置文件
引入log4J的配置文件
创建springmvc的配置文件
3:配置springmvc的配置文件
1)配置前端控制器
在web.xml中配置springmvc的前端控制器,并指定springmvc的配置文件位置,
其实springmvc的配置文件就是配置一个servlet, 同时指定请求的风格 ,
注意 : 因为springmvc是表现层框架,所以在项目启动的时候就需要加载配置文件。

1)配置springmvc文件
需要引入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:aop="http://www.springframework.org/schema/aop" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
配置映射器:BeanNameUrlHandlerMapping
配置适配器: SimpleControllerHandlerAdapter
配置Handler: 手动编写, id或者name 作为Handler作为请求的处理器
配置视图解析器:InternalResourceViewResolver

4:编写controller及配置

其实controller就是一个简单的类,想变成控制器的话,需要实现一个Controller的接口,并重写里面的方法,其实这个接口仅仅只有一个方法,默认就会去调用这个方法

5:请求流程回顾

3:springMVC的默认配置
在springmvc的源码配置文件中有很多的默认配置文件。可以到springmvc包下面的properties中查看。
已经关于映射器和适配器都已经有了相关的默认配置,同样试图解析器也有了默认的配置,
如果不配置视图解析器的话,则在controller,需要写页面的全称,默认的路径是web目录。
在springmvc的默认配置文件中,映射器,适配器,视图解析器都已经有了默认的配置,可以不用自己配置
注意:当使用springmvc的视图解析器默认配置的时候,就不能返回视图名称了,而是要返回全路径。
或者在添加视图名称的时候,写全路径即可
如:mv.setViewName(“forward:/WEB-INF/views/hello.jsp”)
4:springMVC的注解驱动
使用springMVC的注解驱动,简化配置
需要开启springmvc的注解驱动和配置扫描包。
注意:涉及到注解的话就要导入AOP的包。同时要将这个类声明为控制器 。
5:@RequestMapping详解
1:标准url


2:限定请求方式

6:SpringMVC封装请求参数
1:绑定Servlet内置对象

2:接受数据类型

当客户端有数据传递到服务器端的时候,服务器端也确实需要这个参数,那么可以在对应的方法中,通过在方法参数列表中声明来接受。
注意:此时在参数列表中声明的参数名称应该是传递过来的key,名称要保证一致,如果不一致,可以使用@RequestParam(“name”)注解进行声明;
3:@RequestParam绑定参数
当客户端有数据传递到服务器端的时候,可以直接在对应的方法中,通过在方法参数列表中声明来接受,springmvc自动接受,然后封装到对应的变量中。
注意:一定要保证传递过来的key和方法声明中的形参保持一致,如果不一致将接受不到,此时可以使用@RequestParam(“name”)注解进行声明;
注解中name就是传递过来值的key,也可以写成@RequestParam(value=“name”)

4:@ CookieValue,获取cookie的值

5:POJO对象绑定参数
SpringMVC会将请求过来的参数名和POJO实体中的属性名进行匹配,如果名称一致,将把值填充到对象中。
不需要自己进行接受封装,spring会将参数直接封装在pojo对象中,只需要在对应方法的参数列表中声明需要接受的对象类型即可,同时还会将对象添加到请求域中。
如果在客户端多出了一些对象无法封装的数据,此时则需要自己在方法的参数列表中进行声明,对象只封装那些可以封装的参数。
比如在添加用户和修改用户的时候,就不需要自己在去接受了。
6: 使用HashMap封装数据
6:总结:
Springmvc接受参数总结:
1、参数很少,可以直接在方法的参数列表中直接进行声明即可,注意传递的参数key需要和列表中的形参一致,如果不一致需要使用@RequestParam(“name”)来声明
2、参数比较多的话,可以封装成对象,此时可以在方法的参数列表中声明对象来接受
3、参数较多,使用1个对象无法完成接受的话,可以先试用对象接受,然后在对象后面继续声明
4、参数比较多,使用对象无法简洁封装的话,这个时候可以使用HashMap来实现封装,但是在HashMap前面需要使用@RequestParam来告诉框架需要将参数封装在Map中
7:SpringMVC与Struts2的区别


浙公网安备 33010602011771号