1.SpringMVC框架

1.1 MVC在b/s系统下的应用

  1. 用户发送request请求到Controller
  2. Controller请求模型(Model)进行处理
  3. Model将处理结果返回到Controller
  4. Controller接受Model发送的处理结果
  5. 进行视图渲染,将模型数据填充到request域中(View)
  6. 响应用户的请求

1.2 springmvc框架

  1. 发起请求到前端控制器(DispatcherServlet)
  2. 前端控制器请求HandlerMapping查找Handler

(可以根据xml配置,注解进行查找)

  1. 处理器映射器HandlerMapping向前端控制器返回Handler
  2. 前端控制器调用处理器适配器(HandlerAdapter)去执行Handler
  3. 处理器适配器执行Handler
  4. Handler执行完成给适配器返回ModelAndView
  5. 处理器适配器向前端控制器返回ModelAndView

ModelAndView是springmvc框架的一个底层对象,包括Model和View

  1. 前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
  2. 视图解析器向前端控制器返回View
  3. 前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
  4. 前端控制器向用户响应结果

1.3 组件

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

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

有了DispatcherServlet减少了其他组件的耦合度

  1. 处理器映射器HandlerMapping(不需要程序猿开发)

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

  1. 处理器适配器HandlerAdapter(不需要程序猿开发)

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

  1. 处理器Handler(需要程序猿开发)

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

  1. 视图解析器View resolve(不需要程序猿开发)

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

  1. 视图View(需要程序猿开发)

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

2.开发步骤

2.1 需求

2.2环境准备

需要spring3.2所有jar(一定包括spring-webmvc-3.2.0.RELEASE.jar)

2.3配置前端控制器

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

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

2.4 配置处理器适配器

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

<!-- 处理器适配器
所有处理适配器都实现HandlerAdapter接口
-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

2.5开发Handler

需要实现Controller接口,

才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器执行

public class ItemsController1 implements Controller {

    @Override
public 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); //返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//相当 于request的setAttribut,在jsp页面中通过itemsList取数据
modelAndView.addObject("itemsList", itemsList); //指定视图
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView;
} }

2.6视图编写

2.7配置Handler

将编写Handler在spring容器中加载springmvc.xml

<!-- controller配置 -->
<bean name="/items1.action" id="itemList1"
class="cn.itcast.springmvc.controller.ItemsController1"/>

name="/items1.action":前边配置的处理器映射器为BeanNameUrlHandlerMapping,如果请求的URL 为“上下文/items1.action”将会成功映射到ItemList1控制器。

2.8配置处理器映射器

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

<!-- 处理器映射器 -->
<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

2.9配置视图解析器

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

《springMVC》学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. Javaweb学习笔记8—DBUtils工具包

    今天来讲javaweb的第8阶段学习. DBUtils技术,DBUtils是我们操作数据库很常用的功能,虽然后期使用都是它的封装结果,但是也需要掌握. 老规矩,首先先用一张思维导图来展现今天的博客内容 ...

  2. 使用代码编辑器Sublime Text 3进行前端开发及相关快捷键

    推荐理由: Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于浮肿沉重的Eclipse, ...

  3. Android Studio 中文件查询方法总结

    搜索单词 Windows: Ctrl + F Mac   : Cmd + F 会在当前激活的文件上查询输入的关键字,以高亮显示 跳转行 Windows: Ctrl + L Mac   : Cmd + ...

  4. 封装addClass 、 removeClass

    <script> window.onload = function() { var oDiv = document.getElementById('div1'); var oDiv2 = ...

  5. tab bar controller

    下面记一下怎样通过代码的方式为选项卡添加视图. 1.创建一个基于Empty Application的项目 2.创建两个新类,基类选择UIViewController,勾选With XIB for us ...

  6. 217. Contains Duplicate@python

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  7. 文本三剑客之awk

    awk和流编辑器sed在工作原理和用法上有很多类似之处,它们都是检查输入数据中的行是否匹配指定的模式,如果匹配成功就对匹配的行执行相应的操作,重复这个过程直到所有的输入数据都被处理完,因此awk和se ...

  8. 使用finalshll连接linux

    一.安装ubuntu: 我在window10上装了VMware,好像window10自带虚拟机吧;然后傻瓜式装机,装好后发现没网不知道什么原因,然后百度啪啦啪啦找了一堆,解决方法是: 然后重启下ubu ...

  9. KNN算法原理及实现

    1.KNN算法概述 kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.该方法在确定分类决策上只依据最邻近的一 ...

  10. SolrCloud 概念

    原文链接 https://www.w3cschool.cn/solr_doc 当您的集合对于一个节点来说太大时,您可以通过创建多个分片将其分解并分段存储. 碎片是集合的逻辑分区,包含集合中的文档的子集 ...