SpirngMVC框架學習筆記(一):SpringMVC基本介紹

1 SpringMVC 特點&概述

  • SpringMVC 從易用性,效率上 比曾經流行的 Struts2 更好?
  • SpringMVC WEB 層框架,接管了 Web 層組件, 比如控制器, , 視圖解析, 返回給用戶的數據格式, 同時支持 MVC 的開發模式/開發架構
  • SpringMVC 通過注解,讓 POJO 成為控制器,不需要繼承類或者實現接口
  • SpringMVC 采用低耦合的組件設計方式,具有更好擴展和靈活性.
  • 支持 REST 格式的 URL 請求.
  • SpringMVC 是基于 Spring , 也就是 SpringMVC 是在 Spring 基礎上的。SpringMVC 的核心包 spring-webmvc-xx.jar spring-web-xx.jar

2 Spring、SpringMVC和SpringBoot 的關系

  • Spring MVC 只是 Spring 處理 WEB 層請求的一個模塊/組件, Spring MVC 的基石是Servlet[Java WEB]
  • Spring Boot 是為了簡化開發者的使用, 推出的封神框架(約定優于配置,簡化了 Spring 的配置流程), SpringBoot 包含很多組件/框架,Spring就是最核心的內容之一,也包含 SpringMVC
  • 他們的關系大概是: Spring Boot > Spring > Spring MVC

3?SpringMVC-快速入門(構建項目)

(1)新建一個java項目

?(2)添加web框架

?點擊確定后,可以看到項目目錄下自動生成了一個web目錄

?

(3)在WEB-INF目錄下新建一個lib目錄,存放jar包

?

(4)將需要使用的jar包復到lib目錄下(所需jar包可在文章頂部獲取)

?全選復制

粘貼到lib目錄

(5)將所有jar包添加為庫

?

(6)在src目錄下創建spring容器文件

?

?(7)配置 web/WEB-INF/web.xml 文件

<?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"><!--配置前端控制器/中央控制器/分發控制器--><!--1.用戶的請求都會經過它的處理--><servlet><!--servlet-name可以自己定義--><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置屬性contextConfigLocation,指定 DispatcherServlet 去操作的spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-mvc.xml</param-value></init-param><!--在web項目啟動時,就自動加載DispatcherServlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><!--需要和上面的servlet-name保持一致--><servlet-name>springDispatcherServlet</servlet-name><!--1.這里配置的 url-pattern 是 / ,表示用戶的請求都經過DispatcherServlet2.這樣配置也支持 rest 風格的 url 請求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

(8)在web目錄下創建 login.jsp 作為登錄頁面

<%--Created by IntelliJ IDEA.User: xxxDate: 2024-05-25Time: 20:50To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登錄</title>
</head>
<body>
<h3>登錄頁面</h3>
<%--
action="login" 表示的url 是 http://localhost:8080/springmvc/login
--%>
<form action="login">u:<input name="username" type="text">p:<input name="password" type="password"><input type="submit" value="登錄">
</form>
</body>
</html>

(9)在src目錄下創建包com.web,在該包下創建 UserServlet.java 作為控制器

package com.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 如果使用了SpringMVC框架,在一個類上標識@Controller* 表示將該類視為一個控制器,注入到容器中*/
@Controller
public class UserServlet {//編寫方法,響應用戶的請求/*** 1.login方法是用于響應用戶的登錄請求* 2.@RequestMapping(value = "/login") 表示給控制器的這個方法配了一個url映射* 當用戶在瀏覽器輸入 http://localhost:8080/web工程路徑/login 就能訪問到login()* 3.return "login_ok"; 表示返回結果給視圖解析器(InternalResourceViewResolver)* ,視圖解析器會根據配置,來決定跳轉哪個頁面*/@RequestMapping(value = "/login")public String login(){System.out.println("login ok....");return "login_ok";}
}

(10)在前面已經創建好spring容器文件中進行配置

<?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 https://www.springframework.org/schema/context/spring-context.xsd"><!--配置自動掃描包--><context:component-scan base-package="com.web"/><!--下面配置springMVC的視圖解析器,比如我們的controller return 的是 login_ok那么要跳轉的頁面頁面就是 /WEB-INF/pages/login_ok--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置屬性suffix(后綴) 和 prefix(前綴)--><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean>
</beans>

(11)在web/WEB-INF目錄下新建目錄 pages,在pages目錄新建一個jsp文件,login_ok.jsp

<%--Created by IntelliJ IDEA.User: 王偉俊Date: 2024-05-25Time: 21:11To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登錄成功</title>
</head>
<body>
<h1>恭喜 登錄成功</h1>
</body>
</html>

(12)配置 tomcat 服務器

?

?

tomcat配置成功!

?(13)啟動服務器

在瀏覽器輸入網址http://localhost:8080/springmvc/login.jsp?

點擊登錄,顯示如下頁面,跳轉成功!

4 細節說明

  • ?重點學習如何搭建一個 springmvc 項目,初步理解 springmvc 工作流程
  • 這里的 UserServlet 需要注解成@Controller ,我們稱為一個 Handler 處理器
  • UserServlet 指定 url 時,value可以省略
@RequestMapping("/login")
  • 關 于 SpringMVC DispatcherServlet 的 配 置 文 件 , 如 果 不 在 web.xml 指 定 applicationContext-mvc.xml, 默認在 /WEB-INF/springDispatcherServlet-servlet.xml 找這 個配置文件

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

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

相關文章

Java數據結構和算法(B樹)

前言 B樹又叫平衡的多路搜索樹&#xff1b;平衡的意思是又滿足平衡二叉樹的一些性質&#xff0c;左樹大于右樹&#xff1b; 多路意思是&#xff0c;可以多個結點&#xff0c;不再是像二叉樹只有兩個結點&#xff1b; 實現原理 B樹是一種自平衡的搜索樹&#xff0c;通常用于實…

MySQL和MongoDB數據庫的區別

MySQL和MongoDB數據庫的區別 隨著大數據和云計算技術的興起&#xff0c;數據庫的選擇成為開發者和架構師必須面對的重要決策。MySQL和MongoDB作為關系型數據庫和非關系型數據庫的代表&#xff0c;在各自領域都有著廣泛的應用。本文將從多方面詳細比較MySQL和MongoDB&#xff0…

MATLAB:插值函數之interp與griddata

MATLAB 提供了多種插值函數來處理不同維度的數據。其中&#xff0c;interp1、interp2 和 griddata 是常用的插值函數&#xff0c;分別用于一維、二維和多維&#xff08;不規則&#xff09;數據的插值。 之前有對interp1進行過詳細介紹&#xff0c;如需詳細了解&#xff0c;請查…

會聲會影調速怎么用 會聲會影如何調整音頻速度

會聲會影是一款功能強大的視頻編輯軟件&#xff0c;可以幫助我們輕松的實現剪輯。 會聲會影的操作簡單易懂&#xff0c;界面簡潔明快。適合家庭使用&#xff0c; 我們使用會聲會影可以在家就能將視頻剪輯成好萊塢大片。但是在使用的過程中&#xff0c;仍然會遇到一些操作上的問…

洛谷 P3803 【模板】多項式乘法(FFT)

【模板】多項式乘法&#xff08;FFT&#xff09; 題目背景 這是一道多項式乘法模板題。 注意&#xff1a;本題并不屬于中國計算機學會劃定的提高組知識點考察范圍。 題目描述 給定一個 n n n 次多項式 F ( x ) F(x) F(x)&#xff0c;和一個 m m m 次多項式 G ( x ) G(…

C語言--指針數組和數組指針的區別

指針數組 就是一個數組&#xff0c;由指針構成的數組&#xff0c;每一個元素都是指針&#xff0c;每個指針可以指向不同的內存地址&#xff0c;這些地址可以是數組、變量。 int var1 10; int var2 20; int var3 30;int *ptrArray[3]; // 定義一個指針數組&#xff0c;包含…

2024年上半年軟件系統架構師論文【回憶版】

文章目錄 考試時間考試地點案例分析1、微服務架構的優點和缺點2、質量屬性的6個元素3、分布式鎖 Redis的缺點4、MongoDB 存儲矢量圖的優勢 論文回憶版論文一、論單元測試的設計與應用論文二、論大數據模型的設計與應用論文三、論模型驅動的架構設計及應用論文四、論云原生運維的…

Mybatis-Plus-Join

1. 簡介 官網 https://mybatisplusjoin.com/ 2. 基本用法 步驟&#xff1a; 添加依賴 <!--mybatis-plus-join--> <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><ve…

探索LangGraph:如何創建一個既智能又可控的航空客服AI

這種設計既保持了用戶控制權&#xff0c;又確保了對話流程的順暢。但隨著工具數量的增加&#xff0c;單一的圖結構可能會變得過于復雜。我們將在下一節中解決這個問題。 第三部分的圖將類似于下面的示意圖&#xff1a; 狀態定義 首先&#xff0c;定義圖的狀態。我們的狀態和L…

homography原理和圖像相似度計算

1. homography 講homography原理 講homography應用 2. 圖像相似度計算 20230621-計算兩幅圖像的相似度 20221205-有史以來最全的圖像相似度算法 20231112-圖像相似度對比方法

C++:List的使用和模擬實現

???學習的道路很枯燥&#xff0c;希望我們能并肩走下來! 文章目錄 目錄 文章目錄 前言 一 list的介紹及使用 1.1 list的介紹 1.2 list的使用 1.2.1 list的構造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers …

golang+redis的延時隊列

網址 https://github.com/cfanbo/delay-queue-redis 代碼結構很簡單&#xff0c;簡單代表著自由度很高&#xff0c;使用過程中出現問題也很好修改。 我很喜歡這樣的代碼&#xff0c;至少我看的懂&#xff0c;該有的都有。 //package main // //import ( // "context&q…

leetcode209_長度最小的子數組

要求某個連續的區間內的元素值總和>S . 思路&#xff1a;滑動窗口&#xff1a;本質上是一種雙指針法。 &#xff08;1&#xff09;初始化left right 0&#xff1b; &#xff08;2&#xff09;left不動&#xff0c;right移動&#xff0c;擴大窗口&#xff0c;直至符合要…

selinux的安全策略可以影響ntp的方式

SELinux 是一個靈活而強大的模塊化安全策略框架&#xff0c;它允許管理員定義和執行非常具體的訪問控制策略。這些策略可以限制程序和進程對系統資源的訪問&#xff0c;包括文件、網絡端口、進程間通信等。 對于NTP&#xff0c;SELinux 策略可以影響以下幾個方面&#xff1a; …

網絡空間安全數學基礎·整除與同余

主要內容&#xff1a; 整除的基本概念&#xff08;掌握&#xff09; 素數&#xff08;掌握&#xff09; 同余的概念&#xff08;掌握&#xff09; 1.1整除 定義&#xff1a;設a&#xff0c;b是任意兩個整數&#xff0c;其中b≠0&#xff0c;如果存在一個整數q&#xff0c;使 …

12306技術內幕

公司內部做的一次技術分享 文章目錄 12306的成就12306系統特點12306系統難點解決思路產品角度技術角度余票庫存的表如何設計&#xff1f; 搶票軟件推薦巨人的肩膀 對于未公開的技術部分&#xff0c;只能結合已公開的信息&#xff0c;去做大膽的猜想。 本文提到的一些解決方案&…

SpringBoot + Mybatis-Plus中樂觀鎖實現

悲觀鎖 悲觀鎖是一種悲觀思想&#xff0c;它認為數據很可能會被別人所修改 所以總會對數據進行上鎖&#xff0c;讀操作和寫操作都會上鎖&#xff0c;性能較低&#xff0c;使用較少&#xff01; 樂觀鎖 樂觀鎖是一種樂觀思想&#xff0c;它認為數據并不一定會被別人所修改 所以…

成為程序員后我都明白了什么?從入行到棄坑?

作為一個入行近10年的php程序員&#xff0c;真心感覺一切都才剛開始&#xff0c;對計算機&#xff0c;編程語言的理解也好&#xff0c;程序員中年危機也罷&#xff0c;之前都是聽別人說的&#xff0c;真的自己到了這個水平&#xff0c;這個年齡才深刻體會到這其中的種種。 我一…

測試基礎05:軟件測試的分類

課程大綱 1、兩種架構&#xff08;Architecture&#xff09; 1.1、B/S&#xff08;Browser/Server&#xff09; 瀏覽器服務器架構&#xff08;大體3步&#xff09;&#xff1a;用戶通過瀏覽器向服務器發出請求&#xff0c;服務器處理請求&#xff0c;將結果通過網絡返回到用戶…