SpringMVC纯注解快速开发

news2025/1/17 0:54:47

此文章适合具有一定的java基础的同学看哦,如果有看不懂的基本代码还是先补补java基础哦。

此教程带您不使用xml文件而是纯注解开发,易懂、快捷、迅速,从0开始搭建,很快就能构建起一个SpringMVC项目,能学到两种使用tomcat部署的方法,并尽量对每个重点进行讲解,接下来开始吧。

目录

IDEA建立项目

引入依赖

建立软件包

​编辑开始开发

部署tomcat

第一种方式

第二种方式


IDEA建立项目

从idea新建项目,这个大家总会吧。

先建个空项目,自定义名字、项目位置等,这些都可以随便,然后完成。

完成后在空项目里新建模块。

选择maven,java版本我依旧用万年java8

引入依赖

完成后便能看到项目的结构,我们编辑pom.xml文件,引入相关依赖,主要是两个依赖

<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>

可以看到springmvc版本是5.2.10,大家还是尽量跟我保持一致即可,然后点击一下maven图标按钮,会自动下载到本地maven仓库,没下载过的就是会显示红色,我这里已经下载过了所以是白色字,如果下载缓慢可以配置仓库源,可以百度搜索相关教程或查看文章:idea中Maven镜像源详细配置步骤记录(对所有项目)_java_脚本之家

如果没看到有maven按钮则从idea右边点出来,真的很保姆了。

建立软件包

下载完成后我们在java目录上右键,新建软件包

主要是controller和config包,所以我的是com.xiaoya.controller和com.xiaoya.config


开始开发

接下来是重点,我们在config包中新建ServletInit类(当然这个名字你随意取),然后我们需要继承这个类AbstractDispatcherServletInitializer,很多同学觉得这个类难记,其实我也记不住,记住前面这几个字母就行了,idea会自动提示的,如果怕忘,自己做好笔记就行了。

这个时候该类会爆红,因为要实现里面的三个方法,将鼠标放到红线上,就会提示你"实现方法",我们点击一下"实现方法"就行了(其实你按快捷键ctrl+i也行)

这个时候默认是这样子的

我们主要改一下图中标记的两个方法

package com.xiaoya.config;

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

public class ServletInit extends AbstractDispatcherServletInitializer {

    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(Config.class);
        return ctx;
    }

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

    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

第一个方法目的是要向Context中注册配置类,其中的Config.class是我们接下来要在config包新建的类。

第二个方法的内容很容易看出就是当我们进行请求时要从 / 路径开始。

然后我们在config包新建前面所说的Config类,内容不用写,就在上面写2个注解即可
@Configuration
@ComponentScan("com.xiaoya.controller")

第一个注解即标记为配置类,第二个注解就是扫描com.xiaoya.controller包里面的类

接着在controller包新建TestController类,在类上面写上@Controller,即控制层,我们来在里面写个函数返回hello字符串,然后使用@RequestMapping("/hello")注解,即访问/hello时执行hello函数,@ResponseBody就是返回响应体,即返回"hello"字符串,如果不加这个注解的话会去寻找静态资源下的hello文件而不是返回字符串,文章后面会讲到。

package com.xiaoya.controller;

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

@Controller
public class TestController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
        return "hello";
    }
}

这个时候就完成了非常简单,接下来我们来部署tomcat容器启动:

部署tomcat

第一种方式

第一种方式就是通过maven插件,我们在pom.xml中添加tomcat插件,然后点击maven按钮下载

    <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>

下载完成后我们点击添加配置,在弹出的界面中点击左上角的 + 按钮,选择maven

在运行命令行那里写上tomcat7:run,然后确定即可。写的时候会有提示的,前提是前面所说的tomcat的插件已经下载好了。

接着在pom.xml中添加

<packaging>war</packaging>

即打为war包的形式运行,点击一下maven按钮,只要pom.xml内容有变更就点一下maven按钮就对了。

都完成后便能发现有绿色的运行按钮了,我们点击就能启动。

如果不出意外的话应该要出意外了,在运行的过程中提示main目录下不存在webapp目录

那这很简单,在main目录下建webapp目录就行了

然后重新启动没有错误了,访问http://127.0.0.1:8080/hello,就能看到响应体字符串了

第二种方式

第二种便是下载tomcat,尽量选择版本9及以前的版本,10好像测试的时候有点问题,可以在我的资源下载:

tomcat8

https://download.csdn.net/download/MKIDM/90085926icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90085926tomcat9

https://download.csdn.net/download/MKIDM/90085933icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90085933下载任一版本后点击编辑配置

在弹出的界面中依旧点击左上角的+,选择Tomcat服务器-本地

名称任意,点击配置,选择你下载的tomcat所在的位置

选择好主目录后下面的基目录会自动调好的不用管,点击确定

此时我们看到有个警告,我们点击右边的修复

此时可以看到弹出来两个工件让我们选择,选择任一一个都可以

应用程序的上下文就是根路径,为了方便我们也可以改成 /,看您自己的意愿

点击修复的时候之所以有那两个工件那是因为我们前面已经通过maven生成好了,如果先用这个方法的话是没有工件的,那我们也可以点击文件--项目结构

点到工件,就能看到这两个工件

那么我们把它删除,说一下如果没有工件时该怎么创建,点击 - 就能删除,删除这2个工件

点击+按钮,选择Web应用程序:展开型,点击基于模块,选择我们这个项目的模块,我们这本来就只有一个模块,所以直接确定就行了。

这样就可以看见生成好了

然后我们重新配置tomcat,点到部署,点击+按钮,选择工件即可。

然后点击运行按钮即可,会自动跳转到浏览器,访问/hello路径就行了。注意上下文的路径,如果上下文的路径默认没更改的话根路径就不是/,如图应该是/springmvc1_war_exploded,所以没更改的话应该访问/springmvc1_war_exploded/hello。自动跳转到浏览器的时候也是跳到/springmvc1_war_exploded

如果没改上下文路径的话访问http://127.0.0.1:8080/springmvc1_war_exploded/hello即可看到回显字符串,就不演示了。

所以通过以上我们就发现通过纯注解也可以快速地就搭建SpringMVC项目,其实过程说的比较啰嗦了,主要是照顾到一些新手,所以有很多保姆级讲解,操作上能讲的都尽量讲了,有一定经验的可以跳着看。

源码:https://download.csdn.net/download/MKIDM/90086092icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90086092总结下来就是:

1. 在config包中新建配置类,添加注解@Configuration、@ComponentScan("com.xiaoya.controller")

2. 在config包建第二个类,继承AbstractDispatcherServletInitializer类,实现其中的三个方法,主要改动其中二个方法

3. 在controller包建控制请求路径的类,类上添加注解@Controller。
@RequestMapping("/hello2")就是请求路径
@ResponseBody 声明响应体就是该方法返回的内容,而不是静态资源名。

4. 部署tomcat容器,介绍了两种方法。

看到这已经差不多了,但是我们得把坑补完,前面说过不加@ResponseBody的话返回的就是静态资源名,如图,我们将@ResponseBody注解去掉,返回的内容改为hello.jsp

然后在webapp目录新建hello.jsp

body里面随便写点内容

启动tomcat,访问http://localhost:8080/springmvc1_war_exploded/hello就是访问hello.jsp

当然,访问http://localhost:8080/springmvc1_war_exploded/hello.jsp也行。

好了这篇文章到此结束了,有不懂的可以评论或者私信我,看到了就会回,现在看几个笑话放松一下吧*⸜( •ᴗ• )⸝*:https://blog.csdn.net/mkidm/category_12833444.html?spm=1001.2014.3001.5482

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

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

相关文章

Linux-音频应用编程

ALPHA I.MX6U 开发板支持音频&#xff0c;板上搭载了音频编解码芯片 WM8960&#xff0c;支持播放以及录音功能&#xff01;本章我们来学习 Linux 下的音频应用编程&#xff0c;音频应用编程相比于前面几个章节所介绍的内容、其难度有所上升&#xff0c;但是笔者仅向大家介绍 Li…

【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…

UG NX二次开发(Python)-UIStyler-选取点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、设计一个UI界面3、创建长方体的代码4、需要引入的库5、测试验证1、前言 采用Python语言进行UG NX二次开发的资料比较少,我本来不是很认可采用Python进行二次开发的,但是近期有读者咨询…

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法&#xff0c;这就是策略模式。**这样对于同一个问题&#xff0c;可以有多种解决方案——算法实现的时候&#xff0c;可以通过策略模式来非常方便的进行算法的整体替换&#xff0c;而各种算法是独立封装好的&#xff0c;不用修改其内部逻辑。 具体的实…

中建海龙:科技创新引领建筑业革新,铸就行业影响力

在建筑业这个古老而又充满活力的行业中&#xff0c;中建海龙科技有限公司&#xff08;以下简称“中建海龙”&#xff09;凭借其卓越的科技实力和一系列荣誉奖项&#xff0c;正逐步确立其在建筑工业化领域的领导地位&#xff0c;并对整个行业产生了深远影响。 中建海龙自成立以来…

混合云策略在安全领域受到青睐

Genetec 发布了《2025 年物理安全状况报告》&#xff0c;该报告根据超过 5,600 名该领域领导者&#xff08;其中包括 100 多名来自澳大利亚和新西兰的领导者&#xff09;的回应&#xff0c;揭示了物理安全运营的趋势。 报告发现&#xff0c;澳大利亚和新西兰的组织采用混合云策…

小程序 —— Day1

组件 — view和scroll-view view 类似于HTML中的div&#xff0c;是一个块级元素 案例&#xff1a;通过view组件实现页面的基础布局 scroll-view 可滚动的视图区域&#xff0c;用来实现滚动列表效果 案例&#xff1a;实现纵向滚动效果 scroll-x属性&#xff1a;允许横向滚动…

DemoFusion 技术浅析(四):跳跃残差

跳跃残差模块&#xff08;Skip Residual Module&#xff09; 是 DemoFusion 框架中用于图像去噪和细节保留的核心组件。该模块通过引入跳跃连接&#xff08;skip connections&#xff09;和残差学习&#xff08;residual learning&#xff09;&#xff0c;在图像去噪过程中有效…

电机功率、电压与电流的换算方法

在电气工程和相关行业中&#xff0c;电机的功率、电压和电流是三个重要的基本参数。它们之间有着密切的关系&#xff0c;而理解这些关系对于电机的选型、设计和应用至关重要。本文将详细阐述这三者之间的换算关系&#xff0c;以及相关公式的应用。 一、电机功率的定义 电机功…

k8s 之 Deployment

&#xff08;1&#xff09;Deployment 作用是确保 Pod 副本数量&#xff0c;能够保证 Pod 数量与期望值一样&#xff0c;会有自恢复功能。简洁地说&#xff1a;具有 水平扩展 / 收缩 功能。 可能好奇的是在 kubernetes 中是谁在执行这些控制器的&#xff0c;它就是 kube-contr…

浅谈FRTC8563M实时时钟芯片

FRTC8563M是NYFEA徕飞公司推出的一款实时时钟芯片和日历芯片&#xff0c;采用MSOP-8封装形式。它具有低功耗特性&#xff0c;适用于电池供电的便携式设备。该芯片提供年、月、日、星期、小时、分钟和秒的计时功能&#xff0c;并且具有闹钟功能。FRTC8563M通过I2C总线与微控制器…

SpringBoot 主导家乡特色推荐系统升级,无缝对接多元数据源

2系统相关技术 2.1 Java技术 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景&#xff0…

Flink如何基于数据版本使用最新离线数据

业务场景 假设批量有一张商户表&#xff0c;表字段中有商户名称和商户分类两个字段。 批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。 原实现方案 a.原方案内容 为解决批量晚批问题&#xff0c;批量推送hbase表时一份数据产生两类rowkey&#xff1a;T-1和…

【集群划分】含分布式光伏的配电网集群电压控制【33节点】

目录 主要内容 模型研究 1.节点电压灵敏度的计算 2.Kmeans聚类划分 3.集群K值 部分代码 运行结果 下载链接 主要内容 该程序参考文献《含分布式光伏的配电网集群划分和集群电压协调控制》&#xff0c;基于社团检测算法&#xff0c;实现基于电气距离和区域电压调节能…

Elasticsearch 单节点安全配置与用户认证

Elasticsearch 单节点安全配置与用户认证 安全扫描时发现了一个高危漏洞&#xff1a;Elasticsearch 未授权访问 。在使用 Elasticsearch 构建搜索引擎或处理大规模数据时&#xff0c;需要启用基本的安全功能来防止未经授权的访问。本文将通过简单的配置步骤&#xff0c;为单节…

Docker打包SpringBoot项目

一、项目打成jar包 在进行docker打包之前&#xff0c;先确定一下&#xff0c;项目能够正常的打成JAR包&#xff0c;并且启动之后能够正常的访问。这一步看似是可有可无&#xff0c;但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后&#xff0c;需要编写Doc…

用OpenCV改变图像的对比度和亮度

两个常用的函数是常数的乘法和加法&#xff1a; 参数α>0和β通常被称为增益和偏置参数&#xff1b;有时这些参数分别控制对比度和亮度。 你可以想到f(x)作为源图像像素和g(x)作为输出图像像素。那么&#xff0c;更方便的是&#xff0c;我们可以将表达式写为&#xff1a; 这…

基于阻塞队列的生产者消费者模型动画演示

一个基于阻塞队列的生产者消费者模型的动画演示&#xff1a; 这是打包好的程序。程序是用 QT 写的。 通过网盘分享的文件&#xff1a;CP模型.7z 链接: https://pan.baidu.com/s/1YjC7YiSqHGqdr6bbffaDWg?pwde6g5 提取码: e6g5 CP模型

李沐动手学深度学习无法动态绘制损失和准确率曲线,输出 <Figure size 350x250 with 1 Axes>

在网上搜了两个解决方案 1.这个方法我试了不好用 d2l.plt.savefig(E:\pycharmProject) 2 修改封装好的函数 &#xff0c;ctrl加鼠标左键点击进入Animator类&#xff0c;修改里面的add函数 def add(self, x, y):# Add multiple data points into the figureif not hasattr(y,…

在idea中使用mysql(超详细)

一、连接mysql 在IDE开发工具中也是可以使用mysql的&#xff0c;这里以开发java常用的IntelliJ IDEA为例。 1. 打开idea&#xff0c;右上角有数据库侧边栏&#xff0c;打开侧边栏点击加号->数据源&#xff0c;可以看到支持很多数据库&#xff0c;选择mysql。 2. 首次使用需…