Spring MVC 快速入门指南及实战演示

news2024/9/24 17:19:12

1、SpringMVC简介

1.1 背景 

Servlet属于web层开发技术,技术特点:

1. 每个请求都需要创建一个Servlet进行处理
2. 创建Servlet存在重复操作
3. 代码灵活性低开发效率低

是否有技术方案可以解决以上问题?

1.2 SpringMVC概述 

  • SpringMVC是一种基于Java实现MVC模型的轻量级Web框架
  • 详细介绍见官网:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc
  • 优点
    • 使用简单、开发便捷(相比于Servlet)
    •  灵活性强

1.3 技术体系定位 

  • web程序通过浏览器访问前端页面,发送异步请求到后端服务器
  • 后台服务器采用三层架构进行功能开发
    • 表现层负责接收请求和数据然后将数据转交给业务层
    • 业务层负责调用数据层完成数据库表的增删改查,并将结果返给表现层
    • 表现层将数据转换成json格式返回给前端 
  • 前端页面将数据进行解析最终展示给用户

变现层采用SpringMVC框架,SpringMVC主要负责的内容有:

  • controller如何接收请求和数据
  • 如何将请求和数据转发给业务层
  • 如何将响应数据转换成json发回到前端

2、快速入门 

2.1 目的

能基于SpringMvc快速开发一个web应用

2.2 需求

搭建SpringMvc工程,定义UserController.save()方法处理/save请求,返回"{'module':'springmvc'}"。

2.3 步骤

  1. 创建Maven项目,并导入对应的jar包
  2. 创建控制器
  3. 创建配置
  4. 创建Tomcat的Servlet容器配置类

2.4、代码实操

  1. 创建Maven项目,并导入对应的jar包,打开IDEA,创建一个新的maven项目

添加SpringMVC需要的依赖 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wwc</groupId>
  <artifactId>springmvc_01_quickstart</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
   </properties>
   <!--1. 导入SpringMVC与servlet的坐标--> 
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>8080</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

说明:servlet的坐标为什么需要添加

  • scope是maven中jar包依赖作用范围的描述,
  • 如果不设置默认是`compile`在在编译、运行、测试时均有效
  • 如果运行有效的话就会和tomcat中的servlet-api包发生冲突,导致启动报错
  • provided代表的是该包只在编译和测试的时候用,运行的时候无效直接使用tomcat中的,就避免冲突

2 创建控制器类

//2.制作控制器类,等同于Servlet
//2.1必须是一个spring管理的bean
//2.2定义具体处理请求的方法
//2.3设置当前方法的访问路径
//2.4设置响应结果为String类型数据
@Controller
public class UserController {

    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "springmvc";
    }
}

3 创建配置类

//3.定义配置类加载Controller对应的bean
@Configuration
@ComponentScan("com.WWC.controller")
public class SpringMvcConfig {
}

4 创建Tomcat的Servlet容器配置类 

 

//4.定义servlet容器的配置类
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    //加载springMVC配置
    protected WebApplicationContext createServletApplicationContext() {
        //初始化WebApplicationContext对象
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //加载指定配置类
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    //设置Tomcat接收的请求哪些归SpringMVC处理
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //设置spring相关配置
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

配置Tomcat环境 

浏览器访问 

至此SpringMVC的入门案例就已经完成。 

2.5、测试工具 

2.5.1 PostMan简介

代码编写完后,我们要想测试,只需要打开浏览器直接输入地址发送请求即可。但是我们如果我们发送的是`GET`请求可以直接使用浏览器,但是如果要发送的是`POST`请求呢?

如果要求发送的是post请求,我们就得准备页面在页面上准备form表单,测试起来比较麻烦。所以我们就需要借助一些第三方工具,如PostMan.

PostMan是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 

  •  作用:常用于进行接口测试
  • 特征
    • 简单
    • 实用
    • 美观
    •  大方

2.5.2 PostMan安装

登入官网安装即可

看到如下界面,就说明已经安装成功。

 

第一次请求需要创建一个新的目录,后面就不需要创建新目录,直接保存到已经创建好的目录即可 

2.6 知识点总结

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

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

相关文章

C#加班统计次数

C#加班统计次数 运行环境&#xff1a;vs2022 .net 8.0 社区版 1、用C#语言&#xff1b;2、有界面上传Excel文件; 3、对Excel列&#xff08;部门、人员姓名、人员编号、考勤时间 &#xff09;处理&#xff1a;&#xff08;1&#xff09;按人员编号、考勤日期分组且保留原来字段&…

矩阵快速幂优化dp

之前一直想找一个矩阵快速幂的专题&#xff0c;但是都没有题目来总结&#xff0c;今天就来水一下 这个题目的转移方程我们可以很快想出来&#xff0c;但是我们如何作为我们矩阵快速幂的敲门砖呢&#xff1f; 有一个问题要注意的是我们由于这题不是取模的&#xff0c;可能会溢出…

网络安全-渗透测试工具及插件介绍和使用方法

1、Burp Suite Burp Suite 是用于攻击web 应用程序的集成平台。 是一款广泛使用的网络安全工具套件&#xff0c;主要用于测试Web应用程序的安全性。它可以帮助安全研究人员、渗透测试人员和开发人员发现和利用Web应用程序中的安全漏洞。 &#xff08;1&#xff09;下载和安装&a…

QuanTide-weekly第1期

本周Po文 这周我们共发表5篇文章。《基于 XGBoost 的组合策略…》等两篇详细讲解了机器学习构建组合策略的框架和常见问题。 文章要点与结论&#xff1a; 通过两阶段式方案实现多因子、多资产的组合策略构建。第一阶段基于XGBoost构建多个多因子单标的模型&#xff0c;第二阶…

安卓基本布局(下)

TableLayout 常用属性描述collapseColumns设置需要被隐藏的列的列号。shrinkColumns设置允许被伸缩的列的列号。stretchColumns设置允许被拉伸的列的列号。 <TableLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/TableL…

yolov3 neck部分搭建,以及完整的网络搭建代码,可直接运行

目录 1. 用来实现共同的一些操作 common_module.py 2.1 使用到的通道配置 net_config.py 2.2 主干网络 darknet53.py 3. predict部分 neck.py 4. 拼凑成完整的yolov3网络 Yolov3.py 5. 网络结构如下 上次提到了搭建了主干网络&#xff0c;这个加上neck就可以构建…

内网穿透--meterpreter端口转发实验

实验背景 通过公司带有防火墙功能的路由器接入互联网&#xff0c;然后由于私网IP的缘故&#xff0c;公网无法直接访问内部主机&#xff0c;则需要通过已连接会话&#xff0c;代理穿透访问内网主机服务。 实验设备 1.路由器一台 2.内网 Win 7一台 3.公网 Kali 一台 4.网络 …

LeetCode面试150——238除自身以外数组的乘积

题目难度&#xff1a;中等 默认优化目标&#xff1a;最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 左右乘积列表 参考文献 1 题目描述 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 an…

第十二节、人物下蹲

一、SuB-State Machine(子状态机) 1、创建一个子状态 2、可以选择退出的动画 二、人物下蹲 1、人物动画下蹲 2、人物碰撞体下蹲

日志远程同步实验

目录 一.实验环境 二.实验配置 1.node1发送方配置 &#xff08;1&#xff09;node1写udp协议 &#xff08;2&#xff09;重启服务并清空日志 2.node2接收方配置 &#xff08;1&#xff09;node2打开接受日志的插件&#xff0c;指定插件用的端口 &#xff08;2&#xff…

C#和S7-1200PLC S7.NET通信

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…

技术方案/建设方案/可研报告/实施方案怎么写?3000份WORD全学会

解决方案是针对客户某些已经出现的或者可以预期的问题(技术、业务、管理等)&#xff0c;不足&#xff0c;缺陷&#xff0c;需求等&#xff0c;所提出的一个解决问题的方案&#xff0c;同时能够确保加以有效执行。 解决方案不只是一篇文档&#xff0c;而是一整套的行动计划&…

论文翻译 | Is a Question Decomposition Unit All We Need? 我们是否只需要一个‘问题分解单元’?

摘要 大型语言模型(LMs)已经在许多自然语言处理(NLP)基准测试中取得了最先进的性能。 随着新基准数量的增加&#xff0c;我们构建了更大、更复杂的LM。然而&#xff0c;由于与之相关的成本、时间和环境影响&#xff0c;构建新的LM可能不是一个理想的选择。我们探索了另…

Midjourney咒语之油画风格纸雕艺术3D剪纸

油画风格 Captain America painting in the style of Vincent Van Gogh, Vincent Van Gogh style oil painting, oil painting, Van Gogh, Impasto, impasto style, lots of paint --v 5.1 --style raw --ar 3:2 lion king painting in the style of Vincent Van Gogh, Vincent…

【多模态LLM】多模态理解评测标准(图生文)

note 评测图片识别、理解、分析、推理能力&#xff1b;评测多轮对话&#xff1b;扩大评测场景&#xff08;日常生活、教育娱乐等&#xff09;SuperClue-V采用6个标准&#xff0c;即正确性、相关性、流畅性、知识延伸、输出样式多样化、多感官信息融合&#xff0c;来定量的评价…

一键生成专业PPT:2024年AI技术在PPT软件中的应用

不知道你毕业答辩的时候有没有做过PPT&#xff0c;是不是也被这个工具折磨过。没想到现在都有AI生成PPT的工具了吧&#xff1f;这次我就介绍几款可以轻松生成PPT的AI工具吧。 1.笔灵AIPPT 连接直达&#xff1a;https://ibiling.cn/ppt-zone 这个工具我最早是用它来写一些专…

Selenium自动化测试入门:浏览器多窗口切换【建议收藏】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 有时web应用会打开多个浏览器窗口&#xff0c;当我们要定位新窗口中的元素时&#xff0c;我们需要将webDriver的handle&#xff08;句柄&#xff09;指定到新窗口…

一篇了解:性能测试工具——JMeter的安装

一、下载 环境要求&#xff1a;Java版本在8及以上。 安装链接&#xff1a;JMeter安装链接 下载压缩包之后解压即可。 二、配置 解压之后进入到bin目录下&#xff0c;双击jmeter.bat即可进入到该软件。 但是有一种更方便的方式进入jmeter软件&#xff1a; 复制该文件的bin文件…

MySQL操作表

文章目录 1.增加表2.查看表3.修改表修改表名&#xff1a;插入数据&#xff1a;新增一列&#xff1a;修改一列类型&#xff1a;修改列名&#xff1a;删掉一列&#xff1a; 4.删除表 1.增加表 创建表语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datat…

深入理解Kubernetes中的Pod:为什么需要Pause Pod及其核心作用

引言 在Kubernetes这一强大的容器编排系统中&#xff0c;Pod作为最小的部署和管理单位&#xff0c;扮演着至关重要的角色。本文将进一步深入探讨Pod的定义、基本概念&#xff0c;特别是为什么需要Pause Pod&#xff0c;以及Pod内部容器如何共享资源&#xff0c;同时解释Kubern…