【Spring教程24】Spring框架實戰:從零開始學習SpringMVC 之 SpringMVC入門案例代碼示例

目錄

  • 1:創建Maven項目,并導入對應的jar包
  • 2:創建控制器類
  • 3:創建配置類
  • 4:創建Tomcat的Servlet容器配置類
  • 5:配置Tomcat環境
  • 6:啟動運行項目
  • 7:瀏覽器訪問
  • 8:知識點總結

歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現,如果您對Maven還很陌生,請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》,本文的上一篇為《SpringMVC簡介與SpringMVC概述》
在這里插入圖片描述
具體的實現步驟如下:
1.創建web工程(Maven結構)并在工程的pom.xml添加SpringMVC和Servlet坐標
2.創建SpringMVC控制器類(等同于Servlet功能)
3.初始化SpringMVC環境(同Spring環境),設定SpringMVC加載對應的bean
4.初始化Servlet容器,加載SpringMVC環境,并設置SpringMVC技術處理的請求

1:創建Maven項目,并導入對應的jar包

打開IDEA,創建一個新的web項目
在這里插入圖片描述
因為使用骨架創建的項目結構不完整,需要手動補全
在這里插入圖片描述
將pom.xml中多余的內容刪除掉,再添加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.itheima</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>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>

說明:servlet的坐標為什么需要添加provided ?

  • scope是maven中jar包依賴作用范圍的描述,
  • 如果不設置默認是compile在在編譯、運行、測試時均有效
  • 如果運行有效的話就會和tomcat中的servlet-api包發生沖突,導致啟動報錯
  • provided代表的是該包只在編譯和測試的時候用,運行的時候無效直接使用tomcat中的,就避免沖突

2:創建控制器類

//2.制作控制器類,等同于Servlet
//2.1必須是一個spring管理的bean
//2.2定義具體處理請求的方法
//2.3設置當前方法的訪問路徑
//2.4設置響應結果為json數據
@Controller
public class UserController {@RequestMapping("/save")@ResponseBodypublic String save(){System.out.println("user save ...");return "{'module':'springmvc'}";}
}

3:創建配置類

//3.定義配置類加載Controller對應的bean
@Configuration
@ComponentScan("com.itheima.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;
}
}

5:配置Tomcat環境

在這里插入圖片描述

6:啟動運行項目

在這里插入圖片描述

7:瀏覽器訪問

瀏覽器輸入http://localhost/save進行訪問,可以看得如下內容
在這里插入圖片描述
至此SpringMVC的入門案例就已經完成。

8:知識點總結

知識點1:@Controller
在這里插入圖片描述
知識點2:@RequestMapping
在這里插入圖片描述
知識點3:@ResponseBody
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212848.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數學建模】《實戰數學建模:例題與講解》第八講-回歸分析(含Matlab代碼)

【數學建模】《實戰數學建模&#xff1a;例題與講解》第八講-回歸分析&#xff08;含Matlab代碼&#xff09; 回歸分析基本概念經典多元線性回歸&#xff08;MLR&#xff09;主成分回歸&#xff08;PCR&#xff09;偏最小二乘回歸&#xff08;PLS&#xff09;建模過程應用和優勢…

2023年12月11日-12月17日(項目需求+ue5底層渲染)

可以試試每小時項目需求內容ue5底層渲染交替進行。 周一&#xff1a; 6&#xff1a;11–&#xff0c;ue5底層渲染02A15

C# List類常用操作 之 查找

// // // 作者&#xff1a;鳥哥 // // email:xiaoniao2003gmail.com // // using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Formatters;class Program {class Student{internal string Name;internal int Ag…

Pandas實踐_pandas基礎

文章目錄 一、文件的讀取和寫入1.文件讀取2.數據寫入 二、基本數據結構1.Series2.DataFrame 三、常用基本函數1.匯總函數2.特征統計函數3.唯一值函數4.替換函數5.排序函數6.apply方法 四、窗口對象1.滑窗對象2.擴張窗口 一、文件的讀取和寫入 1.文件讀取 pandas可以讀取的文件…

rust宏(macro)詳解

前言 rust 學習曲線非常陡峭&#xff0c;但是基本語法也還算挺好理解&#xff0c;自動內存管理有點類似智能指針&#xff0c;基本看一下語法入門就可以大概理解&#xff0c;但是唯獨宏很難理解&#xff0c;語法非常晦澀。但是功能非常強大。聲明宏類似于c語言的宏處理&#xf…

docker-ubuntu中基于keepalived+niginx模擬主從熱備完整過程

一、環境準備 &#x1f517;在Ubuntu中安裝docker 二、主機 1、環境搭建 1.1 鏡像拉取 docker pull ubuntu:16.041.2 創建網橋 docker network create -dbridge --subnet192.168.126.0/24 br11.3 啟動容器 docker run -it --name ubuntu-1 --privileged -v /home/vac/l…

為 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平臺使用 jni 實現桌面端與 C/C++ 互操作

前言 在上篇文章中我們已經介紹了實現 Compose MultiPlatform 對 C/C 互操作的基本思路。 并且先介紹了在 kotlin native 平臺使用 cinterop 實現與 C/C 的互操作。 今天這篇文章將補充在 jvm 平臺使用 jni。 在 Compose MultiPlatform 中&#xff0c;使用 jvm 平臺的是 An…

Kubernetes實戰(十)-升級k8s集群

1 Kubernetes(k8s) 集群升級過程 Kubernetes 使用 kubeadm 工具來管理集群組件的升級。在集群節點層面&#xff0c;升級 Kubernetes(k8s)集群的過程可以分為以下幾個步驟&#xff1a; 1&#xff09;檢查當前環境和配置是否滿足升級要求。 2&#xff09;升級master主節點&…

如何一個例子玩明白GIT

一個例子玩明白GIT GIT的介紹和教程五花八門&#xff0c;但實際需要用的就是建倉、推送、拉取等操作&#xff0c;這兒咱可以通過一個例子熟悉這些操作&#xff0c;一次性搞定GIT的使用方法學習。下面這個例子的內容是內容是建立初始版本庫&#xff0c;然后將數據復制到 "遠…

輕量封裝WebGPU渲染系統示例<45>- 材質組裝流水線(MaterialPipeline)燈光、陰影、霧(源碼)

當前示例源碼github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineFog.ts 當前示例運行效果: 此示例基于此渲染系統實現&#xff0c;當前示例TypeScript源碼如下&#xff1a; export class MaterialPipelineFog {pr…

數組創建方法

數組的創建 1.let a[] 2.let anew Array(5) 3.let anew Array(1,2,3) 4.let a[1,2,3] 創建數組是空還是有值是以上四種寫法。但是如果沒給值的變量是undefined&#xff0c;再a[0]找不到這種變量的。所以當找某一個數需要已經是數組內存。不想給值可以給空數組。只要是數組…

MEMS制造的基本工藝介紹——晶圓鍵合

晶圓鍵合是一種晶圓級封裝技術&#xff0c;用于制造微機電系統 (MEMS)、納米機電系統 (NEMS)、微電子學和光電子學&#xff0c;確保機械穩定和氣密密封。用于 MEMS/NEMS 的晶圓直徑范圍為 100 毫米至 200 毫米&#xff08;4 英寸至 8 英寸&#xff09;&#xff0c;用于生產微電…

【重點】【環鏈表入口】142. 環形鏈表 II

題目 public class Solution {public ListNode detectCycle(ListNode head) {if (head null || head.next null) {return null;}ListNode slow head, fast head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.next;if (slow fast) …

SQL語句---更新數據

介紹 使用sql語句更新數據。 命令 update 表名 set 字段1值1[,字段2值2] [where 條件表達式];[]&#xff08;方括號&#xff09;內的表是表示可選。 例子 將a表id值等于1的數據的名稱改為666 update a set name666 where id1;

2023-12-05 Qt學習總結7

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言二十 QTcpSocket QTcpServer網絡庫服務端代碼:客戶端代碼 二十一 QProcess進程類二十二 QThread線程總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 二十 QTcpSocket QTcpServer網絡庫 QTcpSocket和…

持續集成交付CICD:Jenkins流水線實現Nexus制品晉級策略

目錄 一、理論 1.開發測試運維環境 二、實驗 1.Nexus制品晉級策略 一、理論 1.開發測試運維環境 &#xff08;1&#xff09;環境 1&#xff09;持續集成開發環境&#xff08;DEV: Development Environment&#xff09; 直接通過源代碼編譯打包&#xff0c;其會跑單元測試…

python 筆記 :trajectory_distance包(如何可以正確使用)【debug篇】

包的地址&#xff1a;maikol-solis/trajectory_distance (github.com) 1 模塊介紹 用Cython實現的Python模塊&#xff0c;用于計算二維軌跡之間的距離 trajectory_distance包提供了9種軌跡間的距離計算方法&#xff1a; SSPD&#xff08;對稱線段路徑距離&#xff09;OWD&a…

機器學習算法(9)——集成技術(Bagging——隨機森林分類器和回歸)

一、說明 在這篇文章&#xff0c;我將向您解釋集成技術和著名的集成技術之一&#xff0c;它屬于裝袋技術&#xff0c;稱為隨機森林分類器和回歸。 集成技術是機器學習技術&#xff0c;它結合多個基本模塊和模型來創建最佳預測模型。為了更好地理解這個定義&#xff0c;我們需要…

WLAN配置實驗

本文記錄了WLAN配置實踐的過程&#xff0c;該操作在華為HCIA中屬于相對較復雜的實驗&#xff0c;記錄過程備忘。這里不就WLAN原理解釋&#xff0c;僅進行配置實踐&#xff0c;可以作為學習原理時候的參考。本文使用華為ENSP進行仿真。實驗拓撲圖如下&#xff1a; 1.WLAN工作流程…

【electron】外語函數接口 FFI

? 目錄 ? &#x1f6eb; 導讀需求開發環境 1?? FFI概念優點注意事項 2?? 【廢棄】node-ffi3?? node-ffi-napi安裝&#xff08;windows系統下&#xff09;示例&#xff1a;MessageBoxA、NtSuspendProcess 4?? node-win32-api安裝示例&#xff1a;查找窗口并設置窗口標…