SpringMVC再復習1

一、三層架構

  1. 表現層(WEB 層)

    • 定義 :是應用程序與客戶端進行交互的最外層,主要負責接收用戶的請求,并將處理結果顯示給用戶。

    • 作用 :在 Spring MVC 中,表現層通常采用 MVC 設計模式來構建。

    • 技術 :一般會使用 JSP、HTML 等技術來展示數據給用戶。

  2. 業務層

    • 定義 :位于表現層和持久層之間,是應用程序的核心部分。

    • 作用 :負責處理公司具體的業務邏輯,對數據進行處理和分析,實現業務規則和流程的控制。

  3. 持久層

    • 定義 :是應用程序與數據庫進行交互的底層。

    • 作用 :負責數據的持久化操作,如數據的增刪改查等,將業務數據存儲到數據庫中或者從數據庫中讀取數據。

二、MVC 概念

  1. Model(模型)

    • 定義 :是應用程序的數據模型,通常是一個 JavaBean 類。

    • 作用 :用于封裝數據,將數據以對象的形式進行存儲和傳遞,便于數據的管理和使用。

  2. View(視圖)

    • 定義 :是應用程序的用戶界面,通常由 JSP、HTML 等技術實現。

    • 作用 :用于展示數據給用戶,將模型中的數據顯示在界面上,讓用戶能夠直觀地看到和操作數據。

  3. Controller(控制器)

    • 定義 :是應用程序的控制中心,通常是一個 Java 類。

    • 作用 :用于接收用戶的請求,對請求進行處理和調度,調用相應的業務邏輯方法,對數據進行校驗等操作。

三、Spring MVC 入門案例

  1. 創建 WEB 工程

    • 使用開發工具(如 Eclipse、IntelliJ IDEA 等)創建一個新的 WEB 工程。

  2. 引入開發的 jar 包

    • 在項目的 pom.xml 文件中添加以下依賴,引入 Spring 相關的 jar 包:

<properties><spring.version>5.0.2.RELEASE</spring.version>
</properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency>
</dependencies>
  1. 編寫 index.jsp 頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>入門程序</title>
</head>
<body><h3>入門</h3><a href="/hello.do" >入門程序</a>
</body>
</html>
  1. 編寫 suc.jsp 頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>成功</title>
</head>
<body><h3>入門成功了2...</h3>
</body>
</html>
  1. 編寫 Controller 類和方法

package cn.tx.demo1;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class HelloController {@RequestMapping(path = "/hello.do")public String sayHello(){System.out.println("入門方法執行了2...");return "suc";}
}
  1. 配置核心的控制器(配置 DispatcherServlet)

<servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern>
</servlet-mapping>
  1. 編寫 springmvc.xml 的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.qcbyjy"></context:component-scan><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"></property><property name="suffix" value=".jsp"></property></bean><!-- <mvc:annotation-driven></mvc:annotation-driven>--></beans>
  1. 啟動 Tomcat 服務器,進行測試

    • 啟動 Tomcat 服務器后,訪問 index.jsp 頁面中的超鏈接,會觸發對 hello.do 的請求。

    • 請求會被 DispatcherServlet 攔截,根據配置找到 HelloController 中的 sayHello 方法進行處理。

    • 處理完成后,返回 suc.jsp 頁面進行展示。

四、Spring MVC 執行流程

  1. 啟動 Tomcat 服務器

    • 當服務器啟動時,由于在 web.xml 中配置了 load-on-startup 標簽,會創建 DispatcherServlet 對象,并加載 springmvc.xml 配置文件。

  2. 創建控制器對象

    • 配置了注解掃描后,Spring 會掃描指定的包及其子包,找到帶有@Controller 注解的類,并創建其對象。

  3. 接收請求

    • 客戶端發送請求到服務器,請求 URL 會被 DispatcherServlet 攔截。

  4. 查找處理器

    • DispatcherServlet 根據請求 URL 和控制器類中@RequestMapping 注解的配置,找到對應的處理器方法。

  5. 執行處理器方法

    • 調用處理器方法,處理業務邏輯。

  6. 返回視圖名稱

    • 處理器方法執行完成后,返回一個字符串形式的視圖名稱。

  7. 解析視圖

    • 根據配置的視圖解析器,將視圖名稱解析為具體的視圖資源路徑。

  8. 渲染頁面

    • Tomcat 服務器根據解析后的視圖路徑,渲染頁面并返回給客戶端。

五、@RequestMapping 注解

  1. 作用

    • 用于建立請求 URL 和處理方法之間的對應關系。

  2. 使用位置

    • 可以作用在類上和方法上。

    • 作用在類上 :作為第一級的訪問目錄。

    • 作用在方法上 :作為第二級的訪問目錄。

  3. 屬性

    • path :指定請求路徑的 URL。

    • value :與 path 屬性作用相同。

    • method :指定該方法的請求方式,如 GET、POST 等。

    • params :指定限制請求參數的條件。

六、請求參數的綁定說明

  1. 綁定機制

    • 表單提交的數據都是以 k=v 的形式存在的,如 username=haha&password=123。

    • SpringMVC 的參數綁定過程是將表單提交的請求參數作為控制器中方法的參數進行綁定。

  2. 要求

    • 提交表單的 name 屬性和參數的名稱必須相同,并且區分大小寫。

  3. 支持的數據類型

    • 基本數據類型和字符串類型

      • 提交表單的 name 和參數的名稱相同。

    • 實體類型(JavaBean)

      • 提交表單的 name 屬性需要與 JavaBean 中的屬性名稱一致。

      • 如果一個 JavaBean 類中包含其他的引用類型,表單的 name 屬性需要編寫成:對象. 屬性,例如:address.name。

    • 集合數據類型(List、Map 集合等)

      • 在 JSP 頁面中,可以通過 list[0]. 屬性 的形式來提交集合屬性的數據。

七、解決中文亂碼問題

  1. 配置過濾器

    • 在 web.xml 中配置 Spring 提供的 CharacterEncodingFilter 過濾器類,以解決中文亂碼問題。

<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param>
</filter>
<filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

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

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

相關文章

Centos 7系統 寶塔部署Tomcat項目(保姆級教程)

再看文章之前默認已經安裝好系統&#xff0c;可能是云系統&#xff0c;或者是虛擬機。 寶塔安裝 這個比較簡單&#xff0c;參考這個老哥的即可&#xff1a; https://blog.csdn.net/weixin_42753193/article/details/125959289 環境配置 進入寶塔面板之后會出現環境安裝&…

Nginx核心功能

目錄 一&#xff1a;基于授權的訪問控制 1&#xff1a;基于授權的訪問控制簡介 2&#xff1a;基于授權的訪問控制步驟 &#xff08;1&#xff09;使用htpasswd 生成用戶認證文件 &#xff08;2&#xff09;修改密碼文件權限為400&#xff0c;將所有者改為nginx&#xff0c;…

AnimateCC基礎教學:漫天繁星-由DeepSeek輔助完成

1.界面及元件抓圖: 2.核心代碼: // 初始化設置 var stars []; var stars2 []; var numStars 100; var stageWidth stage.canvas.width; var stageHeight stage.canvas.height; console.log(stageWidth, stageHeight);// 創建星星函數 function createStar() {var star n…

通過DeepSeek大語言模型控制panda機械臂,聽懂人話,擬人性回答。智能機械臂助手又進一步啦

文章目錄 前言環境配置運行測試報錯 前言 通過使用智能化的工作流控制系統來精確操控機械臂&#xff0c;不僅能夠基于預設算法可靠地規劃每個動作步驟的執行順序和力度&#xff0c;確保作業流程的標準化和可重復性&#xff0c;還能通過模塊化的程序設計思路靈活地在原有工作流中…

分享一款免費的 AI 工作流平臺

分享一款 AI 工作流/任務流平臺&#xff0c;通過直觀的流程圖設計&#xff0c;輕松實現復雜業務流程的自動化與可視化&#xff0c;無縫集成 AI 大模型、AI 生圖、數據庫、條件分支、并行節點、自定義任務節點等等。 效果圖&#xff1a; 官網體驗地址&#xff1a;https://www.…

前端開發本地配置 HTTPS 全面詳細教程

分為兩步&#xff1a;生成證書、本地服務配置使用證書一、HTTPS 的基本概念 HTTPS 是一種安全的 HTTP 協議&#xff0c;它通過 SSL/TLS 對數據進行加密&#xff0c;確保數據在傳輸過程中不被竊取或篡改。在前端開發中&#xff0c;某些功能&#xff08;如 Geolocation API、Web…

day10 python機器學習全流程實踐

在機器學習的實踐中&#xff0c;數據預處理與模型構建是極為關鍵的環節。本文將回顧數據預處理的全流程&#xff0c;并基于處理后的數據完成簡單的機器學習建模與評估&#xff0c;暫不涉及復雜的調參過程。 一、預處理流程回顧 機器學習的成功&#xff0c;很大程度上依賴于高…

4月28號

初認web前端: web標準: HTML:

【Linux系統】systemV共享內存

system V共享內存 在Linux系統中&#xff0c;共享內存是一種高效的進程間通信&#xff08;IPC&#xff09;機制&#xff0c;它允許兩個或者多個進程共享同一塊物理內存區域&#xff0c;這些進程可以將這塊區域映射到自己的虛擬地址空間中。 共享內存區是最快的IPC形式。一旦這…

(七)RestAPI 毛子(Http 緩存/樂觀鎖/Polly/Rate limiting/異步大文件上傳)

文章目錄 項目地址一、Http Cache1.1 服務注冊1.2 Validation with ETag1. 添加ETagMiddleware中間件2. 創建內存ETag存儲器3. 服務注冊4. 測試二、使用ETag實現樂觀鎖2.1 添加樂觀鎖方法2.2 修改Controller2.3 測試樂觀鎖三、Rate Limiting3.1 添加速率控制服務1. 在Program里…

2025.4.26_STM32_SPI

1.SPI簡介 2.硬件電路 所有SPI設備的SCK(時鐘)、MOSI(主機輸出從機輸入)、MISO(主機輸入從機輸出)分別連在一起。SCK線只能被主機控制&#xff0c;和I2C相同。 主機另外引出多條SS控制線&#xff0c;分別接到各從機的SS引腳 (SS不用的時候為高電平&#xff0c;當主機需要選中某…

JAVA:單例模式

單例模式是設計模式之一 設計模式&#xff0c;就像古代打仗&#xff0c;我們都聽過孫子兵法&#xff0c;把計謀概括下來弄成一種模式&#xff0c;形成一種套路。 軟件開發中也有很多場景&#xff0c;多數類似的問題場景&#xff0c;解決方案就形成固定的模式&#xff0c;單例…

腦機接口:重塑人類未來的神經增強革命

引言 人類對大腦的探索從未停止&#xff0c;而腦機接口&#xff08;Brain-Computer Interface, BCI&#xff09;的崛起&#xff0c;正在將科幻電影中的“意念操控”變為現實。 這項技術通過解碼腦電信號&#xff0c;實現人腦與外部設備的直接交互&#xff0c;不僅為醫療康復帶來…

從SOA到微服務:架構演進之路與實踐示例

一、架構演進背景 在軟件開發領域&#xff0c;架構風格隨著業務需求和技術發展不斷演進。從早期的單體架構&#xff0c;到面向服務架構(SOA)&#xff0c;再到如今的微服務架構&#xff0c;每一次變革都是為了解決當時面臨的核心問題。 二、SOA架構解析 2.1 SOA核心概念 SOA&…

可靈AI 2.0上線:重新定義AI創作?好萊塢級特效觸手可及

2025年4月15日&#xff0c;快手正式發布可靈AI 2.0&#xff0c;這款被譽為“讓好萊塢特效師顫抖”的AI工具&#xff0c;以物理引擎級動態生成和電影語言自由操控兩大核心技術&#xff0c;徹底顛覆了內容創作的想象邊界。上線24小時內&#xff0c;全球用戶已用它生成超過100萬條…

Mysql存儲引擎、鎖機制

Mysql存儲引擎 InnoDB?&#xff08;MySQL 5.5 及以后版本中的默認存儲引擎&#xff09; ??事務支持??&#xff1a;支持 ??ACID 事務??&#xff0c;適合需要高可靠性的場景&#xff08;如支付、訂單&#xff09;。 ??鎖機制??&#xff1a;默認使用 ??行級鎖??…

飛蛾撲火算法優化+Transformer四模型回歸打包(內含MFO-Transformer-LSTM及單獨模型)

飛蛾撲火算法優化Transformer四模型回歸打包&#xff08;內含MFO-Transformer-LSTM及單獨模型&#xff09; 目錄 飛蛾撲火算法優化Transformer四模型回歸打包&#xff08;內含MFO-Transformer-LSTM及單獨模型&#xff09;預測效果基本介紹程序設計參考資料 預測效果 基本介紹 …

音視頻開發---視頻編碼基礎

一、視頻編碼的必要性 1. 存儲與傳輸成本高 未經編碼壓縮的原始視頻的數據量極大,例如:一般電影的亮度信號采樣頻率為13.5MHz;色度信號的頻帶通常為亮度信號的一半或更少,為6.75MHz或3.375MHz。以4:2:2的采樣頻率為例,Y信號采用13.5MHz,色度信號U和V采用6.75MHz采樣,…

手動安裝OpenSSL1.1.1

根據報錯信息 Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer&#xff0c;說明當前系統中的 OpenSSL 版本低于 1.1.1&#xff0c;或者 Python 編譯時未找到符合要求的 OpenSSL 庫。以下是分步解決方案&#xff1a; 1. 檢查當前 OpenSSL 版本 首先…

[原創](現代Delphi 12指南):[macOS 64bit App開發]: 跨平臺開發同樣支持retain()引用計數器處理.

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、…