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

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

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

深入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;…

【vue功能】多张图片合并

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

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;就需要性能更强的…

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

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

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

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

如何客观评价小米首款汽车产品SU7

作者&#xff1a;艾泊宇 在深入探讨小米首款汽车产品SU7的客观评价时&#xff0c;我们应摒弃个人情感&#xff0c;忽视市场营销的噪音&#xff0c;并过滤掉网络上的负面评价&#xff0c;专注于产品本身&#xff0c;这里我们需要用到我的产品交集模型 从用户角度看 数据是揭示用…

Day1--什么是网络安全?网络安全常用术语

目录 1. 什么是网络安全&#xff1f; 信息系统&#xff08;Information System&#xff09; 信息系统安全三要素&#xff08;CIA&#xff09; 网络空间安全管理流程 网络安全管理 2. 网络安全的常用术语 3. 网络安全形势 4. 中国网络安全产业现状 1. 什么是网络安全&am…

wps/word中字体安装教程

问题&#xff1a;下载的字体怎么导入wps/word wps或word中没有相应字体&#xff0c;怎么导入。其实方法很简单。 Step 1&#xff1a;下载字体 首先&#xff0c;在网上搜索自己喜欢的字体&#xff0c;然后下载到本地。字体的格式通常是.ttf 下面是我网上找的字体&#xff08…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

在android系统中fence用于不同模块需要访问同一块buffer的同步&#xff0c;例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。 camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。 camera sync是高通camx框架里面用于各个…

【LeetCode】191. 位1的个数

题目链接&#xff1a;191. 位1的个数 题目描述&#xff1a; 解法1&#xff1a;题意很简单就不说了&#xff0c;这里先说一种最简单的解法&#xff0c;首先我们知道一点&#xff1a;n&(n-1)相当于把是将n的二进制位中最低位的1变为了0&#xff0c;其它位保持不变&#xff0…

强制内容在一行显示

强制内容在一行显示 .one {white-space: nowrap;overflow: hidden;text-overflow: ellipsis; /* 可选&#xff0c;当内容超出一行时&#xff0c;用省略号表示 */ }效果

【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例

概率模型在机器学习中的应用&#xff1a;以朴素贝叶斯分类器为例 一、概率模型的基本原理二、朴素贝叶斯分类器的原理与实现三、朴素贝叶斯分类器的应用与挑战四、结论与展望 在大数据与人工智能时代&#xff0c;概率模型在各个领域发挥着至关重要的作用。概率模型以概率论和统…

基于STM32F4系列的ETH IAP在线升级程序

目录 1、前言 2、以太网的移植&#xff08;无操作系统&#xff09; 3、移植FATS 系统 4、移植ETH 驱动及 DP83848驱动 5、Tftp 服务程序 6、注意事项 ​7、代码 资料下载地址&#xff1a;基于STM32F4系列的ETH IAP在线升级程序 1、前言 此bootloader程序可以通过http…

网络爬虫之HTTP原理

** URI和URL URI的全称Uniform Resource Identifier &#xff0c;即统一资源标志符。URL的全称Uniform Resource Locator 即统一资源定位符。 URL是URI的子集&#xff0c;也就是每一个URL就是URI&#xff0c;但是每一个URI不一定是URL&#xff0c;URI还有一个子类叫URN&#x…

从零开始写 Docker(十二)---实现 mydocker stop 停止容器

本文为从零开始写 Docker 系列第十二篇&#xff0c;实现类似 docker stop 的功能&#xff0c;使得我们能够停止指定容器。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原理&#x…