SpringMVC基础篇(一)

news/2024/5/28 2:04:27/ 标签: java, spring, springmvc

文章目录

    • 1.基本介绍
        • 1.特点
        • 2.SpringMVC跟SpringBoot的关系
    • 2.快速入门
        • 1.需求分析
        • 2.图解
        • 3.环境搭建
          • 1.创建普通java工程
          • 2.添加web框架支持
          • 3.配置lib文件夹
            • 1.导入jar包
            • 2.Add as Library
            • 3.以后自动添加
          • 4.配置tomcat
            • 1.配置上下文路径
            • 2.配置热加载
          • 5.src下创建Spring配置文件applicationContext-mvc.xml
          • 6.配置中央控制器web.xml读取Spring配置文件
        • 4.具体实现
          • 文件目录
          • 1.编写首页面login.jsp
          • 2.编写控制器UserServlet.java
          • 3.编写视图解析器要跳转的页面login_ok.jsp
          • 4.配置视图解析器和容器扫描applicationContext-mvc.xml
          • 5.配置login.jsp的action
        • 5.结果展示
          • 1.login.jsp
          • 2.点击登录
        • 6.注意事项和细节说明
          • 1.控制器UserServlet指定url的时候可以省略value
          • 2.关于web.xml文件中配置读取Spring的配置文件
    • 3.SpringMVC执行流程
    • 4.RequestMapping注解使用方式(不要背!)
        • 1.@RequestMapping可修饰方法和类
          • 文件目录
          • 1.编写控制器UserHandler.java
          • 2.编写success.jsp
          • 3.编写request.jsp
          • 4.结果展示
            • 1.首页
            • 2.点击提交
          • 5.注意事项
            • 1.如果指定了post请求,使用其他请求方式则会报错
            • 2.如果没有指定请求方式则get或post都可以
        • 2.@RequestMapping可指定params支持简单表达式
          • 文件目录
          • 1.基本介绍
          • 2.请求必须包含某个参数
            • 1.UserHandler.java添加方法
            • 2.编写request.jsp
            • 3.结果展示
          • 3.请求必须包含参数并且指定参数值
            • 1.修改UserHandler.java
            • 2.结果展示
          • 4.需要有参数并且值不等于什么
            • 1.修改UserHandler.java
            • 2.结果展示
        • 3.@RequestMapping支持Ant风格资源地址
          • 1.基本介绍
          • 2.匹配多层路径
            • 1.修改UserHandler.java
            • 2.结果展示
        • 4.@RequestMapping可配合@PathVariable映射URL绑定的占位符
          • 1.基本介绍
          • 2.通过路径变量获取参数
            • 1.修改UserHandler.java
            • 2.结果展示
        • 5.@RequestMapping注意事项和细节
          • 1.映射的URL不能重复
            • 1.修改UserHandler.java
            • 2.结果展示
          • 2.请求方式简写
            • 1.基本介绍
            • image-20240224145148794
            • 2.修改UserHandler.java
            • 3.结果展示
          • 3.提交数据简写
            • 1.基本介绍
            • 2.修改UserHandler.java
            • 3.结果展示
    • 5.课后练习
        • 1.题目
        • 2.第一题
        • 3.第三题
          • 1.修改UserHandler.java
          • 2.homework01.jsp
          • 3.结果展示

1.基本介绍

1.特点

image-20240223192448774

2.SpringMVC跟SpringBoot的关系

image-20240223192736386

2.快速入门

1.需求分析

image-20240223192930065

2.图解

image-20240223193451223

3.环境搭建
java_24">1.创建普通java工程

image-20240223194100727

2.添加web框架支持

image-20240223194147591

3.配置lib文件夹
1.导入jar包

image-20240223194449878

2.Add as Library

image-20240223195934690

3.以后自动添加

image-20240223200030178

4.配置tomcat
1.配置上下文路径

image-20240224103832982

2.配置热加载

image-20240224103924512

5.src下创建Spring配置文件applicationContext-mvc.xml

image-20240223200341022

image-20240223200417284

6.配置中央控制器web.xml读取Spring配置文件
  • 服务器启动则自动装载这个servlet,实例化servlet,调用init方法,读取spring配置文件
<?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"><!--配置中央控制器--><!--只要服务器启动,这个servlet就调用init方法读取spring的配置文件,并且接收所有请求--><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--init方法可以通过ServletConfig来读取这个初始化参数--><init-param><param-name>contextConfigLocation</param-name><!--读取spring配置文件--><param-value>classpath:applicationContext-mvc.xml</param-value></init-param><!--服务器启动就装载这个servlet,直接创建servlet实例,调用init方法--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><!--所有的请求都交给这servlet处理--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
4.具体实现
文件目录

image-20240224105354224

1.编写首页面login.jsp
<%--Date: 2024/2/23Time: 20:44User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="">username:<input name="username" type="text">password:<input name="password" type="password"><input type="submit" value="登录">
</form>
</body>
</html>
java_125">2.编写控制器UserServlet.java
java">package com.sun.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author 孙显圣* @version 1.0*/
//表示这是一个控制器
@Controller
public class UserServlet {//这个方法的网址是上下文路径 + login@RequestMapping(value = "/login")public String login() {System.out.println("login ok...");//视图解析器配置的前缀是/WEB-INF/pages/ 后缀是.jsp所以这个资源的路径就是/WEB-INF/pages/login_ok.jspreturn "login_ok"; //返回的这个值会交给视图解析器,指定要跳转的页面}
}
3.编写视图解析器要跳转的页面login_ok.jsp
<%--Date: 2024/2/23Time: 20:54User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>ok!</h1>
</body>
</html>
4.配置视图解析器和容器扫描applicationContext-mvc.xml
<?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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--容器扫描--><context:component-scan base-package="com.sun.web"/><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"><!--配置前缀和后缀--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean></beans>
5.配置login.jsp的action

image-20240224104147538

5.结果展示
1.login.jsp

image-20240224105434692

2.点击登录

image-20240224105458408

image-20240224105448068

6.注意事项和细节说明
1.控制器UserServlet指定url的时候可以省略value

image-20240224110906407

2.关于web.xml文件中配置读取Spring的配置文件

image-20240224111017861

image-20240224111135354

image-20240224111147986

3.SpringMVC执行流程

image-20240224121542328

4.RequestMapping注解使用方式(不要背!)

1.@RequestMapping可修饰方法和类
文件目录

image-20240224130136558

java_235">1.编写控制器UserHandler.java
java">package com.sun.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;/*** @author 孙显圣* @version 1.0*/
@Controller
@RequestMapping(value = "/user")
public class UserHandler {/*** 1.requestMethod支持四个常用选项,get,post,delete,put* 2.如果不写method参数则默认支持get和post* 3.目前这个buy方法的访问路径是上下文路径 + user/buy*/@RequestMapping(value = "/buy", method = RequestMethod.POST)public String buy() {System.out.println("buy方法被调用");return "success";}}
2.编写success.jsp
java"><%--Date: 2024/2/24Time: 12:40User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>success</h1>
</body>
</html>
3.编写request.jsp
java"><%--Date: 2024/2/24Time: 12:43User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="user/buy" method="post"><input type="submit" value="提交">
</form>
</body>
</html>
4.结果展示
1.首页

image-20240224133830110

2.点击提交

image-20240224133855776

image-20240224133848615

5.注意事项
1.如果指定了post请求,使用其他请求方式则会报错

image-20240224134246207

image-20240224134310894

2.如果没有指定请求方式则get或post都可以
2.@RequestMapping可指定params支持简单表达式
文件目录

image-20240224140401963

1.基本介绍

image-20240224135027610

2.请求必须包含某个参数
java_344">1.UserHandler.java添加方法
java">    /*** 会将参数bookid自动填充到方法中* @param bookid* @return*/@RequestMapping(value = "/find", method = RequestMethod.POST, params = "bookid")public String search(String bookid) {System.out.println("bookid=" + bookid);return "success";}
2.编写request.jsp
<%--Date: 2024/2/24Time: 12:43User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="user/find" method="post">输入bookid:<input name="bookid" type="text"><input type="submit" value="提交">
</form></body>
</html>
3.结果展示

image-20240224140620866

image-20240224140632295

image-20240224140638300

3.请求必须包含参数并且指定参数值
java_394">1.修改UserHandler.java

image-20240224141101245

2.结果展示

image-20240224141201463

4.需要有参数并且值不等于什么
java_404">1.修改UserHandler.java

image-20240224141327544

2.结果展示

image-20240224141544349

3.@RequestMapping支持Ant风格资源地址
1.基本介绍

image-20240224141721097

2.匹配多层路径
java_420">1.修改UserHandler.java
java">    /*** 要求可以匹配 /user/message/aa, /user/message/aa/bb/cc* @return*/@RequestMapping(value = "/message/aa/**")public String im() {System.out.println("匹配成功");return "success";}
2.结果展示

image-20240224142418810

image-20240224142439596

4.@RequestMapping可配合@PathVariable映射URL绑定的占位符
1.基本介绍

image-20240224142811521

2.通过路径变量获取参数
java_448">1.修改UserHandler.java
java">    /*** 可以编写路径变量,直接在路径中接受变量,结合@PathVariable来进行参数传递** @return*/@RequestMapping(value = "/reg/{username}/{password}")public String register(@PathVariable("username") String name, @PathVariable("password") String password) {System.out.println("username = " + name + " password = " + password);return "success"; //请求转发}
2.结果展示

image-20240224143702209

image-20240224143711263

5.@RequestMapping注意事项和细节
1.映射的URL不能重复
java_473">1.修改UserHandler.java
java">    /*** 两个重复的url*/@RequestMapping("/l1")public String h1() {return "success";}@RequestMapping("/l1")public String h2() {return "success";}
2.结果展示

image-20240224145020830

2.请求方式简写
1.基本介绍
image-20240224145148794
java_499">2.修改UserHandler.java
java">    /*** 这样表示的就是get类型的请求,请求地址为“/buy1”*/@GetMapping("/buy1")public String buy_() {return "success";}
3.结果展示

image-20240224145559819

3.提交数据简写
1.基本介绍

image-20240224145849259

java_522">2.修改UserHandler.java
java">    //提交的信息如果包含这个参数则会自动填充,否则会传入一个空值@GetMapping("/hello")public String hello(String email) {System.out.println(email);return "success";}
3.结果展示

image-20240224150305065

image-20240224150311409

image-20240224150325939

image-20240224150331787

5.课后练习

1.题目

image-20240224151703113

2.第一题

image-20240224151653390

3.第三题
java_555">1.修改UserHandler.java
java">    //课后练习@PostMapping("/computer")public String computer(String brand, String price, String num) {System.out.println("brand=" + brand + " price=" + price + " num=" + num);return "success";}
2.homework01.jsp
<%--Date: 2024/2/24Time: 15:21User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="user/computer" method="post">品牌:<input name="brand" type="text"><br>价格:<input name="price" type="text"><br>数量:<input name="num" type="text"><br><input type="submit" value="提交">
</form>
</body>
</html>
3.结果展示

image-20240224153140501

image-20240224153147054


http://www.ppmy.cn/news/1434673.html

相关文章

【深度学习】DDoS-Detection-Challenge aitrans2024 入侵检测,基于机器学习(深度学习)判断网络入侵

当了次教练&#xff0c;做了个比赛的Stage1&#xff0c;https://github.com/AItransCompetition/DDoS-Detection-Challenge&#xff0c;得了100分。 一些记录&#xff1a; 1、提交的flowid不能重复&#xff0c;提交的是非入侵的数量和数据flowid,看check.cpp可知。 2、Stage…

开源大模型 Llama 3

开源大模型Llama 3是一个在多个领域都展现出卓越性能的大模型。下面将为您介绍Llama 3的特性和一些简单的使用案例。 一、Llama 3介绍 Llama 3在Meta自制的两个24K GPU集群上进行预训练,使用了超过15T的公开数据,其中5%为非英文数据,涵盖30多种语言。这个训练数据集是前代L…

达梦(DM)数据库管理表

达梦DM数据库管理表 管理表管理表的准则表的存储空间上限表的存储位置 创建表创建普通表指定表的聚集索引查询建表更改表删除表清空表查看表定义查看表空间使用 表是数据库中数据存储的基本单元&#xff0c;是对用户数据进行读和操纵的逻辑实体&#xff0c;表由列和行组成&…

SpringCloud系列(14)--Eureka服务发现(Discovery)

前言&#xff1a;在上一章节中我们说明了一些关于服务信息的配置&#xff0c;在本章节则介绍一些关于Discovery的知识点及其使用 1、Discovery是什么&#xff0c;有什么用 Discovery&#xff08;服务发现&#xff09;是eureka的功能和特性&#xff0c;有时候微服务可能需要对外…

mpu6050姿态解算与卡尔曼滤波(5)可应用于51单片机的卡尔曼滤波器

博客4中给出的滤波器状态维数为4维&#xff0c;测量量为3维&#xff0c;每次滤波需要做不少矩阵乘法和求逆运算。如果想在51单片机上实现&#xff0c;计算耗时会比较长。考虑应用场合可以对滤波器适当做一些简化&#xff0c;计算量会大大减小。 首先&#xff0c;陀螺和加速度计…

【论文阅读】互连网络的负载平衡路由算法 (RLB RLBth)

前言Oblivious Load Balancing 不经意路由负载平衡 1. oblivious routing 不经意/无关路由的背景知识 1. oblivious routing, adaptive routing & minimal/non-minimal routing algorithms 2. Balancing a 1-Dimensional ring: RLB and RLBth 一维 ring 的 RLB and RLBth 1…

[MoeCTF-2022]Sqlmap_boy

title:[MoeCTF 2022]Sqlmap_boy 查看网页源代码&#xff0c;得到提示 <!-- $sql select username,password from users where username".$username." && password".$password.";; --> 用万能密码绕过&#xff0c;用’"闭合 爆数据库…

C++笔记:类和对象(一)->封装

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量&#xff0c;类型就像是定义了数据的规则&#xff0c;而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型&#xff0c;而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树&#xff0c;主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序&#xff0c;并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括&#xff1a; B树为…

【数据库】Redis

文章目录 [toc]Redis终端操作进入Redis终端Redis服务测试切换仓库 String命令存储字符串普通存储设置存储过期时间批量存储 查询字符串查询单条批量查询 Key命令查询key查询所有根据key首字母查询判断key是否存在查询指定的key对应的value的类型 删除键值对 Hash命令存储hash查…

【ARMv9 DSU-120 系列 -- Mapping for address target groups to CHI bus master ports】

文章目录 Mapping for address target groups to CHI bus master ports映射决定过程示例CHI id bit settingMapping for address target groups to CHI bus master ports 在DSU-120(DynamIQ™共享单元-120)中,地址目标组与总线主端口之间的映射关系是通过在复位时决定哪些总…

春秋云镜 CVE-2023-51048

靶标介绍&#xff1a; S-CMS v5.0 被发现存在SQLI。 开启靶场 根据题目查找S-CMS v5.0漏洞&#xff0c;百度没有查询到&#xff0c;使用必应搜索S-CMS v5.0 查找到githubCVE-2023-51052的描述 S-CMS v5.0 was discovered to contain a SQL injection... CVE-2023-51052 Git…

阿斯达年代记三强争霸开服 游戏下载安装+账号注册教程一览

阿斯达年代记国际服是一款MMORPG手游&#xff0c;游戏支持自由交易是一款可以搬砖的游戏&#xff0c;游戏目前开放的4个职业&#xff0c;战士&#xff0c;弓箭手&#xff0c;祭司&#xff0c;斗士&#xff0c;其中战士是拉剑盾为主的职业&#xff0c;主T&#xff0c;由于这1款游…

7.Eureka注册中心

将user-service服务注册到eureka 将order-service服务注册到eureka eureka:client:service-url:defaultZone: http://localhost:10086/eureka/ <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix…

视频评价工具AVQT介绍

AVQT介绍 AVQT(Advanced Video Quality Tool)是一个用于评估压缩视频感知质量的工具。它通过模拟人类如何评价压缩视频的质量来进行工作。AVQT 是是苹果在 WWDC 21 上推出的一款评估视频感知质量的工具。AVQT可以用于计算视频的帧级和片段级得分,其中片段通常持续几秒钟。这…

OpenCV 如何实现边缘检测器

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何实现拉普拉斯算子的离散模拟 下一篇 :OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数…

【JAVA基础之IO】字节流、字符流以及乱码问题

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1. IO概述 1.1 什么是IO 1.2 IO的分类 1.3 字节和字符流的顶级父类 2. 字节流 2.1 一切皆为字节 2.2 字节输出流【OutputStream】 2.3 FileOutputStream类…

【C++风云录】精益求精:探索C++开发中的性能优化艺术

超越性能瓶颈&#xff1a;C项目中的质量保证与性能调优策略 前言 在现代软件开发中&#xff0c;自动化测试和质量保证是确保软件质量和稳定性的关键环节。通过使用各种性能分析工具和优化工具&#xff0c;开发人员能够更好地了解程序的行为并改进代码质量。 欢迎订阅专栏&…

【数据仓库工具箱】DW/BI系统的核心元素和基本要求

核心元素 DW/BI 环境划分为4个不同的&#xff0c;各具特色的组成部分。分别是&#xff1a;操作型源数据&#xff0c;ETL系统&#xff0c;数据展现和商业智能应用。 操作型源数据 记录的是操作型系统&#xff0c;用于获取业务事务。源数据关注的是处理性能和可用性。源系统一般…

python实现爬虫例子2

网络爬虫是一个可以自动抓取互联网内容的程序。Python有很多库可以用来实现网络爬虫&#xff0c;其中最常用的是requests&#xff08;用于发送HTTP请求&#xff09;和BeautifulSoup&#xff08;用于解析HTML&#xff09;。 以下是一个简单的Python网络爬虫示例&#xff0c;该爬…