【SpringMVC篇】详解SpringMVC入门案例

news2024/10/6 2:29:30

🎊专栏【SpringMVC】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🎍SpringMVC简介
    • ⭐优点
  • 🌺SpringMVC入门案例
    • ⭐案例用到的注解
    • 🎆延申
  • 🌺入门案例流程分析
  • 🍔简化入门案例

在这里插入图片描述
Spring MVC是Spring框架中的一员,是目前最主流的Java EE Web框架之一。在企业级开发中,Spring MVC有非常广泛的应用。

Spring MVC基于MVC设计模式,将web层进行职责解耦,基于请求映射将请求分派到指定的控制器进行处理。它主要特点有:

使用DispatcherServlet作为前端控制器,将请求调度到控制器
支持灵活的请求映射方式,方便接口对接
提供强大的数据绑定和验证机制
支持多种视图技术,可以方便与不同UI框架集成
拥有强大的扩展点,可以自定义很多组件
同时,Spring MVC作为Spring框架的一部分,可以非常容易地集成Spring的其他模块,如Spring IoC、Spring JDBC等。这为企业级应用提供了一种非常灵活而强大的web框架。

以上补充了Spring MVC的定位、主要特点等内容,使开头部分更丰富充实,希望这些补充内容确实能够帮助读者更好地了解Spring MVC

通过跟随本文,你可以学习创建SpringMVC项目,编写Controller处理请求,配置SpringMVC加载bean,并运行调试一个简单的案例。这将让你对SpringMVC有最直观的感受,打下坚实的基础。跟我一起开始SpringMVC之旅吧!

🎍SpringMVC简介

Spring MVC是一种基于Java开发的Web应用程序框架,它是Spring Framework的一部分。它提供了一种模型-视图-控制器(Model-View-Controller,MVC)的架构模式,用于构建灵活、可维护和可扩展的Web应用程序。

⭐优点

  • 使用简单,开发便捷(相对于Servlet)
  • 灵活性强

🌺SpringMVC入门案例

创建项目

在这里插入图片描述

在pom.xml文件中导入包和springmvc坐标,servlet坐标

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

在这里插入图片描述

添加tomcat插件

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

在这里插入图片描述

创建UserController类
在这里插入图片描述
在这里插入图片描述

package com.example.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//使用@Controller,定义bean
@Controller
public class UserController {
    //设置当前操作的访问路径
    @RequestMapping("/save")
    //设置当前操作的返回值类型
    @ResponseBody  //@ResponseBody把你返回的东西整体作为响应的内容给到外面
    public String save(){
        System.out.println("user save ...");
    //返回一个json数据
        return "{'module':'springmvc'}";
    }
}

在这里插入图片描述

创建新的包,来配置SpringMVC
在这里插入图片描述
创建SpringMVC的配置文件,加载controller对应的bean

package com.example.config;


import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//配置类
@Configuration
//扫描
@ComponentScan("com.example.controller")
public class SpringMvcConfig {
    
}

定义一个servlet容器启动的配置类,在里面加载spring的配置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

package com.example.config;

//定义一个servlet容器启动的配置类,在里面加载spring的配置

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletConfig extends AbstractDispatcherServletInitializer {
    //加载springmvc容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
    //设置哪些请求归属springmvc处理
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    //加载spring容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

在这里插入图片描述

启动程序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运行localhost/save,运行成功
在这里插入图片描述
请添加图片描述

⭐案例用到的注解

请添加图片描述
请添加图片描述
请添加图片描述

🎆延申

我们在UserController类中加上这一段代码
保持原来的代码不变

 @RequestMapping("delete")
    @ResponseBody
    public String delete(){
        System.out.println("user delete ...");
        return "{'module':'springmvc delete'}";
    }

在这里插入图片描述

这次我们不运行localhost/save了,我们运行localhost/delete
运行成功

在这里插入图片描述
所以以后我们配置好一个springmvc案例后,再开发功能时,不用重新新建,直接在原项目里面写入即可

🌺入门案例流程分析

请添加图片描述

🍔简化入门案例

我们修改ServletConfig里面的代码

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

在这里插入图片描述

运行,成功
在这里插入图片描述

通过这个简单的入门案例,我们已经体验了Spring MVC的基本用法,构建了一个最小可运行的Spring MVC应用。但要真正使用Spring MVC进行企业级Web开发,我们还需要学习许多更高级的功能。

例如Spring MVC强大的视图技术,可以轻松集成各种模版引擎,而不仅仅是返回字符串。数据验证功能可以保证数据合法性。文件上传和下载更方便处理文件内容。拦截器功能可以实现日志、权限等通用处理。还有国际化、主题切换、RESTful服务等等。

Spring MVC构建的应用可以轻松应对复杂的企业级需求。它的扩展点设计更让我们可以自定义各种组件。一定要继续深入学习Spring MVC,以应对工作中的各种挑战。

本文只是入门第一步。如果大家在学习和使用Spring MVC过程中,遇到任何问题,请积极到评论区讨论。
在这里插入图片描述

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

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

相关文章

SpringBoot整合Jaspty数据库密码加密

1.application.yml配置 2.利用jaspty工具类将数据库密码明文加密 /*** 明文加密*/public static String encrypt(String str,String pwd) {BasicTextEncryptor basicTextEncryptor new BasicTextEncryptor();basicTextEncryptor.setPassword(pwd);String ciphertext basicTe…

京东代码规范与解决图片底部空白缝隙问题

解决图片底端默认空白缝隙问题 给图片加边框&#xff0c;因为图片和文字底线对齐故会留出空白的部分 解决 &#xff1a;给图片vertical-align: middle; 块级元素独占一行 解决2&#xff1a;给图片转换成块级元素&#xff0c;防止其机械的对齐 方框中的文字如果显示不开自动…

技术篇——废水除铊、除铊吸附树脂技术

铊是一种有毒有害的重金属元素&#xff0c;对人体的神经、心血管、消化系统等都有较大的危害。因此&#xff0c;对铊污染的废水进行治理是非常必要的。 虽然铊的应用范围比较广泛&#xff0c;但同时也是一种剧毒的重金属&#xff0c;与砷、汞等重金属相比&#xff0c;铊污染较…

二维码解码文字或者链接怎么做?二维码分解内容的方法

当需要提取出二维码中的文字或者链接时该如何处理呢&#xff1f;一般想要获取二维码中的文本/链接内容可以使用二维码解码&#xff08;二维码解码器在线-二维码图片解码-二维码转短链接生成器-机智熊二维码&#xff09;工具来处理&#xff0c;只需要上传二维码图片就可以自动识…

购买新风机那些注意事项?

在购买新风机时&#xff0c;需要注意以下几个关键因素&#xff1a; 需求分析&#xff1a;首先要明确自己的需求。确定你希望新风机覆盖的面积和使用场所&#xff0c;以及你对新风机功能和性能的要求。这有助于筛选出适合的型号和规格。 新风量&#xff1a;新风量是衡量新风机性…

手写模拟SpringBoot核心流程

通过手写模拟实现一个Spring Boot&#xff0c;让大家能以非常简单的方式就能知道Spring Boot大概是如何工作的。 依赖 建一个工程&#xff0c;两个Module: 1.springboot模块&#xff0c;表示springboot框架的源码实现 2.user包&#xff0c;表示用户业务系统&#xff0c;用来写…

iview表格 异步修改列数据卡顿 滚动条失效

使用表格row-key属性 将row-key属性设置为true <Table ref"table" border :row-key"true" :columns"tableColumns" :loading"loading":data"tableData"></Table>

web基础及http协议

web基础 全称 world wide web 全球广域网也就是万维网 web1.0 只能看 web2.0 页面交互&#xff1a;静态页面和动态页面 静态页面url&#xff1a;文本文件&#xff0c;可以修改&#xff0c;一般以html .htm保存的文本文件。网站的基础。静态页面和后台数据库没有任何交互不包含…

接口自动化测试方案模版。希望可以帮到你

XXX接口自动化测试方案 1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX&#xff0c;XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-Y…

匠心传承,长期主义 | 竹云董事长董宁受邀出席大湾区品牌新消费论坛

10月8日&#xff0c;大湾区品牌新消费论坛在深圳落下帷幕&#xff0c;此次论坛以“酿造美好生活”为主题&#xff0c;由广东省粤港澳大湾区产业协同发展联合会、张支云酒业集团主办&#xff0c;香港大湾区工商业联合会、深圳市老字号协会协办。 深圳市人大常委会教科文卫工委主…

红队专题-REVERSE二进制逆向反编译

红队专题 招募六边形战士队员IDA pro安装python2加入环境变量py2安装pip安装IDA 7.0 proIDAPython: importing "site" failed. 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 IDA pro 安装python2 python-2.7.3.msi 加入环…

点云曲面重建

曲面重建技术在逆向工程、数据可视化、机器视觉、虚拟现实、医疗技术等领域中得到了广泛的应用 。 例如&#xff0c;在汽车、航空等工业领域中&#xff0c;复杂外形产品的设计仍需要根据手工模型&#xff0c;采用逆向工程的手段建立产品的数字化模型&#xff0c;根据测量数据建…

时代风口中的Web3.0基建平台,重新定义Web3.0!

近年来&#xff0c;Web3.0概念的广泛兴起&#xff0c;给加密行业带来了崭新的叙事方式&#xff0c;同时也为加密行业提供了更加具有想象力的应用场景与商业空间&#xff0c;并让越来越多的行业从业者们意识到只有更大众化的市场共性需求才能推动加密市场的持续繁荣。当前围绕这…

软件测试/测试开发丨App自动化—高级控件交互方法

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27687 一、Actions Actions执行一系列或多个键盘和指针&#xff08;触摸、鼠标、触控笔&#xff09;操作链w3c 二、用法 定义 ActionChains 实例定义输…

种草文案怎么写吸引人?纯干货

种草文案的最终目的是激发用户的购买欲望&#xff0c;使他们产生购买行为。为了实现这一目标&#xff0c;种草文案应当抓住用户的痛点&#xff0c;突出产品的优势&#xff0c;让用户感受到产品的实用价值。此外&#xff0c;种草文案还应注重情感诉求&#xff0c;通过生动的故事…

Bean的作用域和生命周期(Bean是线程安全的吗?Spring如何在并发情况下获取不完整的Bean...)

Bean 注解是 Spring 框架中的一个注解&#xff0c;用于告诉 Spring 容器需要将被注解修饰的方法的返回值注册为一个 Bean。通常情况下&#xff0c;Spring 容器会自动扫描并创建带有 Component 或其他类似注解的类&#xff0c;并将这些类的实例注册为 Bean。但对于某些特殊情况&…

iPhone手机上使用的定时提醒APP是哪个

在日常喧闹的生活和工作中&#xff0c;琐碎的任务会像喷泉一样突涌而至&#xff0c;如不及时规划&#xff0c;我们将陷入手足无措的境地。而想要让各项工作任务按时完成&#xff0c;我们可以借助一些比较好用的时间提醒软件来督促各项任务。 就拿常用的iPhone手机来讲&#xf…

Tomcat隔离web原理和热加载热部署

Tomcat 如何打破双亲委派机制 Tomcat 的自定义类加载器 WebAppClassLoader 打破了双亲委派机制&#xff0c;它首先自己尝试去加载某个类&#xff0c;如果找不到再代理给父类加载器&#xff0c;其目的是优先加载 Web 应用自己定义的类。具体实现就是重写 ClassLoader 的两个方法…

九小场所“一店一码”消防安全监管如何制作

将九小场所信息在凡尔码平台生成消防安全码落地粘贴场所&#xff0c;微信扫码了解场所以往消防安全检查情况、整改情况&#xff1b;同时也可以了解学习消防安全知识&#xff1b;“一店一码”实现场所消防安全动态管理。 监管部门检查微信扫码即可填写检查记录&#xff0c;有隐…

【智能家居项目】裸机版本——网卡设备接入输入子系统 | 业务子系统 | 整体效果展示

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《智能家居项目》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f95e;网卡设备接入输入子系统&#x1f354;测试 &#x1f95e;业务子系统&#…