SpringMVC筆記

来源:https://www.cnblogs.com/DFshmily/archive/2022/10/05/16755669.html
-Advertisement-
Play Games

一、SpringMVC簡介 1、什麼是MVC MVC是一種軟體架構的思想,將軟體按照模型、視圖、控制器來劃分 **M:**Model,模型層,指工程中的JavaBean,作用是處理數據 JavaBean分為兩類: 一類稱為實體類Bean:專門存儲業務數據的,如Student、User等 一類稱為業務 ...


一、SpringMVC簡介

1、什麼是MVC

MVC是一種軟體架構的思想,將軟體按照模型、視圖、控制器來劃分

M:Model,模型層,指工程中的JavaBean,作用是處理數據

JavaBean分為兩類:

  • 一類稱為實體類Bean:專門存儲業務數據的,如Student、User等
  • 一類稱為業務處理Bean:指Service或Dao對象,專門用於處理業務邏輯和數據訪問

V:View,視圖層,指工程中的html或jsp等頁面,作用是與用戶進行交互,展示數據

C:Controller,控制層,指工程中的servlet,作用是接收請求和響應瀏覽器

MVC的工作流程:

用戶通過視圖層發送請求到瀏覽器,在伺服器中請求被Controller接收,Controller調用相應的Model層處理請求,處理完畢將結果返回到Controller,Controller在根據請求處理的結果找到相應的View視圖,渲染數據後最終響應給瀏覽器

2、什麼是SpringMVC

SpringMVC是Spring的一個後續產品,是Spring的一個子項目

SpringMVC是Spring為表述層開發提供的一整套完備的解決方案,在表述層框架經Strust、WebWork、Strust2等諸多產品的歷代更迭之後,目前業界普遍選擇了SpringMVC作為Java EE項目表述層開發的首選方案

註:三層架構分為表述層(或表示層)、業務邏輯層、數據訪問層、表述層表示前臺頁面和後臺servlet

3、SpringMVC的特點

  • Spring家族原生產品,與IOC容器等基礎設施無縫對接
  • 基於原生的Servlet,通過了功能強大的前端控制器DispatcherServlet,對請求和響應進行統一處理
  • 表述層各細分領域需要解決的問題全方位覆蓋,提供全面解決方案
  • 代碼清新簡潔,大幅度提升開發效率
  • 內部組件化程度高,可插拔式組件即插即用,想要什麼功能配置相應組件即可
  • 性能卓著,尤其適合現代大型、超大型互連網項目要求

二、搭建環境

1、開發環境

IDE:IDEA:2020.3.4

構建工具:maven 3.8.6

伺服器:tomcat 9

Spring版本

2、創建maven工程

(1)添加web模塊

(2)打包方式:war

(3)引入依賴

<?xml version="1.0" encoding="UTF-8"?>
<!--Maven作用:1.用來做項目構建 2.項目jar包管理-->
<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>org.example</groupId>
    <artifactId>springMVC_demo1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>


    <dependencies>
<!--        SpringMVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.23</version>
        </dependency>

<!--        日誌-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.3</version>
            <scope>test</scope>
        </dependency>


<!--        ServletAPI-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
<!--            依賴範圍:provided,代表伺服器已經提供-->
            <scope>provided</scope>
        </dependency>

<!--        thymeleaf和spring5整合包-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.1.0.M3</version>
        </dependency>

    </dependencies>
</project>

3、配置web.xml

註冊SpringMVC的前端控制器DispatcherServlet

(1)預設配置方式

此配置作用下,SpringMVC的配置文件預設位於WEB-INF下,預設名稱為<servlet-name>-servlet.xml,例如,以下配置所對應SpringMVC的配置文件位於WEB-INF下,文件名springMVC-servlet.xml

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">

<!--    配置SpringMVC的前端控制器,對瀏覽器發生的請求進行統一處理-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--
            設置springMVC的核心控制器所能處理的請求的請求路徑
            '/'所匹配的請求可以是/login或.html或.js或.css方式的請求路徑
            但是'/'不能匹配.jsp請求路徑的請求
         -->
        <url-pattern></url-pattern>
    </servlet-mapping>
</web-app>

(2)擴展配置方式

可通過init-param標簽設置SpringMVC配置文件的位置和名稱,通過load-on-startup標簽設置SpringMVC前端控制器DispatcherServlet的初始化時間

<!--    配置SpringMVC的前端控制器,對瀏覽器發送的請求統一進行處理-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        配置SpringMVC配置文件的位置和名稱-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
<!--        將前端控制器DispatcherServlet的初始化時間提前到伺服器啟動時-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2022-10-05 得到cookie信息的實例聯繫: 在子應用中的“views.py”文件: from django.http import HttpResponse def get_cookie(request): cookies = request.COOKIES username = coo ...
  • echarts是百度推出的一款開源的基於`JavaScript`的可視化圖表庫,該開發庫目前發展非常不錯,且支持各類圖形的繪製可定製程度高,Echarts繪圖庫同樣可以與`Flask`結合,前臺使用`echart`繪圖庫進行圖形的生成與展示,後臺則是Flask通過`render_template`方... ...
  • 類變數: 什麼是類變數? 一個可以被一個類所有對象共用的變數 類變數關鍵字? static 類變數語法? 訪問修飾符 static 數據類型 變數名; [推薦使用] static 訪問修飾符 數據類型 變數名; 入門案例: count被child1和child2共用,只要是Child類的對象都可以共 ...
  • 上一章講到如何將程式寫入到ESP8266 WiFi模塊中,實現物聯網終端對硬體的控制。本章將通過fubuki-iot實現自定義硬體控制。同時給出一個替代百度API的方案。 硬體準備 (無) 自定義語義模型 在第一章的“提醒事項”的例子中,fubuki-iot就展現了語義模型的功能。它將命中語義模型的 ...
  • 原文:Libgdx游戲開發(2)——接水滴游戲實現 - Stars-One的雜貨小窩 本文使用Kotlin語言開發 通過本文的學習可以初步瞭解以下基礎知識的使用: Basic file access Clearing the screen Drawing images Using a camera ...
  • 一、後臺管理系統配置 1 在該表對應的models類裡面添加一個Meta類 class Meta: verbose_name_plural = '用戶表' # 指定該表在admin後臺的名字為: 用戶表 # verbose_name = '用戶表' # 末尾還是會自動加s 2 null=True,b ...
  • 我們看到下麵的示例圖是 在右鍵文件夾上查看菜單,帶有兩級的菜單選項。 文件夾 空白處 需要使用管理員許可權運行 因為右鍵菜單需要註冊表信息,打開註冊表需要管理員許可權UAC,所以在執行命令過程中需要使用管理員許可權來執行命令 import sys import winreg as reg import o ...
  • 我的博客 這個教程只適合windows,linux不適用,不過話說回來了,linux都是自帶python的,所以已經預置好了,只要打python就行了,根本不用加環境變數 言歸正傳 寫了好長時間的python,最近發現個很基礎的問題,就是很多同學已經安裝python了,但是不知道怎麼運行,找了教程, ...
一周排行
    -Advertisement-
    Play Games
  • 周末,寫點簡單的水一下。 新版本的vs創建項目的時候可以選擇自帶一個swagger。然而這隻是基本的swagger功能。 幾個介面無所謂啦,隨著介面越來越多,就這麼丟給你,一時間也會懵逼,所以這篇文章要做的有兩個功能。 給swagger文檔添加註釋 給swagger添加切換“版本”的功能(也可以理解 ...
  • 大家好,我是沙漠盡頭的狼。 本文首發於Dotnet9,介紹使用Lib.Harmony庫攔截第三方.NET庫方法,達到不修改其源碼並能實現修改方法邏輯、預期行為的效果,並且不限於只攔截public訪問修飾的類及方法,行文目錄: 什麼是方法攔截? 示常式序攔截 非public方法怎麼攔截? 總結 1. ...
  • 問題代碼: xmal:一個按鈕+一個顯示框 1 <Button Width="100" Height="50" Margin="10" Click="Button_Click">test</Button> 2 <TextBox x:Name="display" Width="300" Height= ...
  • 前置條件 ​ 阿裡雲伺服器一臺(可在購買伺服器時勾選安裝寶塔選項,免去後面的寶塔安裝) ​ 設置阿裡雲伺服器密碼並登陸伺服器 ​ 以下操作均在伺服器Linux中進行(使用遠程連接工具登錄) 寶塔登錄 登錄阿裡雲伺服器在Linux命令行中輸入bt,查看寶塔信息 ​ 根據寶塔信息提供的網站登陸寶塔服務( ...
  • GetTokenInformation 用於檢索進程或線程的令牌(Token)信息。Token是一個數據結構,其包含有關進程或線程的安全上下文,代表當前用戶或服務的安全標識符和許可權信息。GetTokenInformation函數也可以用來獲取這些安全信息,通常用於在運行時檢查某個進程或線程的許可權或安... ...
  • matplotlib 在1.0版本之前其實是不支持3D圖形繪製的。 後來的版本中,matplotlib加入了3D圖形的支持,不僅僅是為了使數據的展示更加生動和有趣。更重要的是,由於多了一個維度,擴展了其展示數據分佈和關係的能力,可以一次從三個維度來比較數據。 下麵介紹在matplotlib中繪製各類 ...
  • 編寫一個App就能編譯發佈到iOS、Android和Web等各大平臺的跨平臺技術,各大廠商一直都有研究和發佈對應技術產品,目前最熱門的莫過於Flutter框架了。而Dart作為其唯一的編程語言,今天我們開始來體驗一下…… ...
  • 實現基本的線程池 前提:我們要實現的線程池有如下功能: 基本的線程池模型 能提交和運行任務 能正常關閉線程池 線程的拒絕策略 線程池擴容 縮容線程池 代碼地址: 1、線程池的介紹? 線程池是什麼? 線程池是一種利用池化技術來管理線程的一種技術。 當沒有線程池的時候,我們如何創建線程? 繼承Threa ...
  • SDRAM基本信息 儲存能力計算 4X16X4=256(Mbit),註意不是MByte SDRAM控制 sdram包含兩個部分:sdram_ctrl、fifo_ctrl。 sdram_ctrl:其頂層為SDRAM的控制模塊內部實例化了5個模塊,有初始化、自刷新、寫和讀模塊,還有一個仲裁模塊對這四個不 ...
  • 歡迎訪問我的GitHub 這裡分類和彙總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos 本篇概覽 欣宸正在為接下新的Java雲原生實戰系列原創做準備,既然是實戰,少不了一套雲原生環境,以下內容是必不可少的: linux操作系統 kuberne ...