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
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...