当前位置: 首页 > news >正文

【Java闭关修炼】SpringBoot-SpringMVC概述和入门

SpringMVC概述和入门

MVC概述

在这里插入图片描述

  • 实体类Bean:专门 存储业务数据 Student User
  • 业务处理Bean:指的是Service或者Dao 专门用来处理业务逻辑或者数据访问

用户通过视图层发送请求到服务器,在服务器中请求被Controller接受,Controller调用相应的MOdel层处理请求,处理完毕结果返回到Controller,COntroller再根据请求的处理结果找到相应的View视图,渲染数据之后最终给浏览器

SpringMVC

在这里插入图片描述

HelloWorld入门程序

开发环境

在这里插入图片描述

创建一个工程,导入依赖WebApplication.xml

在这里插入图片描述

pom.xml添加依赖

<dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.21</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</scope></dependency><!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency></dependencies>

默认方式配置WEB.XML

此配置作用下,SpringMVC的配置文件默认为与WEB.INF下面,默认名称是servelct-name-servlet.xml,比如下面的配置文件就是springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
<!--    配置SpringMVC的前端控制器 对浏览器发送请求进行统一处理 name要和mapping保持一致--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet>
<!--    一个servlet配置一个请求 /表示配置浏览器发送的所有请求 不能匹配jsp请求--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

扩展配置方式web.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
<!--    配置SpringMVC的前端控制器 对浏览器发送请求进行统一处理 name要和mapping保持一致--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--        配置springMVC配置文件的位置和名称--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:springMVC.xml</param-value></init-param><!--        将前端控制器DispatcherServlet的初始化时间提前到服务器启动时候-->
<!--        前端所有请求都被前端控制器所拦截  那么需要初始化前端控制器--><load-on-startup>1</load-on-startup></servlet>
<!--    一个servlet配置一个请求 /表示配置浏览器发送的所有请求 不能匹配jsp请求--><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

创建请求控制器

在这里插入图片描述

请求控制器中每一个处理请求的方法叫做控制器方法

package com.ustc.mvc.controller;import org.springframework.stereotype.Controller;// 请求控制器
@Controller
public class HelloController {
}

在springMVC.xml配置component-scan,表示将controller资源作为一个bean注入到IOC容器中进行管理

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

配置视图解析器,跳转地址:文件前缀+文件名+视图后缀

<!--配置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>

访问首页

在请求控制器中创建处理请求的方法,跳转到index.html


package com.ustc.mvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;// 请求控制器
@Controller
public class HelloController {//    浏览器请求与控制器方法相关联@RequestMapping(value = "/")public String index(){return "index";// 返回的是视图名称  然后视图前缀 + 视图名称 + 试图后缀  解析指定页面}
}

配置Tomcat

在这里插入图片描述

在这里插入图片描述

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

建议使用MAVEN模板配置SpringMVC工程

相关文章:

【Java闭关修炼】SpringBoot-SpringMVC概述和入门

SpringMVC概述和入门 MVC概述 实体类Bean:专门 存储业务数据 Student User业务处理Bean:指的是Service或者Dao 专门用来处理业务逻辑或者数据访问 用户通过视图层发送请求到服务器&#xff0c;在服务器中请求被Controller接受&#xff0c;Controller调用相应的MOdel层处理请求…...

pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!

Aiseesoft PDF Converter Ultimate 是一款优秀且高效可靠的无损电脑免费版pdf转换器软件&#xff0c;凭借卓越高识别精度的强悍OCR识别技术&#xff0c;可精准识别英文、法文、中文、德文、日文、韩文、意大利文、土耳其文等190多个国家的语言以及各种公式和编程语言&#xff0…...

革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器

近年来&#xff0c;全球新兴行业不断涌现&#xff0c;其中一些行业甚至成为了热门话题。这些新兴行业的出现&#xff0c;不仅带来了新的商机和发展机遇&#xff0c;也对传统产业带来了冲击和挑战。对于那些想要进入新兴行业的人来说&#xff0c;了解这些行业的关键词和市场情况…...

3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试

前段时间一个朋友跟我吐槽&#xff0c;说自己做软件测试工作已经3年了&#xff0c;可这三年自己的能力并没有得到提升&#xff0c;反而随着互联网的发展&#xff0c;自己只会“点点点”的技能即将被淘汰。说自己很苦恼了&#xff0c;想要提升一下自己&#xff0c;可不知道该如何…...

python:异常处理与文件操作(知识点详解+代码展示)

文章目录一、异常处理1、try...except语句2、finally语句二、断言1、定义2、举例例一&#xff1a;例二&#xff1a;三、文件操作1、写文件操作2、读文件操作学习目标&#xff1a;1、掌握异常处理的方法2、掌握断言的使用3、掌握打开文件、读文件和写文件的方法一、异常处理 引…...

SpringBoot 过滤器和拦截器(三十八)

我喜欢你&#xff0c;可是你却并不知道. 上一章简单介绍了SpringBoot参数验证(三十七) ,如果没有看过,请观看上一章 关于过滤器和拦截器已经讲很多了&#xff0c; 这里老蝴蝶只说一下 SpringBoot 的用法。 可以看之前的文章: https://blog.csdn.net/yjltx1234csdn/article/d…...

Memcache论文总结——Lec16

文章目录一、相关名词1.mcrouter层2.GUTTER SERVER3.mcsqueal4.remote mark二、当流量增长了如何SCALE 你的网站&#xff1f;三、背景及业务特点1.读多写少2.FB需求&#xff1a;3.之前情况四、简介五、FaceBook的架构五、Cache Policy六、In a Cluster : Latency and Load(一&a…...

父子组件传值问题

文章目录前言一、问题描述二、问题解决前言 在写毕业设计&#xff0c;涉及了一些前端Vue.js的组件传值知识并出现了相关问题&#xff0c;因此进行记录。 问题 Vue.js的使用不熟练&#xff0c;相关组件、props等掌握不清晰前端代码书写不规范 望指正&#xff01; 一、问题描述 …...

Redis大key问题

Redis大key问题 什么是big key&#xff1f; bigKey的危害&#xff1a; 大key不仅仅是占用内存而已&#xff0c;如果是仅仅内存的问题 那么扩大内存就好了。禁止大key是主要是因为你操作redis&#xff0c;比如说读/写等操作redis的时候 会有io操作&#xff0c;大key会导致io操作…...

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xff0c;薪资也从12k涨到了18k&#xff0c;对于工作都还没两年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王&#xff0c;感觉自己年轻&#xff…...

Redis第七讲 Redis存储模型详解

Redis存储模型 每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示.redisObject的结构与对象类型、内存编码、内存回收、共享对象都有关系,一个redisObject对象的大小为16字节:4bit+…...

Python 进阶指南(编程轻松进阶):十五、面向对象编程和类

原文&#xff1a;http://inventwithpython.com/beyond/chapter15.html OOP 是一种编程语言特性&#xff0c;允许你将变量和函数组合成新的数据类型&#xff0c;称为类&#xff0c;你可以从中创建对象。通过将代码组织成类&#xff0c;可以将一个整体程序分解成更容易理解和调试…...

windows下postgresql安装timescaledb

timescaledb是一个时序数据库&#xff0c;可以创建超表hypertable。它并不是一个独立的数据库&#xff0c;它依赖于postgresql&#xff0c;目前相当于postgresql的一个插件或者扩展。 要安装timescaledb&#xff0c;需要先安装postgresql。 这里安装的postgresql是12.14版本&am…...

Linux系统常用命令大全

本教程将介绍Linux系统的基本操作&#xff0c;包括文件操作、用户管理和软件安装等。 1. 文件操作 1.1 查看文件内容 使用cat命令可以查看文件的内容&#xff0c;例如&#xff1a;cat file.txt 1.2 创建新文件 使用touch命令可以创建新文件&#xff0c;例如&#xff1a;to…...

月报总结|Moonbeam 3月份大事一览

本月&#xff0c;Moonbeam在社区治理上进入了全新的阶段 — — 针对第一批生态系统Grants的Snapshot投票结果揭晓&#xff0c;链上公投已在进行中&#xff0c;社区获得了更多表达的机会与权力&#xff0c;这些项目也将为生态注入新的活力。 活动方面&#xff0c;Moonriver Ris…...

多功能料理锅语音播放芯片——NV040C

多功能料理锅就是一锅搭配多个锅盘&#xff0c;可以实现火锅、烤肉、花式煎蛋、丸子等多种烹饪功能。 多功能料理锅语音方案设计需求&#xff1a; 多功能锅本身体积有限&#xff0c;按钮比较少&#xff0c;相应功能的字体要贴按钮旁边&#xff0c;字体也是比较小的&#xff0c…...

vue23自定义svg图标组件

可参考&#xff1a; 未来必热&#xff1a;SVG Sprites技术介绍 懒人神器&#xff1a;svg-sprite-loader实现自己的Icon组件 在Vue3项目中使用svg-sprite-loader 前置知识 在页面中&#xff0c;虽然可以通过如下的方式使用img标签&#xff0c;来引入svg图标。但是&#xff0c;…...

相机雷达时间同步(基于ROS)

文章目录运行环境&#xff1a;思路&#xff1a;同步前和同步后效果对比1.1创建工作空间1.2创建功能包2.1编写源文件2.2编写头文件2.3编写可执行文件2.4配置文件3.1编译运行4.1录制时间同步后的rosbag4.2rviz可视化rosbag运行环境&#xff1a; ubuntu20.04 noetic usb_cam 速腾R…...

素数环PrimeRing [3*]

目录 素数环PrimeRing [3*] 程序设计 程序分析 素数环PrimeRing [3*] 把1~N这N个整数摆成一个环,要求任意相邻两个数的和为素数。按字典序打印出以1开始的素数环 Input 一个整数N (<=10) Output 每行一个素数环。每个数之间用一个空格隔开。 无解输出 No Solution Sampl…...

mongodb 连接池配置

参考官方描述&#xff1a; 如果spring使用以下mongodb的配置&#xff0c;则默认是没有连接池的 spring:data:mongodb:host: 地址port: 27017database: 数据库名username: 账号password: 密码 每隔一两分钟没有去请求的话就会断开连接重连&#xff0c;每次都要等待5-10秒之间才…...

百度网盘提取码智能获取:如何用3行命令告别密码搜索烦恼

百度网盘提取码智能获取&#xff1a;如何用3行命令告别密码搜索烦恼 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经遇到过这样的情况&#xff1a;在网络上找到一份宝贵的学习资料&#xff0c;点击百度网盘分享链接…...

JavaScript 的速度秘密:深入理解 JIT (即时编译)

⚡ JavaScript 的速度秘密&#xff1a;深入理解 JIT (即时编译) &#x1f914; 为什么 JavaScript 能这么快&#xff1f; 在早期&#xff0c;JavaScript 是一种解释型语言。浏览器逐行读取代码&#xff0c;翻译成机器指令并执行。这种方式启动快&#xff0c;但运行慢&#xf…...

用C++和Eigen库手把手实现UR3机械臂逆解(附完整代码与避坑指南)

从理论到实践&#xff1a;基于Eigen库的UR3机械臂逆运动学完整实现指南 在工业自动化和机器人研究领域&#xff0c;六轴协作机械臂因其灵活性和广泛的应用场景而备受关注。UR3作为Universal Robots旗下的紧凑型协作机械臂&#xff0c;凭借其轻量化设计和用户友好特性&#xff0…...

开发团队如何利用Taotoken实现API Key的统一管理与访问审计

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 开发团队如何利用Taotoken实现API Key的统一管理与访问审计 对于中大型开发团队而言&#xff0c;大模型API的引入在提升效率的同时…...

3小时从零掌握yuzu:在PC上畅玩任天堂Switch游戏的完整指南

3小时从零掌握yuzu&#xff1a;在PC上畅玩任天堂Switch游戏的完整指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在Windows、Linux或Android设备上免费体验任天堂Switch游戏吗&#xff1f;yuzu模拟器正是你…...

数字孪生交互推演方法

数字孪生交互推演方法&#xff08;Digital Twin Interactive Deduction Methodology&#xff09;是用户为中心交互系统工程&#xff08;UCI-SE&#xff09;在研发设计、变型设计以及生产预测环节的最高技术形态 。它改变了传统数字孪生“只能看、不能动”的静态看板僵局&#x…...

3分钟掌握TegraRcmGUI:Switch破解必备的RCM注入神器

3分钟掌握TegraRcmGUI&#xff1a;Switch破解必备的RCM注入神器 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 想要解锁你的Nintendo Switch的无限潜力吗&a…...

为什么你的ElevenLabs广告完播率低于行业均值37%?——专业声学工程师用频谱图还原真相

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs广告配音的核心声学失效诊断 当ElevenLabs生成的广告语音出现“机械感过强”“情感断层”或“语调塌陷”等现象时&#xff0c;问题往往并非源于模型随机性&#xff0c;而是底层声学特征在合…...

YOLO26可运行项目,有上百个模块,都是我自己之前发SCI二区时,集成的一些模块,适合需要算法创新,模块改进的朋友。

智慧改进巡检-YOLO26可运行项目&#xff0c;有上百个模块&#xff0c;发SCI二区时&#xff0c;集成的一些模块&#xff0c;适合需要算法创新&#xff0c;模块改进的朋友。 目标检测&#xff0c;语义分割&#xff0c;关键点识别通用项目。 项目中的所有改进已经按功能类别进…...

Arm Neoverse N3核心RAS架构与错误处理机制解析

1. Arm Neoverse N3核心的RAS架构解析 在服务器级处理器设计中&#xff0c;可靠性(Reliability)、可用性(Availability)和可维护性(Serviceability)构成了RAS技术的三大支柱。Arm Neoverse N3作为面向基础设施的核心设计&#xff0c;其RAS机制通过硬件级错误检测、记录和恢复功…...