第1章:SpringMVC简介

一、SpringMVC

1.Java语言学习流程

 2.SpringMVC的主要内容

 二、SpringMVC简介

1.什么是MVC

  • MVC是一种软件架构的思想,将软件按照模型,视图,控制器划分
  • M:Model,模型层,指工程中的JavaBean,作用是处理数据。
  • JavaBean分为两类:①实体类Bean:专门存储业务数据的,如Student,User等。②业务处理Bean:指Service专门用于处理业务逻辑或Dao对象实现数据访问

  • V:View,视图层,指工程中的html或jsp页面,作用是与用户进行交互,展示数据
  • C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

2.MVC的工作流程

用户通过视图层发送请求到服务器,在服务器请求被Controller接收,Controller调用响应的Model层处理请求,处理完毕后把结果返回到Controller,Controller在根据请求的结果找到相应的视图,渲染数据最终响应给浏览器。

3.什么是SpringMVC

  • SpringMVC是Spring的一个后续产品,是Spring的一个子项目
  • SpringMVC是Spring为表述层开发提供的一整套完备的解决方案

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层。表述层表示为前台页面和后台servlet

4. SpringMVC的特点

  • Spring 家族原生产品,与 IOC 容器等基础设施无缝对接
  • 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
  • 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
  • 代码清新简洁,大幅度提升开发效率
  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
  • 性能卓著,尤其适合现代大型、超大型互联网项目要求

三、HelloWorld程序

1.开发环境

IDE:idea 2021.1

构建工具:maven3.5.4

服务器:tomcat7

SpringMVC版本:5.3.1

2.创建maven工程

①添加web模块

②配置pom.xml文件

打包方式是war: war 包通常用于网站,它是一个可以直接运行的 web 模块

<packaging>war</packaging>

  <!--打包方式是war-->
<!--war 包通常用于网站,它是一个可以直接运行的 web 模块-->
<packaging>war</packaging>
<dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--scope 依赖范围provided已存在,程序打包为War包,依赖不会存在--><scope>provided</scope></dependency><!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency>
</dependencies>

3.配置web.xml

①创建xml

 Web.xml放在这个目录下

②配置方式一 默认配置方式

此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为-servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml

配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理,但不支持.jsp

<!--配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理-->
<servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern>
<!-- 设置springMVC的核心控制器所能处理的请求的请求路径/所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求-->
</servlet-mapping>

 ③配置方式二 扩展配置方式(常用

可通过init-param标签设置SpringMVC配置文件的位置和名称,通过load-on-startup标签设置SpringMVC前端控制器DispatcherServlet的初始化时间。

4.创建请求控制器springMVC.xml

由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具体请求的类,即请求控制器

请求控制器中每一个处理请求的方法成为控制器方法

因为SpringMVC的控制器由一个POJO(普通的Java类)担任,因此需要通过@Controller注解将其标识为一个控制层组件,交给Spring的IoC容器管理,此时SpringMVC才能够识别控制器的存在

 ①创建目录

②@Controller注解将其标识为一个控制层组件(需要扫描)

 5.配置springMVC 的配置文件

①开启扫描组件

<context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan>

 ②配置Thymeleaf视图解析器

<!-- 配置Thymeleaf视图解析器 -->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 视图前缀 --><property name="prefix" value="/WEB-INF/templates/"/><!-- 视图后缀 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8" /></bean></property></bean></property>
</bean>

6.测试HelloWorld,对主页访问

①加入 xmlns:th="http://www.thymeleaf.org"

 ②

  @RequestMapping注解:处理请求网址和控制器方法之间的映射关系

   请求路径 /表示的当前工程的上下文路径

 通过返回视图名称,被视图解析器解析,就成为了/WEB-INF/templates/index.html

 ③创建tomcat

选择Local

 

 

 

 ④开始运行,访问此目录的首页

 7.通过超链接跳转到指定页面

①创建target.html

②在index.html添加超链接

th:href="@{/target}":被thymeleaf解析

③点击连接后,浏览器的网址变为http://localhost:8080/SpringMVC/target

 ④请求到控制器/target的控制方法

 ⑤返回target视图名称,被视图解析器解析。跳转到/WEB-INF/templates/target.html页面

 总结:

浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatcherServlet处理。前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终转发到视图所对应页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352499.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

5个小时,搭出2套应用,这一低代码平台很强劲!

现代管理学之父德鲁克提及创新本质时&#xff0c;说了两点&#xff1a; 一是让昂贵的东西变得便宜&#xff0c;老百姓能用&#xff1b;二是让高门槛东西变得低门槛&#xff0c;普通人可用。 而低代码正符合这两个条件。 一、背景 所谓低代码&#xff0c;是一种软件开发方法&…

一周信创舆情观察(12.7~12.13)

一、一周舆情要点 行业方面&#xff0c;2020年集成电路设计行业销售额预计为3819.4亿元&#xff0c;比2019年的3084.9亿元增长23.8%。日前&#xff0c;我国自主研发的一项物联网安全测试技术&#xff08;TRAIS-P TEST&#xff09;由国际标准化组织/国际电工委员会(ISO/IEC)发布…

以评促建,推动高效惠民数字政府建设——2018数字政府建设论坛暨第十七届中国政府网站绩效评估结果发布会在京召开...

导语&#xff1a;放眼世界&#xff0c;政府数字化转型已成大势所趋。纵观国内&#xff0c;建设数字政府、数字中国逐渐升至新时代国家发展战略。作为数字中国体系重要组成部分的数字政府&#xff0c;是实现数字中国建设目标、推动社会经济高质量发展的重要抓手。结合国家要求&a…

亮剑“互联网+政务服务”,航天信息助力政府“最多跑一次”改革

? 点 击 关 注 2017年8月&#xff0c;航天信息联合浙江省台州市财政局在台州市立医院建设试点项目&#xff0c;开具出浙江省第一张门诊收费电子票据。截至2018年10月&#xff0c;航天信息已帮助浙江省的40多家医疗机构开具了近400万张电子票据。“最多跑一次”不是一句口号&am…

SpringBoot源码分析:SpringBoot自动装配(二)

一、概述 SpringBoot的启动流程入下图所示&#xff0c;它主要分为加载主启动类和解析启动类两个部分&#xff0c;我将从这两个部分分别开始介绍。 二、加载主启动类 首先点入SpringApplication.run方法 之后进入SpringApplication.prepareContext方法 之后进入SpringApplicat…

应用百花齐放,呈现北浙苏沪粤五极格局丨2021年中国区块链产业发展报告产业应用篇...

目前&#xff0c;区块链作为数字经济革命中的重要支撑&#xff0c;正以新一代信息基础设施的姿态快速发展并渗透到我国经济的各个领域&#xff0c;对我国经济社会发展的支撑作用初步显现。但同时&#xff0c;我国区块链也面临核心技术亟待突破、融合应用尚不成熟、产业生态有待…

大集中系统的个人所得税解决方案

大集中系统的个人所得税解决方案 1.1 前言 随着税收体制改革的发展&#xff0c;个人所得税在整个税收体系中占有的比重越来越大&#xff0c;自然人个人所得税明细申报也逐渐普及。个人所得税明细申报的主体涉及广大自然人纳税人&#xff0c;给税务机关的管理和税款…

【个人所得税的相关故事to me】

一、故事背景 虽然个人所得税汇算清缴&#xff08;以下简称为“个税年度汇算”&#xff09;自3月1号就开始了&#xff0c;个税申请退税&#xff08;ps:年收入 < 60k&#xff09;也自3月1号也开始了&#xff0c;但是我是到了今天才了解了相关的信息p(#&#xffe3;▽&#x…

powershell自动出IT考试题

以前给人培训时出的备考练习题&#xff0c;随机抽取题库题目&#xff0c;含分类练习和综合练习&#xff0c;自动出题&#xff0c;和给出答案&#xff0c;方便&#xff0c;快捷&#xff0c;小巧&#xff0c;大家可以试试 题源可以自己去更换 echo off setlocal enabledelayede…

【小demo】——直播平台自动发言

1. 背景 直播平台火热的现在&#xff0c;好多人已经开始直播致富了&#xff0c;但是很多直播新人因为人气等相关原因&#xff0c;就很难在直播平台爆火&#xff0c;有的人想到了买号&#xff0c;刷人气之类的&#xff0c;现在这款小demo就是配套的组件。 2. 前期准备 jar包 …

【MCS-51单片机汇编语言】期末复习总结⑥——串口通信(题型六)

文章目录 知识准备发送/接收缓冲器 SBUF串口通信控制寄存器SCON电源控制寄存器 PCON各个工作方式波特率的设定 常考题型例题1题目描述题目解析题解 例题2题目描述题解 知识准备 发送/接收缓冲器 SBUF 单片机在发送或接收数据的前先将数据存储在SBUF中&#xff1b;接收&#x…

程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)

程控电源CANoe上位机面板 编写此面板的目的编写思路一、通讯方式1、RS232串口连接2、CANoe与RS232串口相关的函数3、帧格式命令字4、校验码 二、面板设计1、所需文件说明2、导入使用3、功能模块化3.1 初始化3.2 端口设置3.3 控制方式3.4 脉冲程序3.5 电压电流状态3.6 运行设置的…

Android Studio Gradle实践之多渠道自动化打包+版本号管理

转&#xff1a; Android Studio Gradle实践之多渠道自动化打包版本号管理 上次介绍了Android Studio的安装、配置和基本使用。这次讲一下Android Studio用到的打包工具Gradle。Gradle是一种构建项目的框架&#xff0c;兼容Maven、Ant&#xff0c;为Java项目提供了很多插件去实现…

【测试实践】搞定云网络系统性能测试

一、前言 在部署或管理网络系统时&#xff0c;我们更多的是关心网络的连通性&#xff0c;而对于其整体的性能往往考虑不多&#xff0c;或者即使考虑到性能、异常或稳定性的问题&#xff0c;但却发现没有合适的手段去测试或监控网络健康状况。在本文中&#xff0c;首先简单介绍…

树莓派做一个获取GPS时间的NTP服务器

由于单位用的是内部网络&#xff0c;机器时间无法与internet同步&#xff0c;导致内网的所有设备各自为政&#xff0c;对工作和管理带来的麻烦说不清&#xff0c;为解决这个问题&#xff0c;决定用手里的树莓派做通过GPS获取时间&#xff0c;然后提供NTP服务。在某宝逛了一圈&a…

自动(智能)驾驶 | 全网第一本激光雷达手册阅读指南(下)

接着从上篇继续说&#xff0c;本部分主要介绍激光雷达数据等内容&#xff0c;这个可以说是看懂激光雷达手册的重中之重&#xff0c;也就是关键问题的关键&#xff08;皮~&#xff09;。同样由于velodyne的手册比较难啃但是内容完整丰富&#xff0c;本期我们依然以velodyne 128&…

GEO-SPARK 2000X PPS使用记录(三)

最近单位突然要使用GeoSpark电火花&#xff0c;至少有4年没有用过了。我一直没有独立操作过&#xff0c;只是看同事操作过&#xff0c;碰巧的是会使用这个设备的同事去大洋了&#xff0c;悲剧的是他们把所有的采集狗都拿走了&#xff0c;留下一个巨大的坑让我来填。 1、首先看看…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

Kerberos从入门到精通以及案例实操系列(二)

5、安全集群使用说明 5.1、用户要求 具体要求以下使用说明均基于普通用户&#xff0c;安全集群对用户有以下要求&#xff1a; 集群中的每个节点都需要创建该用户该用户需要属于hadoop用户组需要创建该用户对应的Kerberos主体 实操&#xff0c;此处以atguigu用户为例&#x…

3.了解Spring Boot2自动配置原理

了解Spring Boot2自动配置原理 1、SpringBoot特点 1.1、依赖管理 1.父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEAS…