当前位置: 首页 > article >正文

SpringMVC环境搭建

文章目录

    • 1.模块创建
        • 1.创建一个webapp的maven项目
        • 2.目录结构
    • 2.代码
        • 1.HomeController.java
        • 2.home.jsp
        • 3.applicationContext.xml Spring配置文件
        • 4.spring-mvc.xml SpringMVC配置文件
        • 5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径
        • 6.index.jsp
    • 3.配置Tomcat
        • 1.配置路径以及热加载
        • 2.配置war包以及上下文路径为/
        • 3.启动
          • 1.首页
          • 2.访问 /home
    • 4.初始化基本流程解析

1.模块创建

1.创建一个webapp的maven项目

CleanShot 2025-02-10 at 12.21.01@2x

2.目录结构

CleanShot 2025-02-10 at 12.39.37@2x

2.代码

1.HomeController.java
package com.example.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;/*** Description:** @Author sun* @Create 2025/2/10 12:23* @Version 1.0*/
@Controller
public class HomeController {@RequestMapping("/home")public String home(Model model) {System.out.println("SpringMVC 执行了 home() 方法");model.addAttribute("message", "Hello, SpringMVC!");return "home"; // 返回 home.jsp}
}
2.home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>SpringMVC Demo</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>
3.applicationContext.xml Spring配置文件
<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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- 扫描 Service 组件 --><context:component-scan base-package="com.example.service"/></beans>
4.spring-mvc.xml SpringMVC配置文件
<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"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 启用Spring MVC注解 --><mvc:annotation-driven/><!-- 扫描 Controller 层 --><context:component-scan base-package="com.example.controller"/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/></bean></beans>
5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径
<?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"><!-- 配置Spring MVC的DispatcherServlet --><servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 配置Spring的ContextLoaderListener(用于加载根上下文) --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value></context-param>
</web-app>
6.index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

3.配置Tomcat

1.配置路径以及热加载

CleanShot 2025-02-10 at 12.43.14@2x

2.配置war包以及上下文路径为/

CleanShot 2025-02-10 at 12.43.41@2x

3.启动
1.首页

CleanShot 2025-02-10 at 12.44.26@2x

2.访问 /home

CleanShot 2025-02-10 at 12.44.53@2x

CleanShot 2025-02-10 at 12.44.40@2x

4.初始化基本流程解析

  1. Tomcat启动,读取web.xml,装载中央控制器以及获取Spring以及SpringMVC的配置文件路径
  2. 由于中央控制器配置了load-on-startup所以会调用中央控制器的init方法完成Spring以及SpringMVC容器的初始化

相关文章:

SpringMVC环境搭建

文章目录 1.模块创建1.创建一个webapp的maven项目2.目录结构 2.代码1.HomeController.java2.home.jsp3.applicationContext.xml Spring配置文件4.spring-mvc.xml SpringMVC配置文件5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径6.index.jsp 3.配置Tomcat1.配置…...

ESXi安装【真机和虚拟机】(超详细)

项目简介&#xff1a; ESXi&#xff08;Elastic Sky X Integrated&#xff09;是VMware公司开发的一种裸机虚拟化管理程序&#xff0c;允许用户在单一物理服务器上运行多个虚拟机&#xff08;VM&#xff09;。它直接安装在服务器硬件上&#xff0c;而不是操作系统之上&#xff…...

学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统

这应该算 stm32裸机用户 转 linux嵌入式系统 的入门学习笔记。 【鲁班猫】39-vnc远程桌面连接鲁班猫_哔哩哔哩_bilibili 本集的鲁班猫的视频介绍中&#xff0c;没有清晰明确指出需要linux开发板接入网络&#xff0c;接入网络可以使用有线网口或者wifi路由&#xff0c;有些提示…...

React常用库

React 生态系统非常丰富&#xff0c;有许多常用的库可以帮助开发者更高效地构建应用。以下是一些常见的 React 库及其用途&#xff1a; --- ### 1. **状态管理** - **Redux** 最流行的全局状态管理库&#xff0c;适合中大型应用。 官网: https://redux.js.org/ - **…...

「软件设计模式」桥接模式(Bridge Pattern)

深入解析桥接模式&#xff1a;解耦抽象与实现的艺术 一、模式思想&#xff1a;正交维度的优雅解耦 桥接模式&#xff08;Bridge Pattern&#xff09;通过分离抽象&#xff08;Abstraction&#xff09;与实现&#xff08;Implementation&#xff09;&#xff0c;使二者可以独立…...

Python 用户输入和While循环(使用while 循环来处理列表和字典)

大多数程序都旨在解决最终用户的问题&#xff0c;为此通常需要从用户那里获取一些信息。例如&#xff0c;假设有人要判断自己是否到了投票的年龄&#xff0c;要编写回答这个问题的程序&#xff0c;就 需要知道用户的年龄&#xff0c;这样才能给出答案。因此&#xff0c;这种程序…...

docker 基础命令使用(ubuntu)

docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...

Jenkins 安装插件 二

Jenkins 安装插件 二 一. 打开 Dashboard 打开 Jenkins 界面&#xff0c;不管在任何界面&#xff0c;只需要点击左上角 Dashboard 按钮即可 二. 打开 Manage Jenkins 找到 Manage Jenkins -> System Configuration -> Plugins 点击 Plugins 打开界面如下 Updates&a…...

深入解析与解决 Oracle 报错:ORA-29275 部分多字节字符20250213

&#x1f6e0;️ 深入解析与解决 Oracle 报错&#xff1a;ORA-29275 部分多字节字符 引言 &#x1f31f; 在与 Oracle 数据库打交道的日常工作中&#xff0c;你是否遇到过 ORA-29275: partial multibyte character 这个令人头疼的错误&#xff1f;这个错误通常与字符编码、数…...

CI/CD(二)docker-compose安装Jenkins

1、docker-compose.yml version: 3.8services:jenkins:image: jenkins/jenkins:lts # 使用官方的 Jenkins LTS 镜像container_name: jenkinsuser: root # 如果需要以 root 用户运行ports:- "8080:8080" # Jenkins Web 界面端口- "50000:50000" # 用于 Jen…...

Windows环境安装部署minimind步骤

Windows环境安装部署minimind步骤 必要的软件环境 git git&#xff0c;可下载安装版&#xff0c;本机中下载绿色版&#xff0c;解压到本地目录下&#xff08;如&#xff1a;c:\soft\git.win64&#xff09;&#xff0c;可将此路径添加到PATH环境变量中&#xff0c;供其他程序…...

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先&#xff0c;需要安装 serialport 库。可以通过 npm 安装&#xff1a;…...

C# ASP.NET的应用场景

.NET学习资料 .NET学习资料 .NET学习资料 C# ASP.NET作为一种强大的 Web 开发框架&#xff0c;在众多领域都有着广泛的应用&#xff0c;为各类 Web 应用的开发提供了高效、可靠的解决方案。以下是其主要的应用场景&#xff1a; 企业级 Web 应用 在企业级应用开发中&#xf…...

常用的网络安全设备

大家读完觉得有帮助&#xff0c;记得关注和点赞&#xff01;&#xff01;&#xff01; 一、 WAF 应用防火墙 范围&#xff1a;应用层防护软件 作用&#xff1a; 通过特征提取和分块检索技术进行模式匹配来达到过滤&#xff0c;分析&#xff0c;校验网络请求包的目的&#x…...

Qt信号槽调用出错:Qt: Dead lock detected while activating a BlockingQueuedConnection

目录 1.现象和原因分析 2. 总结 1.现象和原因分析 就在最近的开发过程中&#xff0c;程序一运行在控制台就打印&#xff1a; Qt: Dead lock detected while activating a BlockingQueuedConnection&#xff1a; 咋一看&#xff0c;怎么出现死锁了呢&#xff1f;仔细看下…...

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第八节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;RequestUpload0x35服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025-02-13 关键词&#xff1a;UDS协议、0x35服务、数据上传、内存读取、ECU测试 一、服务功能概述 0x35服务&#xff08…...

仿叮咚买菜鸿蒙原生APP

# DingdongShopping 这是一个原生鸿蒙版的仿叮咚买菜APP项目 鸿蒙Next发布至今已经有一年多的时间了&#xff0c;但有时候我们想要实现一些复杂的功能或者效果&#xff0c;在开发文档上查阅一些资料还是比较费时的&#xff0c;有可能还找不到我们想要的内容。而社会层面上分享…...

【kafka系列】Kafka事务的实现原理

目录 1. 事务核心组件 1.1 幂等性生产者&#xff08;Idempotent Producer&#xff09; 1.2 事务协调器&#xff08;TransactionCoordinator&#xff09; 1.3 事务日志&#xff08;Transaction Log&#xff09; 2. 事务执行流程 2.1 事务初始化 2.2 发送消息 2.3 事务提…...

HarmonyOS NEXT网络状态监听HTTP和RCP请求网络

当我们在HarmonyOS NEXT中开发的应用&#xff0c;基本上都会使用网络请求&#xff0c;从服务端获取数据在客户端显示或者供用户交互&#xff0c;有时候网络发生变化时&#xff0c;我们需要做一些相应的操作&#xff0c;接下来我们一起来了解下在HarmonyOS NEXT下如何监听网络状…...

2025.2.16

Web [GDOUCTF 2023]泄露的伪装&#xff1a; 点进去看就是装神弄鬼&#xff0c;那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下&#xff1a;使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…...

使用Java爬虫获取京东JD.item_sku API接口数据

在电商领域&#xff0c;商品的SKU&#xff08;Stock Keeping Unit&#xff09;信息是运营和管理的关键数据。SKU信息包括商品的规格、价格、库存等&#xff0c;对于商家的库存管理、定价策略和市场分析至关重要。京东作为国内领先的电商平台&#xff0c;提供了丰富的API接口&am…...

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析③】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase03 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月15日 关键词&#xff1a;UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-003测试用例 用例ID测试场景验证要点参考条款预期…...

MySQL安装MySQL服务时提示Install-Remove of the Service Denied

文章目录 问题描述排查1.字面意思2.搜索引擎3.官方文档4.源码 处理方法相关扩展 问题描述 MySQL安装MySQL服务时提示Install-Remove of the Service Denied! 详细报错如下&#xff1a; C:\Users\荷塘月色>net start mysql 服务名无效。请键入 NET HELPMSG 2185 以获得更多…...

python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注

【1】引言 前序学习进程中&#xff0c;已经使用cv2.findContours()函数cv2.drawContours()函数实现图像轮廓识别和标注&#xff0c;这种标注沿着图像的轮廓进行&#xff0c;比较细致。相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;六十四&#xff09;使用…...

haproxy实现MySQL服务器负载均衡

1.环境准备 准备好下面四台台服务器&#xff1a; 主机名IP角色open-Euler1192.168.121.150mysql-server1openEuler-2192.168.121.151mysql-server2openEuler-3192.168.121.152clientRocky8-1192.168.121.160haproxy 2.mysql服务器配置 1.下载mariadb #下载mariadb [rootop…...

open3d绘制平面

在Open3D中绘制平面通常涉及到创建一个平面模型并将其可视化。Open3D是一个开源库,主要用于3D数据的处理和可视化,但它主要用于3D数据的处理,并不直接支持绘制2D平面。如果你想在Open3D中“绘制”一个平面,你可以通过以下几种方法来实现类似的效果: 方法1:使用o3d.geome…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十四节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;CommunicationControl_0x28服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x28服务、通信控制、ISO 14229-1:2023、ECU测试 一、服务功能概述…...

C语言简单练习题

文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …...

每日一题——把数字翻译成字符串

把数字翻译成字符串 题目描述示例示例1示例2 题解动态规划代码实现复杂度分析 总结 题目描述 有一种将字母编码成数字的方式&#xff1a;‘a’->1, ‘b’->2, … , ‘z’->26。 现在给一串数字&#xff0c;返回有多少种可能的译码结果。 数据范围&#xff1a;字符串…...