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.环境搭建
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>
2.编写控制器UserServlet.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

1.编写控制器UserHandler.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
<%--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
<%--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.请求必须包含某个参数
1.UserHandler.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.请求必须包含参数并且指定参数值
1.修改UserHandler.java

image-20240224141101245

2.结果展示

image-20240224141201463

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

image-20240224141327544

2.结果展示

image-20240224141544349

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

image-20240224141721097

2.匹配多层路径
1.修改UserHandler.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.通过路径变量获取参数
1.修改UserHandler.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不能重复
1.修改UserHandler.java
    /*** 两个重复的url*/@RequestMapping("/l1")public String h1() {return "success";}@RequestMapping("/l1")public String h2() {return "success";}
2.结果展示

image-20240224145020830

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

image-20240224145559819

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

image-20240224145849259

2.修改UserHandler.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.第三题
1.修改UserHandler.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.mzph.cn/web/3086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找不到openjdk-1.8-tools和openjdk-1.8-jconsole

每次打包都报找不到openjdk-1.8-tools和openjdk-1.8-jconsole&#xff0c;但是在项目中并没有用到。 这个是在maven仓库下的druid下的pom文件中。根本没有用到&#xff0c;于是把这两行注释调。解决 .m2\repository\com\alibaba\druid\1.2.6\druid-1.2.6.pom

内网穿透!如何配置frp新版0.56.0的配置文件.toml:提供web、samba、ssh远程连接示例

最新版本的frp在配置上与之前有很大不同&#xff0c;需要使用.toml文件进行配置。其中主要问题出现在toml文件内部。因此&#xff0c;本文将专门讨论这个问题。 一、服务端配置 下载并解压&#xff08;以debian系统为例&#xff09;&#xff1a; sudo apt update sudo apt i…

钡铼IOy系列模块在无人值守智能仓库中的成功运用,提升仓储物流效率

随着科技的不断发展&#xff0c;无人值守智能仓库正成为现代物流行业的一个重要趋势。在这个快节奏的时代&#xff0c;提升仓储物流效率是企业追求的目标之一。钡铼IOy系列模块为无人值守智能仓库的成功运作提供了关键支持。本文将探讨钡铼IOy系列模块在无人值守智能仓库中的应…

Java面试之数据类型

在Java中&#xff0c;数据类型用于声明变量并指定变量能够存储的数据类型。Java的数据类型可以分为两大类&#xff1a;基本数据类型和引用数据类型。 一、基本数据类型&#xff1a; 1.1、整型&#xff1a;用于表示整数值&#xff0c;包括byte、short、int和long。 byte&…

java读取过来的文件乱码?指定字符集。操作文件的几种方式

从文件读取字符串的几种方式 1 使用BufferedReader和FileReader&#xff08;无法指定读取字符集&#xff09; public static void main(String[] args) {StringBuilder content new StringBuilder();try (BufferedReader reader new BufferedReader(new FileReader("f…

深入Linux下的GCC编译器:从入门到精通

目录标题 1、GCC编译器概述2、安装GCC3、GCC的基本使用4、高级功能4.1 多文件编译4.2 静态和动态链接4.3 什么是链接&#xff1f;4.4 静态链接优点缺点 4.5 动态链接优点缺点 4.6 实际应用4.7 编译优化 GCC&#xff08;GNU Compiler Collection&#xff09;是一款免费、开源的编…

Elasticsearch下载

1 最新版下载地址 Download Elasticsearch | Elastic https://www.elastic.co/cn/downloads/elasticsearch 2 其他版本下载地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 7.9.2:https://artifacts.elastic.co/downloads/elasticsearch/elasticsear…

基于springboot+vue+Mysql的篮球竞赛预约平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

在AD中导出所有用户的信息,修改之后导入

方法一 导出用户的名字&#xff0c;上次登录时间&#xff0c;上次密码重置时间&#xff0c;邮件并以CSV格式保存。 Get-ADUser - Filter * -Properties * -SearchBase " dcsuperdoor,dcco, dcnz" |Select -Object Name, lastlogondate, passwordlastset, mail |…

使用uni-app开发app时遇到mqtt.js不可用的问题

使用uni-app开发app时遇到mqtt.js不可用的问题 1 问题背景 基于 Vue3 版本创建了 uni-app 项目用于开发微信小程序&#xff0c;项目中用到了 mqtt.js&#xff08;v4.1.0&#xff09;&#xff0c;编译为微信小程序能够正常运行&#xff0c;但是编译为 APP 后&#xff0c;控制台…

【vue功能】多张图片合并

多张图片合并成一张图片 步骤一&#xff0c;多张图片上传步骤二&#xff0c;循环获取所有绘制图片的总高度new FileReader()方法作用new Image()方法作用介绍 步骤三&#xff0c;合并多张图片canvas.toDataURL()作用-dpr作用 步骤四&#xff0c;下载图片 步骤一&#xff0c;多张…

(六)JSP与Servlet的关系

JSP与Servlet的关系 JSP&#xff08;Java Server Pages&#xff09;是继Servlet后Sun公司推出的新技术。JSP技术在传统的HTML文件中插入Java程序段和JSP标记&#xff0c;从而形成JSP文件&#xff08;*.jsp&#xff09;。用JSP开发的Web应用是跨平台的&#xff0c;既能在Window…

【006期】游戏的开始和结束界面,得分和生命值及其游戏逻辑。

核心代码 int score; int lives;boolean gameOver; void draw() {background(255);if (!gameOver) {/*游戏中的其他所有逻辑写在此处*/displayScoreAndLives(); // 显示得分和生命值} else {displayGameOverScreen(); // 显示游戏结束画面} } void displayScoreAndLives() {fil…

NASA数据集——有源空腔辐射计辐照度监测仪(ACRIM)II 本地格式的 UARS 机载太阳总辐照度(TSI)2022年1月版本

Active Cavity Radiometer Irradiance Monitor (ACRIM) II Total Solar Irradiance (TSI) aboard UARS in Native format 简介 ACRIMII_TSI_UARS_NAT 数据是上层大气研究卫星&#xff08;UARS&#xff09;上的有源空腔辐射计辐照度监测仪 II&#xff08;ACRIM II&#xff09;…

云安全防御篇:如何识别并做好服务器DDoS防护?

伴随着全球互联网业务和云计算的快速发展&#xff0c;作为一种破坏力巨大的攻击方式&#xff0c;DDoS攻击正以超出服务器承受能力的流量淹没网站&#xff0c;导致服务器宕机、企业营业额下跌&#xff0c;甚至企业品牌形象受损。越是面对复杂的攻击&#xff0c;就需要性能更强的…

C++:缺省函数

目录 缺省函数的概念 缺省函数的类型 全缺省 半缺省 缺省函数的声明 C语言和C中函数的区别 缺省函数的概念 缺省函数是对于有参数的函数而言的,缺省的意思就是在函数的定义的时候对函数的参数进行初始化值;在调用的时候在缺省的参数的位置上可以不进行传参; 缺省函数的…

测试大语言模型在嵌入式设备部署的可能性——模型TinyLlama-1.1B-Chat-v1.0

测试模型TinyLlama-1.1B-Chat-v1.0修改推理参数&#xff0c;观察参数变化与推理时间变化之间的关系。 本地环境&#xff1a; 处理器 Intel Core™ i5-8400 CPU 2.80GHz 2.80 GHz 机带 RAM 16.0 GB (15.9 GB 可用) 集显 Intel UHD Graphics 630 独显 NVIDIA GeForce GTX 1050 主…

2万8金句美句格言签名句子ACCESS\EXCEL数据库

优美句子类的数据已经有《33万多优美句子经典句子ACCESS数据库》、《近2万签名的句子网络签名ACCESS数据库》、《24万QQ伤感签名微信签名ACCESS数据库》、《2万多条QQ签名论坛签名大全ACCESS数据库》&#xff0c;今天又遇到一个&#xff0c;感觉也很不错&#xff0c;发上来看看…

数字科技助力垃圾分类展厅,增强内容交互新体验!

如今&#xff0c;许多行业都开始运用数字技术&#xff0c;探索其在展览展示领域中的应用&#xff0c;其中垃圾分类展厅作为现代城市文明建设的重要一环&#xff0c;也通过这些技术的运用&#xff0c;打造出了更加生动且富有科技感的展示空间&#xff0c;它不仅提升公众对垃圾分…

持有消防设施设计乙级资质可承接的业务范围

持有消防设施设计乙级资质的企业&#xff0c;其可承接的业务范围主要包括以下方面&#xff1a; 中型以下工业与民用建筑消防设施设计&#xff1a; 民用建筑&#xff1a;可承担单体建筑面积在2万平方米至4万平方米之间的中型民用建筑的消防设施工程专项设计&#xff0c;这类建筑…