入门程序

非注解的处理器映射器和适配器

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)---入门程序(下)基于注解开发(重点掌握))相关推荐

  1. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))

    springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...

  2. java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))

    springmvc和mybatis整合 需求 使用springmvc和mybatis完成商品列表查询. 整合思路 springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和 ...

  3. java元婴期(22)----java进阶(mybatis(1)---mybatis框架概述入门程序)

    1.对原生态jdbc程序中问题总结(为啥要用mybatis) 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接 ...

  4. java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)

    数据回显 什么数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法 1.springmvc默认对pojo数据进行回显. pojo数据传入controller方法 ...

  5. java元婴期(20)----java进阶(spring(4)---spring aop编程(全自动)AspectJ)

    spring aop编程:全自动[掌握] 从spring容器获得目标类,如果配置aop,spring将自动生成代理. 要确定目标类,aspectj 切入点表达式,导入jar包(maven项目直接导入相 ...

  6. SpringMVC框架----SpringMVC的入门程序

    1.入门程序的需求 在这里插入图片描述 编写一个页面,叫index.jsp.页面上写一个超链接的标签,点击超链接,会发出一个请求,如果把请求发出去的话.后台编写类,接收请求,编写方法.发送请求,方法就 ...

  7. SpringMVC 快速入门程序

    一.介绍   通过学习了 Spring MVC 框架原理,我们将更好的掌握 Spring MVC.废话不多说,我们现在正式开始 Spring MVC 快速入门程序--以查询商品信息为例. 二.Spri ...

  8. 【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  9. java war包更新 部署_关于Linux系统下基于Tomcat部署和升级war包的详细过程

    1.首先Linux先安装java,Tomcat 中间件规范要求: 1)         软件必须下载到/services/download_soft_v        --------(用xftp上传 ...

最新文章

  1. Div span 标签详解
  2. 汇编:内存地址为什么从0开始?等问题
  3. 安卓系统双屏异显_Android 双屏异显实现的三种方式
  4. mysql 禁止使用enum_MySQL慎用 ENUM 字段
  5. 浪潮云海OS再度登顶 SPEC Cloud性能得分「全球第一」
  6. endp 汇编start_常见汇编代码
  7. 以拼多多为例,中国互联网企业在农业上都做了哪些努力?
  8. go中使用sqlite
  9. 【MFC 学习笔记】CheckListBox
  10. struts2中处理get请求乱码
  11. Hibernate的单向1-1关联(二)
  12. .NET根本权限管理框架源代码
  13. Linux下如何使用gcc编译器,Linux下gcc编译器的使用总结
  14. python2和python3中的map()
  15. 【知识整理】Nmap与Masscan
  16. Django重写User模型修改明文密码加密方法
  17. 一种提升多分类准确性的Trick
  18. SAP销售发票会计凭证汇率跟随客户汇率类型
  19. d1,d2,d3 error
  20. rowid会变化么_基情满满!美团amp;饿了么外卖小哥组CP出道

热门文章

  1. log4j2配置文件log4j2.xml详解
  2. access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
  3. 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc
  4. 工信部等六部门公布2021年度国家绿色数据中心名单
  5. 美媒:谷歌巨型数据中心和美国小镇“抢水”
  6. Php在线字体woff转svg,在线字体格式转换ttf/otf/eot/woff/woff2格式工具
  7. Dataset之OttoGroup:OttoGroup数据集的简介、下载、案例应用之详细攻略
  8. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
  9. Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略
  10. Linux系统管理01