springmvc01standard.docx
- 文档编号:23156842
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:23
- 大小:855.71KB
springmvc01standard.docx
《springmvc01standard.docx》由会员分享,可在线阅读,更多相关《springmvc01standard.docx(23页珍藏版)》请在冰豆网上搜索。
springmvc01standard
day01springmvc入门
课程计划:
1、springmvc介绍和框架原理
2、springmvc入门程序
3、ssm整合
4、springmvc参数绑定
5、springmvc与struts2的区别
1springmvc介绍和框架原理
1.1springmvc介绍
Springwebmvc和Struts2都属于表现层的框架,它是Spring框架的一部分(springmvc与spring之间无需整合),我们可以从Spring的整体结构中看得出来,如下图:
1.2什么是mvc
MVC的全名ModelViewController,即模型-视图-控制器的缩写,这是一种设计模式,而非架构。
MVC它强制的使用应用程序的输入、处理、和输出分开,这三个核心组件分别处理各自的的任务,最典型的MVC模式就是:
jsp+servlet+javabean的模式
用户的请求通过servlet(controller、service、dao)处理后,通过将数据库的信息映射成对应的javabean,并将该数据在页面显示(view),这就是一个最基本的MVC的模式。
这种设计模式的好处:
降低的各模块之间的耦合性(如果视图层需要改变其代码,修改页面样式,就不涉及到controller和model层代码;如果需要修改业务逻辑,这个时候是不需要修改与其相关的view视图代码等);重用性高:
多个视图可以共享一个数据模型,比如pc端下单和移动端下单,虽然订购的方式不一样,但是处理该数据的方式都是一样的;可维护性高等优点。
该模型基于Mvc的实现,在此模型中,由Servlet充当Controller层,Jsp只负责数据的显示,即view层,而JavaBean则负责封装数据,即Model层.此种模型的特点是,对于每一个响应用户请求的Servlet都必须配置到web.xml中,且对于页面转发或重定向仍然是在Servlet中书写硬编码,不利于转发目标的维护,同时,如果要支持国标化\文件上传\等功能,必须收程序员自己完成.
1.3struts2框架原理
1.客户端发起一个请求(*.action)
2.主控器FilterDispatcher拦截请求
3.主控器通过ActionMapper判断请求是否交给action处理.如果是,那么判断请求的action是否存在,如果不存在,报404错误.
4.主控器创建ActionProxy对象,这个对象全权负责action的执行.
5.ActionProxy通过ConfigurationManager对象获得当前访问的action的相关配置信息.
6.ActionProxy根据获得的action的配置信息,创建ActionInvocation对象.
7.ActionInvocation对象负责执行action前面的拦截器以及action对象,并且处理action执行后的结果.
8.action前面的拦截器被执行,最后执行action.
9.ActionInvocation得到action执行后的逻辑视图,根据逻辑视图找到物理视图,然后转发请求.
1.4springmvc框架原理
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
2springmvc入门程序---基于注解开发
2.1需求
查询商品的列表信息(暂时使用静态数据)。
2.2环境搭建
过程:
略
1、创建web工程
2、导入jar包
2.3创建商品的pojo
这里的商品信息我们直接从逆向工程中copy。
2.4编写Controller
1、@Controller注解:
我们都知道,在开发Struts2时我们都是编写的Action,而且编写的Action类能让Struts2框架的执行需要继承ActionSupport。
那么我们这里编写的Controller能够让springmvc框架执行我们需要在该类上添加@Controller注解(或者实现Controller或者HttpRequestHandler接口)即可。
2、@RequestMapping注解:
配置访问请求的url。
2.5编写jsp页面
2.6配置web.xml
1、配置springmvc的前端控制器
2、配置请求url的拦截格式
2.7编写springmvc.xml
作用:
1、配置扫描器
2、配置处理器映射器
3、配置处理器适配器
4、配置视图解析器
2.8加载springmvc.xml配置文件
2.9启动测试
success。
2.10优化
1、当我们访问请求时,才初始化springmvc的前端控制器,这样会降低用户的请求速度。
因此我们让改springmvc的前端控制器在tomcat容器启动时初始化比较合适。
2、优化视图解析器
3、注解驱动
3ssm整合
3.1整合思路
3.2环境搭建
3.2.1导入jar包
分析需要哪些jar包:
jsp层、controller层、service层、dao层、数据库
3.2.2创建工程的目录结构
3.2.3准备资源文件
3.2.4编写mybatis的全局配置文件
3.3编写配置文件
3.3.1编写applicationContext-mapper.xml
作用:
管理mybatis。
1、加载外部资源文件
2、管理数据源
3、管理SQLSessionFactory
4、管理批量代理对象
3.3.2编写applicationContext-service.xml
作用:
管理service。
3.3.3编写applicationContext-transaction.xml
3.3.4编写springmvc.xml
1、扫描controller
2、基于注解驱动的处理器映射器和适配的配置
3、配置视图解析器
4、加载所有的配置文件
3.3.5编写web.xml
3.4dao层开发
3.4.1copy逆向工程代码
略。
3.4.2创建两个pojo
3.4.2.1创建ItemsCustom
作用:
扩展items。
让程序更加灵活。
3.4.2.2创建ItemsQueryVo
作用:
包装类型的pojo,用于包装页面传递过来的条件。
3.4.3编写mapper接口
3.4.4编写mapper映射文件
3.5service层开发
3.5.1编写service接口
3.5.2编写实现类
3.6编写controller层
3.7添加jsp页面
3.8启动测试
success。
4springmvc的参数绑定
4.1概念
springmvc的参数绑定就是将请求的key/value或者form表单数据,通过springmvc参数绑定的特性将其绑定到对应Controller方法的形参上,该过程主要是通过HandlerMethodArgumentResolver类处理。
在参数绑定的过程中,如果将请求的数据与绑定到controller方法形参数据类型不一致,我们可以通过类型转换器来处理,即Converter实现。
4.2默认支持的参数绑定
例如:
如果需要request、response、model这些对象时,我们可以直接在方法的形参中添加这些变量。
4.2.1HttpServletRequest
通过request对象获取请求信息
4.2.2HttpServletResponse
通过response处理响应信息
4.2.3HttpSession
通过session对象得到session中存放的对象
4.2.4Model/ModelMap
model是一个接口,modelMap是一个接口实现。
作用:
将model数据填充到request域。
4.3基本类型的参数绑定
4.3.1需求
修改商品信息
4.3.2特点
请求url的key的名称必须与controller方法的形参一致。
4.3.3修改jsp页面的请求路径
4.3.4编写service接口、实现类
接口:
实现类:
4.3.5编写controller
4.3.6添加jsp页面
略。
4.3.7@RequestParam注解
特点:
1、value:
如果请求的key的名称与形参名称不一致可以通过该注解实现
2、required:
无请求参数key:
required默认值为true,即请求url后必须有参数。
3、defaultValue:
设置默认值,如果key有值默认值无效
4.4与pojo的参数绑定
4.4.1需求
更新用户
4.4.2特点
form表单中的input中name的值必须与controller形参pojo的属性名完全一致才能完成绑定。
4.4.3修改jsp页面的请求路径
4.4.4编写service接口、实现类
接口:
实现类:
4.4.5编写controller
注意:
springmvc4.0之后的版本中,如果类型不一致pojo无法完成绑定,例如时间字符串与date类型绑定。
在4.0之前是可以的,只是结果不正确。
4.4.5.1post提交乱码
4.4.5.2类型转换错误
原因:
string无法与date类型完成绑定。
解决:
自定义类型转换器---实现converter接口。
加载自定义类型转器。
4.4.5.3完善controller
4.4.6添加success页面
略。
4.5与包装类型的pojo参数绑定
4.5.1需求
根据商品名称查询
4.5.2修改jsp页面
4.5.3更新controller
5Struts2与springmvc区别
5.1使用上
DispatcherServlet---StrutsPrepareAndExecuteFilter
Handler(实现Controller或者HttpRequestHandler)---Action(继承ActionSupport)
HandlerInterceptor---Interceptor,由于sping是面向切面的编程,因此拦截器在spring中被弱化
HandlerMethodArgumentResolver-Model,spring通过参数绑定,而Struts2通过模型驱动或者属性驱动获取数据
ViewResolver解析---通过配置result指定一个具体的页面
5.2本质上
1、springMVC基于方法的开发,我们可以通过我们的代码中,我们没有所谓的数据域对象,除了引用的service就只有方法,而Struts2是基于类的开发,该类中有各种各样的全局变量,因此我们说Struts2基于类的开发。
2、springMVC可以单例开发,并且建议单例开发,因为springMVC通过controller的形参接收数据,方法结束后形参数据销毁;而Struts2则是通过模型驱动或者属性驱动获取数据,而且这些变量都是全局变量,因此Struts2是多例开发。
3、经常会说Struts2框架性能不好,是由于使用了Struts2的标签,从而加载很多的服务导致所谓的框架慢,所以我们建议使用页面使用jstl
4、所谓框架的性能,是与提供的服务的多少有关,而不是根据包的大小有关。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- springmvc01standard