1.1、什么是Spring mvc

        Spring mvc是Spring的一个模块,与Spring的继承无需中间层进行整合。

1.2、mvc在b/s系统下的应用

1.3、Spring mvc框架

流程图 :

执行流程:
     第一步:发送请求到前端控制器(dispatcherServlet)
     第二步:前端控制器请求HandlerMapper查找Handler
                    配置文件,注解
     第三步:处理器映射器像前端控制器返回Handler。
     第四步:前端控制器调用处理器适配器去执行Handler。
     第五步:处理器适配器去执行Handler。
     第六步: Hander执行完给处理器适配器返回ModelAndView
     第七步:处理器适配器向前端控制器返回ModelAndView   
                    ModelAndView是Spring Mvc的底层对象,包含Model 和 view
    第八步:前端控制器请求视图解析器去进行视图解析。
                    根据逻辑视图名解析成真正的视图名。
    第九步: 视图解析器向前端控制器返回View
    第十步:前端控制器进行视图渲染。
                   视图渲染器将模型数据(ModelAndView)填充到request。
    第十一步:前端控制器向用户相应结果。
   组件:
        1、前端控制器 DispatcherServlet

作用:接收请求,响应请求,相当于转发器。

2、处理器映射器 HandlerMapping

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

3、处理器适配器HandlerAdaper
              作用:按照特定规则(适配器要求的规则)去执行Handler
              注意:编写Handler时需要按照适配器的要求去做,这样适配器才能正确执行Handler
        4、处理器 Handler(需程序员开发)
              
        5、视图解析器 View resolver
              作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)        
        6、视图 View(需要程序员开发)
              View是一个接口,实现类支持不同的View类型(jsp,freemark,pdf,excel)

实例

Dispatcher-servlet配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 扫描注解 --><context:component-scan base-package="vp.lh"/><!-- 配置处理器映射器 --><!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>--><!-- 配置处理器适配器 --><!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>--><!-- 注解驱动 --><mvc:annotation-driven /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置视图的前缀 --><property name="prefix" value="WEB-INF/"/><!-- 后缀 --><property name="suffix" value=".jsp"/></bean>
</beans>

controller层

package vp.lh.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.portlet.ModelAndView;
import vp.lh.pojo.Item;import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Controller
public class ItrmController {/*** 通过指令进入页面,展示后台数据*/@RequestMapping("/itemList.action")public ModelAndView itemList(){ModelAndView mav = new ModelAndView();// 绑定视图mav.setViewName("WEB-INF/index.jsp");// 绑定数据List<Item> itemList = new ArrayList();itemList.add(new Item(1,"空洞骑士",48.0,new Date(),"冒险"));itemList.add(new Item(2,"蔚蓝",68.0,new Date(),"闯关"));itemList.add(new Item(3,"世界之形",45.0,new Date(),"艺术"));itemList.add(new Item(4,"地狱边境",28.0,new Date(),"解谜"));mav.addObject("itemList",itemList);// req.setAttribute(key,value);return mav;}/*** Model*/public String itemList(Model model){List<Item> itemList = new ArrayList();itemList.add(new Item(1,"坚守阵地",48.0,new Date(),"冒险"));itemList.add(new Item(2,"纪念碑谷",68.0,new Date(),"闯关"));itemList.add(new Item(3,"奥日与黑暗森林",45.0,new Date(),"艺术"));itemList.add(new Item(4,"口袋妖怪",28.0,new Date(),"解谜"));// 存值model.addAttribute("itemList",itemList);// 页面return "itemList";}public String itemList(ModelMap map){List<Item> itemList = new ArrayList();itemList.add(new Item(1,"地下城与勇士",48.0,new Date(),"冒险"));itemList.add(new Item(2,"穿越火线",68.0,new Date(),"闯关"));itemList.add(new Item(3,"绝地求生",45.0,new Date(),"艺术"));itemList.add(new Item(4,"英雄联盟",28.0,new Date(),"解谜"));// 存值map.addAttribute("itemList",itemList);// 页面return "itemList";}/*** 参数绑定:selvlet*/public void itemEdit(HttpServletRequest request){Integer id = Integer.parseInt(request.getParameter("id"));System.out.println(id);}/*** 参数名=传递的参数的name值相同*//*** 参数名!=传递的参数的name值相同*/public void itemEdit(@RequestParam("id")Integer itemId){System.out.println(itemId);}
}

实体类

package vp.lh.pojo;import java.util.Date;public class Item {private Integer id;private String name;private Double price;private Date createtime;private String detail;@Overridepublic String toString() {return "Item{" +"id=" + id +", name='" + name + '\'' +", price=" + price +", createtime=" + createtime +", detail='" + detail + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public Date getCreatetime() {return createtime;}public void setCreatetime(Date createtime) {this.createtime = createtime;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail = detail;}public Item(Integer id, String name, Double price, Date createtime, String detail) {this.id = id;this.name = name;this.price = price;this.createtime = createtime;this.detail = detail;}public Item() {}
}

jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询商品列表</title>
</head>
<body>
<form action="" method="post">查询条件:<table width="100%" border=1><tr><td><input type="submit" value="查询"/></td></tr></table>商品列表:<table width="100%" border=1><tr><td>商品名称</td><td>商品价格</td><td>生产日期</td><td>商品描述</td><td>操作</td></tr><c:forEach items="${itemList }" var="item"><tr><td>${item.name }</td><td>${item.price }</td><td>${item.createtime}</td><td>${item.detail }</td><td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td></tr></c:forEach></table><input type="submit" value="嘤嘤嘤" name="submit">
</form>
</body></html>

Spring mvc框架相关推荐

  1. Spring MVC 框架搭建及详解

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  2. spring mvc框架设计与实现

    spring mvc框架通过DispatcherServlet来作请求分发,主要由HandlerMapping,HandlerAdapter,HandlerInterceptor三个抽象来完成.通过H ...

  3. 搭建基于spring MVC框架 + RESTful架构风格技术总结

    2019独角兽企业重金招聘Python工程师标准>>> 实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的 ...

  4. 从 0 开始手写一个 Spring MVC 框架,向高手进阶

    转载自   从 0 开始手写一个 Spring MVC 框架,向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如 ...

  5. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  6. springmvc流程_基于Spring MVC框架的Http流程分析

    一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...

  7. local tomcat 找不到springmvc里的包_唰唰的手撕一个简单的Spring Mvc 框架

    @[TOC] 自定义实现Spring Mvc框架 前言 在使用Spring Mvc时候我们需要配置一个中央处理器DispatcherServlet用于分发请求,根据url查找处理器,然后再根据处理器 ...

  8. 自己手写一个Spring MVC框架

    想要了解Spring MVC框架的原理,探究框架是如何设计的,不错的学习方式是阅读源码,然后自己手写一个框架.本文带领大家简化的手写一个Spring MVC框架. Spring框架对于Java后端程序 ...

  9. Spring MVC框架-持久层用hibernate自动化(1)

    ##Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC ...

  10. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

最新文章

  1. keras中conv2d,conv2dTranspose的Padding详细介绍
  2. mount: unknown filesystem type 'smbfs' 问题解决
  3. Hybris UI的Route(路由)实现
  4. 判断两个树是否互相镜像
  5. 新疆缺少计算机网络技术吗,新疆阿克苏职业技术学院的计算机网络技术专业好不?...
  6. linux定时任务执行url,科技常识:linux定时任务访问url实例
  7. 新建一个java程序并运行
  8. Python提取 Gprmax 3.0 的out文件数据
  9. 荣耀 Magicbook Pro 锐龙版搭载深度操作系统桌面版
  10. bat批处理命令拨号上网
  11. 大智慧 软件 开发语言_智慧工厂培训软件开发流程篇
  12. java密钥长度受限制问题解决
  13. 如何进入bios设置U盘启动,u盘安装系统设置启动项的方法
  14. php电子备课系统,电子备课-华思信息-智慧校园-智慧班牌-智慧课堂-智慧教育整体解决方案...
  15. 从Android运行时出发,打造我们的脱壳神器 - zyq8709--dexhunter(二代抽取壳)
  16. 以艺术教育培养大学生艺术素质
  17. 联想一体机电源键不亮_联想力压华为拿下6·18 PC“六冠王”,背后有何秘诀?...
  18. ubuntu 桌面菜单栏和任务栏程序标题栏消失的恢复方法
  19. 惠普打印机、扫描仪二次开发、支持状态获取
  20. Cheat Engine游戏脚本修改器通关教程(脑残版Step9)

热门文章

  1. DDMS修改默认端口8700
  2. 各式各样的动漫人物表情怎么画?
  3. 小程序的搜索排名规则
  4. c语言整型如何存放,C语言的数据类型→整型数据
  5. 路由器与交换机有什么区别
  6. Mac下载BT音乐和电影的超值工具
  7. php swf生成,五种php生成swf 文件代码
  8. Linux 桌面玩家指南:04. Linux 桌面系统字体配置要略
  9. 计算机黑屏死机,电脑黑屏死机怎么解决(一键修复电脑黑屏死机的方式)
  10. 程序员最想拥有的编程语言,Python 排第一!