SSM框架01--springmvc
springmvc的原理
springmvc的结构组成
一个中心
前端控制器 DispatcherServlet 负责请求的转发和响应的提交
三大组件
处理器映射器 HandlerMapping 负责根据url查找Handler
处理器适配器 HandlerAdapter 负责执行Handler
视图解析器 View resolver 负责解析view
经典MVC结构原理
以SSH框架为例
springmvc框架原理
springmvc的执行流程
1. 用户发起请求,请求到DispatcherServlet前端控制器
DispatcherServlet(中央调度),负责request和response,调用处理器映射器查找Handler,调用处理器适配器执行Handler,有了前端控制器降低了各各组件之间的耦合性,系统扩展性提高。
2. DispatcherServlet前端控制器请求处理器映射器HandlerMapping查找Handler
根据用户请求的url,根据一定的规则去查找(比如:xml配置,注解)
3. HandlerMapping处理器映射器将Handler返回给前端控制器
4. DispatcherServlet前端控制器调用HandlerAdapter处理器适配器
5. HandlerAdapter处理器适配器执行Handler
6. Handler执行完成,返回ModelAndView
ModelAndView是springmvc的封装对象,将model和view封装在一起。
7. HandlerAdapter处理器适配器将ModelAndView返回给前端控制器
8. 前端控制器调用视图解析器,进行视图解析,解析完成给前端控制器返回View
View是springmvc的封装对象,是一个接口,实现类包括jspview,pdfview……
9. 前端控制器调用view进行视图渲染,将模型数据填充到view(将model数据填充到request)响应给用户
10、前端控制器响应给用户
springmvc开发应用
配置式的springmvc开发
1. 在web.xml文件中配置springmvc前端控制器
contextConfigLocation指定 springmvc的全局配置文件 如果 contextConfigLocation不指定,默认找配置文件名称:servlet的name+"-servlet.xml"
1. 在springmvc.xml文件中配置三大组件
配置处理器映射器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
配置处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
2. 编写Handler
由于使用SimpleControllerHandlerAdapter适配器,要求编写的Handler实现Controller接口。
3. 编写jsp页面
4. 配置Handler
由于使用处理器映射器BeanNameUrlHandlerMapping,要求在spring的容器配置Handler,Handler的name就是url。
<bean id="hello_controller"name="/helloworld.action" class="cn.itcast.springmvc.Hello"/>
配置式开发的注意事项
1. Handler的编写和配置要和映射器,适配器对应
处理器映射器和处理器适配器有多个,Handler的配置和编写根据处理器映射器和处理器适配器进行
2. 逻辑视图名
调用:modelAndView.setViewName指定逻辑视图名,如果这里指定jsp的完整路径也支持
在springmvc.xml中修改视图解析器
修改action
注解式的spingmvc开发
1. 在web.xml文件中配置springmvc前端控制器
2. 配置注解式springmvc三大组件
<!--注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
3. 编写Handler
// 修改学生信息页面
// @RequestMapping指定url
@RequestMapping("/editstudent")
public String editstudent(Model model) throws Exception {
// 将学生信息的显示在页面
// 使用静态数据
Student student = new Student();
student.setName("张三");
student.setAge(32);
student.setBirthday(new Date());
// 需要将学生信息传到页面
model.addAttribute("student", student);
// 返回逻辑视图名
return "student/editstudent";
}
// 学生信息修改提交
@RequestMapping("/editstudentsubmit")
public String editstudentsubmit(Student student)throws Exception{
System.out.println(student);
return "success";
}
一个url对应action的一个方法
4. 使用注解方式将action类配置到spring容器中
1. 在spring文件中配置
2. 给acton类添加注解
Struts2与springmvc的不同
1. springmvc的入口是servlet,struts是filter
2. springmvc是基于方法开发,struts是基于类开发
action类中,一个url对应一个方法,对Handler对象,springmvc框架将一个方法封装到Handler中(只有一个method)。
Struts对action类进行实例化。
Springmvc中的action可以使用单例也可以使用多例,建议使用单例(对相同的方法只new一个)。
Struts不能用单例,因为struts传递参数是通过成员变量。
Springmvc通过形参接收参数好处:更符合软件开发的思想,和service接口类似。
3. Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。
Springmvc的参数解析过程
1. 页面请求数据:key/value
2. 参数解析器:
Spring提供了很多参数解析器,将key/value的数据解析成形参,通过反射解析method中的参数(类型、名称),按照类型和名称规则解析形参
3. 属性编辑器:
将key/value转换成pojo中的属性
4. Action方法的形参
Springmvc开发常用注解
1. @controller
标识该类为控制器类,@controller、@service、@repository分别对应了web应用三层架构的组件即控制器、服务接口、数据访问接口
2. @RequestMapping
进行url映射,一个方法对应一个url,定义方法:在action方法上定义requestMapping
开发中经常使用根路径+子路径的方法管理url
例:
定义根路径:
在类名上边定义requestMapping
@RequestMapping("/stu")
定义子路径:
在方法上边定义requestMapping
@RequestMapping("/querystudent")
最终访问路径:根路径+子路径:/stu/ querystudent.action
SSM框架01--springmvc相关推荐
- JavaWeb学习之路——SSM框架之SpringMVC(八)
SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数 前提使用springmvc注解功能,相应配置 ...
- SSM框架:SpringMVC
SSM框架:SpringMVC 文章目录 前言 一.回顾 1. 学习方法说明 2. 回顾MVC架构 1.什么是MVC 2.MVC的结构分析 3.Model1时代 4.Model2时代 3. 回顾Ser ...
- SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)
博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
一:概述 SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛. Spring作为一个轻量级的框架,有很多的拓展功能,最主要的我们一般项目使用的就是IOC和AOP. S ...
- [转载] 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
参考链接: Java继承类的对象创建 本文发表于2016年6月,写于作者学生时期.文中使用到的技术和框架可能不是当下最佳实践,甚至很不"优雅".但对于刚接触JavaEE和Sprin ...
- 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课 ...
- SSM框架:springmvc实现图片的上传与图片上传路径的设置
说明:这个图片类文件上传的步骤是我经过验证的,在SSM框架下完成,搭建框架的部分不在这里说明. 第一步:添加两个项目需要的依赖.(pom.xml) <dependency><grou ...
- SSM框架知识点-SpringMVC流程图
文章目录 SSM框架知识点 示例图 SpringMVC流程图 SSM框架知识点 示例图 SpringMVC流程图
- SSM框架Spring+SpringMVC+MyBatis——详细整合教程
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参 ...
- SSM框架 (一) SpringMVC
1.SpringMVC 1.1 概述 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式 的轻量级 Web 开发框架,本质上相当于 Servlet相当于对其的进一步封装 核心组件 ...
最新文章
- mysql创建非聚集索引_聚集索引和非聚集索引的区别
- Java - 排序大全
- 计算机组成asr实验,计算机组成与结构实验讲义.doc
- 前端应该关注的2021年UI设计趋势
- pandas 合并所有列_图解Python表格操作包Pandas
- ESXI开启SNMP服务
- python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...
- 第十六章 复杂的抽像类结构
- layui图片上传按钮按着没反应_关于layui动态生成文件上传按钮后点击无效的解决办法...
- curl, apt-get, apt
- 直播卖房和VR看房,到底是噱头还是新趋势?
- Assets和Raw区别
- [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.解决办法
- java 项目报错,查找错误的方法
- 联想外接键盘fn热键取消
- RiceQuant开源项目Rqalpha运行结果文件result.pkl读取
- 距离2022年研究生考试还有多少天?倒计时天数用便签设置
- 数据结构和算法的区别
- 加域电脑激活指纹识别
- 淘宝客做不下去怎么办?
热门文章
- Cesium:加载百度地图
- Openlaye:学习笔记之事件
- jsch mysql_java Jsch实现跳板机操作远程数据库
- 数据库截取字段 转换成int型函数
- 论文笔记_S2D.16-2016-3DV-利用全卷积残差网络进行深度预测
- 重磅!中国科协发布2020重大科学问题和工程技术难题
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。
- opencv鼠标回调函数实现ROI区域像素值相同化
- (box-shadow)阴影 -CSS3 注:外阴影
- 【Golang】如何不反序列化为前提的情况下,修改ProtoBuffer某个Tag的值