springmvc框架

什么是springmvc

springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。(struts2与Spring整合的时候需要借助单独的jar包)

springmvc是一个基于mvc的web框架。

mvc在b/s系统 下的应用

mvc是一个设计模式,mvc在b/s系统 下的应用:

springmvc框架

  • 第一步:发起请求到前端控制器(DispatcherServlet)
  • 第二步:前端控制器请求HandlerMapping查找 Handler, 可以根据xml配置、注解进行查找
  • 第三步:处理器映射器HandlerMapping向前端控制器返回Handler
  • 第四步:前端控制器调用处理器适配器去执行Handler
  • 第五步:处理器适配器去执行Handler
  • 第六步:Handler执行完成给适配器返回ModelAndView
  • 第七步:处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括 Model和view
  • 第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
  • 第九步:视图解析器向前端控制器返回View
  • 第十步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
  • 第十一步:前端控制器向用户响应结果

组件:

1、前端控制器DispatcherServlet(不需要程序员开发)

作用接收请求,响应结果,相当于转发器,中央处理器。

有了DispatcherServlet减少了其它组件之间的耦合度。

2、处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4、处理器Handler(需要程序员开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

5、视图解析器View resolver(不需要程序员开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6、视图View(需要程序员开发jsp)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

入门程序

需求

以案例作为驱动。

springmvc和mybaits使用一个案例(商品订单管理)。

功能需求:商品列表查询

环境准备

数据库环境:mysql5.1

java环境:

  • jdk1.7.0_72
  • eclipse indigo
  • springmvc版本:spring3.2
  • 需要spring3.2所有jar(一定包括spring-webmvc-3.2.0.RELEASE.jar)

配置前端控制器

在web.xml中配置前端控制器。

配置处理器适配器

在classpath下的springmvc.xml中配置处理器适配器

通过查看原代码:​​​​​​​

此适配器能执行实现 Controller接口的Handler。

开发Handler

需要实现 controller接口,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行。

public class ItemsController1 implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) 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;}}

视图编写

配置Handler

将编写Handler在spring容器加载。

配置处理器映射器

在classpath下的springmvc.xml中配置处理器映射器​​​​​​​

配置视图解析器

需要配置解析jsp的视图解析器。

部署调试

访问地址:http://localhost:8080/springmvcfirst1208/queryItems.action

处理器映射器根据url找不到Handler,报下边的错误。说明url错误。

处理器映射器根据url找到了Handler,转发的jsp页面找到,报下边的错误,说明jsp页面地址错误了。

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

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

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

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

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

  3. java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))

    入门程序 非注解的处理器映射器和适配器 1.非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUrlHandlerM ...

  4. java元婴期(26)----java进阶(mybatis(5)---spring和mybatis整合(重点)逆向工程(会用))

    spring和mybatis整合 1.整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactor ...

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

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

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

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

  7. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  8. SpringMVC学习:控制层(Controller)基于注解详解

    文章目录 一.URL映射Controller的方法返回值 二.SpringMVC各类注解详解 (一) @Controller (二) @RequestMapping 1.基本用法 2. path属性或 ...

  9. Java学习 (基础语法)day1 前言、入门程序、常量、变量

    文章索引: Java是什么? Java能做什么? 计算机基础 二进制 二进制与十进制的相互转换: 计算机常见存储单位 DOS操作指令 Java基础环境搭建 环境变量配置 hello world! 常量 ...

最新文章

  1. WatchStor观察:思科携EMC等合作伙伴 圈地数据中心市场
  2. 牛客网 【每日一题】5月14日题目 maze
  3. leetcode448. 找到所有数组中消失的数字 天秀记录法
  4. 语义分割之VOC2012、Cityscapes数据集介绍
  5. 开发中一些常用的css小技巧
  6. 获取连接无线路由客户机信息命令
  7. 2017-2018-2 20165218 实验五《网络编程与安全》实验报告
  8. parsley.js自定义验证规则之大小写
  9. LabVIEW安装第三方VISA软件后NI VISA失效
  10. 测试鼠标手速的软件,APMTrainer
  11. Zedboard 运行linaro操作系统
  12. 少有人走的路:心智成熟的旅程
  13. 魔兽世界私服架设 服务器架设简易教程
  14. 使用busybox制作rootfs
  15. Python20190206 解不定方程并绘制散点图标记解
  16. Android 接收和收发短信
  17. 计算机组成与设计:计算机概要与技术
  18. AjaxFileUploaderV2.1修改版
  19. 计算机怎么改磁盘位置,如何修改磁盘0和磁盘1的硬盘位置
  20. 从黄金时代到没落尽头,“寻求出售”的GoPro遭遇了什么?

热门文章

  1. set的用法及短语_人教版九全Unit 14重点短语、重点句型、课文讲解
  2. 印尼互联网交换中心失火,或由电路短路引发
  3. 冷却负载、人为因素影响传统数据中心效率
  4. UPS技术的“前世今生”【基础篇.PPT】
  5. centos 开发php扩展,【PHP扩展】centos给PHP安装扩展
  6. 成功解决torch\cuda\__init__.py“, line 208, in check_error raise Cuda Error(res) torch.cuda.Cuda Error: C
  7. Paper:《A Unified Approach to Interpreting Model Predictions—解释模型预测的统一方法》论文解读与翻译
  8. DL:The development history of the important stage of DL
  9. You must provide a username via either --os-username or env[OS_USERNAME]
  10. NumPy来自现有数据的数组