java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))
入门程序
非注解的处理器映射器和适配器
1.非注解的处理器映射器
处理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
另一个映射器:
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。
2.非注解的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handler实现 Controller接口。
//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据
/*
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");*/(若是有疑问请回顾json篇)
DispatcherSerlvet.properties
前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。
注解的处理器映射器和适配器(重点掌握,非注解部分主要了解原理)
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。
(务必配对使用)
配置注解映射器和适配器。
<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter实际开发时使用mvc:annotation-driven--><!-- <mvc:annotation-driven></mvc:annotation-driven> -->
开发注解Handler
使用注解的映射器和注解的适配器。(注解的映射器和注解的适配器必须配对使用)
此处的注解,在springmvc的配置文件中会有对应的注解扫描
//使用Controller标识 它是一个控制器
@Controller
public class ItemsController3 {//商品查询列表//@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url//一般建议将url和方法写成一样@RequestMapping("/queryItems")public ModelAndView queryItems()throws Exception{//调用service查找 数据库,查询商品列表,这里使用静态数据模拟List<Items> itemsList = new ArrayList<Items>();//向list中填充静态数据Items items_1 = new Items();items_1.setName("联想笔记本");items_1.setPrice(6000f);items_1.setDetail("ThinkPad T430 联想笔记本电脑!");Items items_2 = new Items();items_2.setName("苹果手机");items_2.setPrice(5000f);items_2.setDetail("iphone6苹果手机!");itemsList.add(items_1);itemsList.add(items_2);//返回ModelAndViewModelAndView modelAndView = new ModelAndView();//相当 于request的setAttribut,在jsp页面中通过itemsList取数据modelAndView.addObject("itemsList", itemsList);//指定视图modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;}
在spring容器中加载Handler
<!-- 对于注解的Handler可以单个配置实际开发中建议使用组件扫描--><!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> --><!-- 可以扫描controller、service、...这里让扫描controller,指定controller的包--><context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
部署调试
访问:http://localhost:8080/springmvcfirst1208/queryItems.action
源码分析(重点)
通过前端控制器源码分析springmvc的执行过程。
第一步:前端控制器接收请求
调用doDiapatch
第二步:前端控制器调用处理器映射器查找 Handler
第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView
第四步:视图渲染,将model数据填充到request域。
视图解析,得到view:
调用view的渲染方法,将model数据填充到request域
渲染方法:
入门程序小结
前端控制器配置:
第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析
第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
使用此种方式可以实现 RESTful风格的url
处理器映射器:
非注解处理器映射器(了解)
注解的处理器映射器(掌握)
对标记@Controller类中标识有@RequestMapping的方法进行映射。在@RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。
处理器适配器:
非注解处理器适配器(了解)
注解的处理器适配器(掌握)
注解处理器适配器和注解的处理器映射器是配对使用。理解为不能使用非注解映射器进行映射。
<mvc:annotation-driven></mvc:annotation-driven>可以代替下边的配置:
<!--注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/><!--注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
实际开发使用:mvc:annotation-driven
视图解析器配置前缀和后缀:
程序中不用指定前缀和后缀:
小结-springmvc代码执行流程(基于注解)
此图一定要结合springmvc的架构图来理解
java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))相关推荐
- java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...
- java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))
springmvc和mybatis整合 需求 使用springmvc和mybatis完成商品列表查询. 整合思路 springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和 ...
- java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序)
1.对原生态jdbc程序中问题总结(为啥要用mybatis) 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接 ...
- java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)
数据回显 什么数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法 1.springmvc默认对pojo数据进行回显. pojo数据传入controller方法 ...
- java元婴期(20)----java进阶(spring(4)---spring aop编程(全自动)AspectJ)
spring aop编程:全自动[掌握] 从spring容器获得目标类,如果配置aop,spring将自动生成代理. 要确定目标类,aspectj 切入点表达式,导入jar包(maven项目直接导入相 ...
- SpringMVC框架----SpringMVC的入门程序
1.入门程序的需求 在这里插入图片描述 编写一个页面,叫index.jsp.页面上写一个超链接的标签,点击超链接,会发出一个请求,如果把请求发出去的话.后台编写类,接收请求,编写方法.发送请求,方法就 ...
- SpringMVC 快速入门程序
一.介绍 通过学习了 Spring MVC 框架原理,我们将更好的掌握 Spring MVC.废话不多说,我们现在正式开始 Spring MVC 快速入门程序--以查询商品信息为例. 二.Spri ...
- 【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)
介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...
- java war包更新 部署_关于Linux系统下基于Tomcat部署和升级war包的详细过程
1.首先Linux先安装java,Tomcat 中间件规范要求: 1) 软件必须下载到/services/download_soft_v --------(用xftp上传 ...
最新文章
- Div span 标签详解
- 汇编:内存地址为什么从0开始?等问题
- 安卓系统双屏异显_Android 双屏异显实现的三种方式
- mysql 禁止使用enum_MySQL慎用 ENUM 字段
- 浪潮云海OS再度登顶 SPEC Cloud性能得分「全球第一」
- endp 汇编start_常见汇编代码
- 以拼多多为例,中国互联网企业在农业上都做了哪些努力?
- go中使用sqlite
- 【MFC 学习笔记】CheckListBox
- struts2中处理get请求乱码
- Hibernate的单向1-1关联(二)
- .NET根本权限管理框架源代码
- Linux下如何使用gcc编译器,Linux下gcc编译器的使用总结
- python2和python3中的map()
- 【知识整理】Nmap与Masscan
- Django重写User模型修改明文密码加密方法
- 一种提升多分类准确性的Trick
- SAP销售发票会计凭证汇率跟随客户汇率类型
- d1,d2,d3 error
- rowid会变化么_基情满满!美团amp;饿了么外卖小哥组CP出道
热门文章
- log4j2配置文件log4j2.xml详解
- access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
- 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc
- 工信部等六部门公布2021年度国家绿色数据中心名单
- 美媒:谷歌巨型数据中心和美国小镇“抢水”
- Php在线字体woff转svg,在线字体格式转换ttf/otf/eot/woff/woff2格式工具
- Dataset之OttoGroup:OttoGroup数据集的简介、下载、案例应用之详细攻略
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
- Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略
- Linux系统管理01