使用 Idea 快速搭建 SpringMVC 项目的详细步骤

news2024/10/10 8:17:58

一、开篇

SpringMVC 是一款当下流行的优秀的 MVC 框架,关于 MVC 的概念、作用、优点等内容介绍,在作者之前的一篇 Chat 《深入理解 MVC 框架原理:自定义 Struts2 框架》中有详细的描述。描述了关于另一款主流 MVC 框架的原理介绍,其实和 SpringMVC 工作原理大致相同。所以有兴趣的朋友可以前去阅读。

本篇的主题是介绍在 IDEA 开发环境下,使用 MAVEN 来搭建 SpringMVC 框架的详细的操作简便的教程,关于 SpringMVC 的详细知识点后续有时间再给大家 Chat 。

准备工作:

本篇案例使用 IDEA 2021.1,Tomcat9.0,Apache-maven-3.6.1。

内容目录:

a.下载和配置 Maven

b.新建 Project 和 Moudle

c. 配置 pom 依赖和添加框架支持

d.新建控制类 及配置 xml 文件

e.发布 和 运行测试

f. 常见问题和总结

二、下载和配置 MAVEN

Maven 是 Apache 下的一个纯 Java 开发的开源项目管理工具。基于项目对象模型(POM)的概念,可以通过简单的配置实现管理项目构建,报告和文件。而对于目前刚开始使用的我们来说,就是为了使用它来帮我们下载和管理依赖的 jar 包。所以在搭建环境前,请保持您的网络环境的畅通。

1、官网下载 MAVEN

下载网址:https://maven.apache.org/download.cgi

2、本地仓库配置

下载 MAVEN 后,找目录解压,作为 Maven 的安装目录。

例如:D:/useSoft/apache-maven-3.6.1

默认下,Maven 从中央仓库下载的 jar 包都会放在 C 盘的 User 目录下,随着项目的使用,仓库占用的空间会越来越大。所以一般我们建议配置到其他的指定目录下。

配置方法:在安装目录/conf /下文件:settings.xml。添加节点配置,自定义本地仓库的目录即可。如图:

图片

上图阴影部分,目录可以自定义。

4. IDEA 中配置 Maven

打开 idea 的 File 菜单,选择 settings ,进入下面界面窗体,按标注选择上一步安装的 Maven。

图片

到此,Maven 安装和配置暂时完毕,后面用到时,还会提到。

三、新建 Project 和 Moudle

1、新建空的工程

空的工程目的,主要是为了方便管理多个 Moudle。如果你习惯了 eclipse ,那么你可以把 这里的空的工程和 eclipse 中的工作空间对应起来理解,把 Moudle 对应之前项目来理解。

选择 File > New > Project ,进入下图:

图片

点击上面的 Next 进入下图输入项目名称,其实就是一个文件夹目录而已,后面在此工程中创建的 Moudle都会放在此目录下。

图片

点击 Finish 即可完成工程的创建。

2、新建 Moudle

依次选择 File > New > Moudle…:

图片

然后进入进入New Moudle 界面:图片

按上图选择左边 Maven > 勾选 Create from archetype > org.apache.maven.archetypes:maven-archetype-webapp > Next 进入下一个界面:

图片

  • -GroupId: 组织名,公司网址的反写(对应包名)

  • -ArtifactId: 项目名-模块名(可以对应工程名)

    然后下一步,输入 Module 名称,这里可以看到工程目录位置。

图片

创建好后的目录结构如下:

图片

3、 java 源文件目录

新建的目录结构中,没有存放 java 源文件的地方,需要先新建目录:

选择 main 右键 New > Directory

图片

建好 java 目录后,默认下,右键不能新建 class 的,还需要如下设置:

图片

选择 Sources Root 设置后,会发现 java 目录颜色便成为蓝色,此时右键就可以新建 class 了。

四、配置 pom 依赖和添加框架支持

1、编辑 pom.xml

接下来我们在写代码前,需要先配置 springmvc 的依赖,以便获取 springmvc 所需的 jar 包。

图片

就是在上面界面中,选择 pom.xml 打开,在 节点中添加一个依赖节点,代码如下:

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>

上面依赖配置内容获取方式,打开官网:https://mvnrepository.com/ 搜索 spring 即可找到。在这里省略。不会的可以直接复制上面的代码,放入 pom.xml 中即可。

加入配置后,idea 的右下角会提示发现更新,提示你确定更新导入:图片

选择 Import Changes 即可开始自动连接网络下载 springMVC 依赖的 jar包了。可以选择后面的 Enable Auto-Import,意思就是后面再有更新,便会自动导入,不再需要手动点击了。

2、添加框架支持,自动配置生成xml文件

如果您使用其他环境使用过 SpringMVC 那么应该知道需要配置 web.xml 的核心控制器 和 springmvc-servlet.xml 文件。这些 idea 都可以自动化生成 相关文件。

具体步骤:

a. File > Project Structure > 左边 Modules > 选择你的 工程 Module 点开,会看到 Spring 选中删除。

(可以通过下图右上角图标直接进入下面界面)

图片

上图删除完成再选择 module 右键选择 Add Framework Support :

图片

然后进入下图界面,选择左边 Spring > 右边 Spring MVC:

图片

上面步骤完成后,会发现在 src / webapp / WEB-INF / 目录下多出两个 xml 文件 applicationContext.xml 和 dispatcher-servlet.xml ,不过这里暂时不用 applicationContext.xml 文件,后续整合 SSM 时会使用。

图片

不仅上面自动声明了控制器配置文件,而且打开 web.xml 会发现也自动配置了控制器 Servlet :

图片

3、新建包和控制器类

上面的框架搭建起来后,接下来我们开始编写控制器类,以便验证搭建是否成功。

首先选择 src / main /java 右键 New > Package。键入 com.wdzl.controller 用来存放控制器类。

然后再选择刚建包名,右键新建 class 类 HelloController,键入代码:

package com.wdzl.controller;

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

@Controller
public class HelloController {
    //这里映射url,访问时:http://127.0.0.1:8080/hello
    @RequestMapping("hello")
    public String hello(){
        System.out.println("======hellow======");
        return "index";
    }
}

4、配置 dispatcher-servlet.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 http://www.springframework.org/schema/context/spring-context.xsd">
    <!--指定扫描的基包名-->
    <context:component-scan base-package="com.wdzl"></context:component-scan>
    <!--视图解析器-->
    <bean id="viewRelover" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

五、发布到 Tomcat 和访问测试

1、配置 Tomcat

选择窗体右上角:

图片

然后进入如下界面,点击左上角 “+” 添加 Tomcat ,并选择 Local :

图片

再在下图中编辑 Name: Tomcat9,再选择 Configure

图片

选择 Configure 进入下面界面:

图片

在上图中选择 Tomcat Home 安装目录。点击 OK 。然后再选择发布界面,进行项目的发布。

图片

按上图依次操作即完成项目的发布。

2、运行 和 测试

图片

点击右上角的运行箭头按钮,运行即可。

然后在浏览器中,输入在控制器类中 映射的地址,即可看到下图。

图片

3、常见问题

有的环境下,常出现 web.xml 中 Servlet 报错,

图片

这是因为没有找到 JavaEE 相关的 API 导致的,此时可以通过下面步骤解决。

现在项目 Module 右键 > Open Module Settings

图片

再按下图分别选择和操作添加类库

图片

打开下图,选择 tomcat9

图片

图片

点击 OK 完成后,问题即可解决。

六、总结

在整个搭建过程中,我们可以看到,idea 环境下的过程不需要编写很多代码和文件,多数都是自动生成文件和配置。所以主要是了解和按着上面的步骤依次操作。环境即可搭建成功。有问题环境加微信交流

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

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

相关文章

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…

unrealbuildtool 无法找到,执行 Generate Visual Studio Project 错误

参考链接 Generate cpp project Couldnt find UnrealBuildTool - Pipeline & Plugins / Plugins - Epic Developer Community Forums (unrealengine.com) 错误提示如下图&#xff1a; 解决方案&#xff1a; 打开 UnrealBuildTool&#xff0c;生成解决方案就可以了

学习Fast-LIO系列代码中相关概念理解

目录 一、流形和流形空间&#xff08;姿态&#xff09; 1.1 定义 1.2 为什么要有流形? 1.3 流形要满足什么性质&#xff1f; (1) 拓扑同胚 (2) 可微结构 1.4 欧式空间和流形空间的区别和联系? (1) 区别&#xff1a; (2) 联系&#xff1a; 1.5 将姿态定义在流形上比…

【Python实用标准库】argparser使用教程

argparser使用教程 1.介绍2.基本使用3.add_argument() 参数设置4.参考 1.介绍 &#xff08;一&#xff09;argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;其用主要在两个方面&#xff1a; 一方面在python文件中可以将算法参数集中放到一起&#x…

CavalierContours 二维线操作

CavalierContours 二维线操作 2D polyline library for offsetting, combining, etc. 用于偏移、交并补等组合等操作的 2D 多折段线库。 Polyline Structure 多段线结构 Polylines are defined by a sequence of vertexes and a bool indicating whether the polyline is cl…

关系型数据库mysql(7)sql高级语句①

目录 一.MySQL常用查询 1.按关键字&#xff08;字段&#xff09;进行升降排序 按分数排序 &#xff08;默认为升序&#xff09; 按分数升序显示 按分数降序显示 根据条件进行排序&#xff08;加上where&#xff09; 根据多个字段进行排序 ​编辑 2.用或&#xff08;or&…

【C语言】内存函数(memmove)的使用和模拟实现

目录 前言memmove定义1.在cplusplus中的定义 memmove的模拟实现1、思路2、难点3、解决方法 模拟实现代码 前言 这篇文章讲述了memcpy的使用、模拟实现和一个未解决的问题内存函数(memcpy)的使用和模拟实现 当我们使用我们模拟的my_memcpy拷贝&#xff0c;当源拷贝地址与目标拷…

C语言编译与链接

前言 我们想一个问题&#xff0c;我们写的C语言代码都是文本信息&#xff0c;电脑能直接执行c语言代码吗&#xff1f;肯定不能啊&#xff0c;计算机能执行的是二进制指令&#xff0c;所以将C语言转化为二进制指令需要一段过程&#xff0c;这篇博客讲一下编译与链接&#xff0c;…

ISAC代码仿真学习笔记

文章目录 A. MIMO Communication ModelB. MIMO Radar Model III. Joint Waveform and Phase Shift Matrix Design for Given Radar BeampatternA. Problem FormulationB. Proposed Algorithm IV. JOINT DESIGN WITH TRADE-OFF BETWEEN RADAR AND COMMUNICATION PERFORMANCEA. P…

boost::asio::ip::tcp/udp::socket::release 函数为什么限制 Windows 8.1 才可以调用?

如本文题目所示&#xff0c;这是因为只有在 Windows 8.1&#xff08;Windows Server 2012 RC&#xff09;及以上 Windows 操作版本才提供了运行时&#xff0c;修改/删除完成端口关联的ABI接口。 boost::asio 在 release 函数底层实现之中是调用了 FileReplaceCompletionInform…

Ubuntu20安装python3.10

1、添加 deadsnakes PPA 到源列表 add-apt-repository ppa:deadsnakes/ppa apt update 2、安装 apt install python3.10 3设置默认版本为 Python3.10 查看所有python版本 ls -l /usr/bin/python* update-alternatives --install /usr/bin/python3 python3 /usr/bin/pytho…

java-pytorch 使用手动下载FashionMNIST数据集进行测试

java-pytorch 使用手动下载FashionMNIST数据集进行测试 先定义训练数据和测试数据的位置查看一下读取到的标签数据格式使用loc和iloc访问下数据&#xff0c;便于下面操作使用read_image函数查看下图片的数据大小开始写数据集使用DataLoader去加载我们自己的数据看下加载后的dat…

亚马逊跨境电商迎来崭新时代,武汉星起航携手卖家共赴新征程

随着全球经济一体化的深入发展&#xff0c;跨境电商已成为推动国际贸易的重要力量。据最新数据显示&#xff0c;2023年中国跨境电商出口规模达到1.83万亿元&#xff0c;同比增长19.6%&#xff0c;增速远超电商行业整体水平。在这一背景下&#xff0c;2024年有望成为中国跨境电商…

ForkJoinPool、CAS原子操作

ForkJoinPool ForkJoinPool是由JDK1.7后提供多线程并行执行任务的框架。可以理解为一种特殊的线程池。 1.任务分割&#xff1a;Fork&#xff08;分岔&#xff09;&#xff0c;先把大的任务分割成足够小的子任务&#xff0c;如果子任务比较大的话还要对子任务进行继续分割。 …

构造器练习

练习一 题目 案例&#xff1a; (1)定义Student类,有4个属性&#xff1a;String name;int age;String school;String major;(2)定义Student类的3个构造器:- 第一个构造器Student(String n, int a)设置类的name和age属性&#xff1b; - 第二个构造器Student(String n, int a, St…

大话设计模式之策略模式

策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。这种模式定义了一族算法&#xff0c;将每个算法都封装起来&#xff0c;并且使它们之间可以互相替换。 在策略模式中&#xff0c;一个类的行为或其算法可以在运行时改变。这种模式包含以下角色&#xff1…

2024/3/29 IOday2

所有人&#xff0c;今日作业&#xff1a;用fwrite 和 fseek功能&#xff0c;将一张bmp格式的图片更改成 德国国旗 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fpfopen("./rising_free…

android 集合总结

1 集合分类&#xff0c; collection和map两大类,Iterator接口是提供遍历任何Collection的接口&#xff0c;不是map 2 集合类的底层实现 hashset基于hashmap实现&#xff08;只不过HashSet里面的HashMap所有的value都是同一个Object而已&#xff09; treeset由红黑树实现 …

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A60S2系列1T 8051单片机通过单个按…

代码随想录刷题day38|斐波那契数爬楼梯最小花费爬楼梯

文章目录 day38学习内容一、动态规划理论基础1.1、动态规划理论基础的几个关键概念&#xff1a;1.2、动态规划五部曲 二、斐波那契数2.1、动态规划五部曲2.1.1、 确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.1.2、确定递推公式2.1.3、 dp数组如何初始化2.1.4、…