国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

“深入探究SpringMVC的工作原理與入門實(shí)踐“

這篇具有很好參考價(jià)值的文章主要介紹了“深入探究SpringMVC的工作原理與入門實(shí)踐“。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


“深入探究SpringMVC的工作原理與入門實(shí)踐“,spring,java,tomcat,mybatis,maven,servlet

引言

SpringMVC是一個(gè)流行的Java Web開(kāi)發(fā)框架,它提供了一種優(yōu)雅的方式來(lái)構(gòu)建靈活、可擴(kuò)展的Web應(yīng)用程序。本文將介紹SpringMVC的基本概念,深入探討其工作流程和核心組件,并提供一個(gè)入門程序來(lái)幫助讀者快速上手。

1. 什么是SpringMVC?

SpringMVC是基于Java的MVC(Model-View-Controller)設(shè)計(jì)模式的Web框架。它通過(guò)將應(yīng)用程序分為模型、視圖和控制器三個(gè)部分,實(shí)現(xiàn)了松耦合和高內(nèi)聚的架構(gòu)。SpringMVC提供了豐富的功能和靈活的配置選項(xiàng),使得開(kāi)發(fā)者能夠快速構(gòu)建可維護(hù)和可擴(kuò)展的Web應(yīng)用程序。

1.1. 模型

模型代表應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯。它可以是一個(gè)POJO(Plain Old Java Object)或一個(gè)持久化實(shí)體類。模型負(fù)責(zé)處理數(shù)據(jù)的讀取、存儲(chǔ)和驗(yàn)證,并提供給視圖和控制器使用。

1.2. 視圖

視圖負(fù)責(zé)展示模型的數(shù)據(jù)給用戶。它可以是一個(gè)JSP頁(yè)面、HTML模板或其他類型的視圖技術(shù)。視圖通常是被動(dòng)的,只負(fù)責(zé)展示數(shù)據(jù),不處理業(yè)務(wù)邏輯。

1.3. 控制器

控制器接收用戶的請(qǐng)求并根據(jù)請(qǐng)求的內(nèi)容選擇合適的處理邏輯。它負(fù)責(zé)處理用戶輸入、調(diào)用模型的方法來(lái)處理數(shù)據(jù),并將處理結(jié)果傳遞給視圖進(jìn)行展示。

2. SpringMVC的工作流程

SpringMVC的工作流程可以分為以下幾個(gè)步驟:

2.1. 客戶端發(fā)送請(qǐng)求

  1. 用戶發(fā)來(lái)一個(gè)請(qǐng)求,首先進(jìn)入的是前端控制器DispatcherServlet

2.2. DispatcherServlet的處理

  1. 前端控制器(DispacherServlet)將用戶發(fā)來(lái)的請(qǐng)求發(fā)送給處理器映射器(HandlerMapping)
  2. 處理器映射器根據(jù)前端控制器發(fā)來(lái)的用戶的請(qǐng)求找到對(duì)應(yīng)符合的控制器(Handler),并且將其封裝成處理器執(zhí)行鏈,返回給前端控制器。

2.3. 處理器映射器的使用

  1. 處理器適配器 (HandlerAdaptoer) 會(huì)調(diào)用對(duì)應(yīng)的具體的 Controller(處理業(yè)務(wù)邏輯)
  2. 處理器適配器接收到來(lái)自前端控制器的執(zhí)行鏈后,找到對(duì)應(yīng)執(zhí)行此執(zhí)行鏈的處理器適配器(HandlerAdapter)來(lái)調(diào)用的具體的控制器(就是說(shuō)其對(duì)應(yīng)的方法或者邏輯)

2.4. 處理器的執(zhí)行

  1. 控制器執(zhí)行完成后,會(huì)返回一個(gè)ModelAndView對(duì)象給處理器適配器
  2. 處理器適配器將返回來(lái)的ModelAndView對(duì)象返回給前端控制器(到這里所有的業(yè)務(wù)處理過(guò)程就要完了,接下就是將結(jié)果以頁(yè)面的的形式響應(yīng)給用戶)

2.5. 視圖解析器的使用

  1. 前端控制器將返回回來(lái)的ModelAndView對(duì)象交給視圖解析器(ViewResolver),視圖解析器根據(jù)傳過(guò)來(lái)的View對(duì)象解析成對(duì)應(yīng)的頁(yè)面對(duì)象
  2. ViewResolver 將封裝好的將頁(yè)面對(duì)象和Model對(duì)象返回給 DIspatcherServlet

2.6. 視圖的渲染

  1. 前端控制器再將返回回來(lái)的對(duì)象交給視圖(View)
  2. 視圖根據(jù)傳過(guò)來(lái)的Model對(duì)象再一次的對(duì)頁(yè)面進(jìn)行渲染(將模型數(shù)據(jù)填充至視圖中),然后在返回給前端控制器。
  3. 前端控制器將完成的結(jié)果響應(yīng)給瀏覽器,然后瀏覽器在展現(xiàn)給用戶。

3. SpringMVC的核心組件

SpringMVC的核心組件包括:

  • 3.1. 調(diào)度程序服務(wù)版
    DispatcherServlet是SpringMVC的前端控制器,負(fù)責(zé)接收和分發(fā)請(qǐng)求。
  • 3.2. 處理器映射器(處理程序映射)
    處理器映射器負(fù)責(zé)將請(qǐng)求映射到合適的處理器(Controller)。
  • 3.3. 處理器適配器(處理程序適配器)
    處理器適配器負(fù)責(zé)調(diào)用處理器的方法來(lái)處理請(qǐng)求。
  • 3.4. 視圖解析器(View Resolver)
    視圖解析器負(fù)責(zé)將邏輯視圖名解析為真正的視圖對(duì)象。
  • 3.5. 視圖(視圖)
    視圖負(fù)責(zé)展示處理結(jié)果給用戶。

4. 彈簧MVC

下面是一個(gè)簡(jiǎn)單的SpringMVC入門程序的示例:
4.1. 創(chuàng)建Maven項(xiàng)目
首先,我們需要?jiǎng)?chuàng)建一個(gè)Maven項(xiàng)目,并添加SpringMVC的依賴。
pom.xml依賴

<!-- jstl+standard -->
<jstl.version>1.2</jstl.version>
<standard.version>1.1.2</standard.version>
<!-- spring -->
<spring.version>5.0.2.RELEASE</spring.version>
...
<!-- spring mvc相關(guān)依賴 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>${jstl.version}</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>${standard.version}</version>
</dependency>

4.2. 配置網(wǎng)頁(yè).xml
在web.xml文件中,我們需要配置DispatcherServlet和Spring容器。
4.3. 創(chuàng)建控制器
創(chuàng)建一個(gè)spring-mvc.xml類,并添加一些處理請(qǐng)求的方法。

<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--1) 掃描com.zking.zf及子子孫孫包下的控制器(掃描范圍過(guò)大,耗時(shí))-->
    <context:component-scan base-package="com.yuan"/>

    <!--2) 此標(biāo)簽?zāi)J(rèn)注冊(cè)DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:annotation-driven />

    <!--3) 創(chuàng)建ViewResolver視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入兩個(gè)包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--4) 單獨(dú)處理圖片、樣式、js等資源 -->
    <!-- <mvc:resources location="/css/" mapping="/css/**"/>
     <mvc:resources location="/js/" mapping="/js/**"/>
     <mvc:resources location="WEB-INF/images/" mapping="/images/**"/>-->
</beans>

demo1Controller.java

package com.yuan.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author 葉秋
 * @site
 * @company 卓京公司
 * @create 2023-09-04 17:01
 */
@Controller
@RequestMapping("/main")
public class demo1Controller {

    @RequestMapping("/index")
    public String demo1(){
        System.out.println("hello  spring");
        return "index";
    }
}

4.4. 配置SpringMVC
在Spring的配置文件中,我們需要配置處理器映射器、視圖解析器等。
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_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!-- Spring和web項(xiàng)目集成start -->
  <!-- spring上下文配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-context.xml</param-value>
  </context-param>
  <!-- 讀取Spring上下文的監(jiān)聽(tīng)器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- Spring和web項(xiàng)目集成end -->

  <!-- 中文亂碼處理 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Spring MVC servlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--此參數(shù)可以不配置,默認(rèn)值為:/WEB-INF/springmvc-servlet.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!--web.xml 3.0的新特性,是否支持異步-->
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

4.5. 編寫JSP視圖
創(chuàng)建一個(gè)JSP視圖來(lái)展示處理結(jié)果。

<%--
  Created by IntelliJ IDEA.
  User: yuanh
  Date: 2023/9/4
  Time: 17:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
hello word

</body>
</html>

4.6. 運(yùn)行程序
最后,我們可以運(yùn)行程序并在瀏覽器中訪問(wèn)相應(yīng)的URL來(lái)查看結(jié)果。
“深入探究SpringMVC的工作原理與入門實(shí)踐“,spring,java,tomcat,mybatis,maven,servlet

總結(jié)

本文深入探討了SpringMVC的工作原理和核心組件,并提供了一個(gè)入門程序來(lái)幫助讀者快速上手。通過(guò)理解SpringMVC的工作流程和組件的作用,開(kāi)發(fā)者可以更好地使用該框架來(lái)構(gòu)建高效、可靠的Web應(yīng)用程序。希望本文對(duì)您有所幫助,謝謝閱讀!

補(bǔ)充:訪問(wèn)資源繞過(guò)解析器不被攔截代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-694741.html

 <!--4) 單獨(dú)處理圖片、樣式、js等資源 -->
    <!-- <mvc:resources location="/css/" mapping="/css/**"/>
     <mvc:resources location="/js/" mapping="/js/**"/>
     <mvc:resources location="WEB-INF/images/" mapping="/images/**"/>-->
    <mvc:resources location="/static/" mapping="/static/**"/>

到了這里,關(guān)于“深入探究SpringMVC的工作原理與入門實(shí)踐“的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • “深入探究Spring Boot:從入門到精通“

    標(biāo)題:深入探究Spring Boot:從入門到精通 摘要:本文將從入門到精通地介紹Spring Boot框架,包括基本概念、核心特性、常用功能和高級(jí)用法。通過(guò)閱讀本文,讀者將能夠全面了解Spring Boot,并能夠編寫出高效、可靠的Spring Boot應(yīng)用程序。 正文: Spring Boot是一個(gè)基于Spring框架的快

    2024年02月14日
    瀏覽(57)
  • 【Spring+SpringMVC+Mybatis】SSM框架的整合、思想、工作原理和優(yōu)缺點(diǎn)的略微講解

    【Spring+SpringMVC+Mybatis】SSM框架的整合、思想、工作原理和優(yōu)缺點(diǎn)的略微講解

    ??歡迎來(lái)到本文?? ??個(gè)人簡(jiǎn)介:陳童學(xué)哦,目前學(xué)習(xí)C/C++、算法、Python、Java等方向,一個(gè)正在慢慢前行的普通人。 ??系列專欄:陳童學(xué)的日記 ??其他專欄:C++STL,感興趣的小伙伴可以看看。 ??希望各位→點(diǎn)贊?? + 收藏?? + 留言?? ? ??萬(wàn)物從心起,心動(dòng)則萬(wàn)物動(dòng)??

    2024年02月10日
    瀏覽(26)
  • 【深入淺出Spring原理及實(shí)戰(zhàn)】「夯實(shí)基礎(chǔ)系列」360全方位滲透和探究Spring的核心注解開(kāi)發(fā)和實(shí)現(xiàn)指南(Spring5的常見(jiàn)的注解)

    【深入淺出Spring原理及實(shí)戰(zhàn)】「夯實(shí)基礎(chǔ)系列」360全方位滲透和探究Spring的核心注解開(kāi)發(fā)和實(shí)現(xiàn)指南(Spring5的常見(jiàn)的注解)

    Spring 5.x中常見(jiàn)的注解包括@Controller、@Service、@Repository。當(dāng)我們研究Spring Boot源碼時(shí),會(huì)發(fā)現(xiàn)實(shí)際上提供了更多的注解。了解這些注解對(duì)于我們非常重要,盡管目前可能還用不到它們。 注解 功能 @Bean 器中注冊(cè)組件,代替來(lái)的標(biāo)簽 @Configuration 聲明這是一個(gè)配置類,替換以前的配

    2024年02月16日
    瀏覽(21)
  • Java中的單點(diǎn)登錄原理與實(shí)現(xiàn)方案探究:深入了解安全與便捷的用戶認(rèn)證解決方案

    Java中的單點(diǎn)登錄原理與實(shí)現(xiàn)方案探究:深入了解安全與便捷的用戶認(rèn)證解決方案

    目錄 1、什么是單點(diǎn)登錄 2、單點(diǎn)登錄的優(yōu)勢(shì)和應(yīng)用場(chǎng)景 3、單點(diǎn)登錄的原理和實(shí)現(xiàn)方式 3.1 傳統(tǒng)的Cookie和Session實(shí)現(xiàn)方式 3.2 基于Token的實(shí)現(xiàn)方式 3.3 基于OAuth2的實(shí)現(xiàn)方式 4、單點(diǎn)登錄的技術(shù)要點(diǎn)和關(guān)鍵問(wèn)題 4.1 安全性考慮 4.2 用戶體驗(yàn)優(yōu)化 4.3 高可用性設(shè)計(jì) 5、Java中的單點(diǎn)登錄實(shí)

    2024年01月23日
    瀏覽(18)
  • Kafka原理、部署與實(shí)踐——深入理解Kafka的工作原理和使用場(chǎng)景,全面介紹Kafka在實(shí)際生產(chǎn)環(huán)境中的部署

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站的流量呈爆炸性增長(zhǎng),傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)處理無(wú)法快速響應(yīng)。而NoSQL技術(shù)如HBase、MongoDB等被廣泛應(yīng)用于分布式數(shù)據(jù)存儲(chǔ)與處理,卻沒(méi)有提供像關(guān)系型數(shù)據(jù)庫(kù)一樣的ACID特性、JOIN操作及完整性約束。因此,很

    2024年02月09日
    瀏覽(19)
  • Java開(kāi)發(fā) - 深入理解Redis Cluster的工作原理

    Java開(kāi)發(fā) - 深入理解Redis Cluster的工作原理

    前面我們講過(guò)Redis Cluster的搭建方式,也是本著應(yīng)用優(yōu)先的原則,所以對(duì)其基礎(chǔ)概念和原理幾乎沒(méi)有涉及,但當(dāng)學(xué)會(huì)了Redis集群的搭建方式之后,對(duì)于其原來(lái)我們還是要知道一些的,所以這篇博客,我們將一起來(lái)學(xué)習(xí)Redis Cluster的一些相關(guān)知識(shí)。 在開(kāi)始Redis Cluster的講解之前,還

    2024年02月15日
    瀏覽(27)
  • “深入解析JVM:揭秘Java虛擬機(jī)的工作原理“

    標(biāo)題:深入解析JVM:揭秘Java虛擬機(jī)的工作原理 摘要:本文將深入解析Java虛擬機(jī)(JVM)的工作原理,探討其內(nèi)部結(jié)構(gòu)和運(yùn)行機(jī)制。我們將介紹JVM的組成部分、類加載過(guò)程、內(nèi)存管理、垃圾回收、即時(shí)編譯等關(guān)鍵概念,并通過(guò)示例代碼展示JVM的運(yùn)行過(guò)程。 JVM由三個(gè)主要組件組成

    2024年02月12日
    瀏覽(27)
  • “深入解析JVM:探索Java虛擬機(jī)的工作原理“

    標(biāo)題:深入解析JVM:探索Java虛擬機(jī)的工作原理 摘要:本文將深入解析Java虛擬機(jī)(JVM)的工作原理,從字節(jié)碼到執(zhí)行過(guò)程,從內(nèi)存模型到垃圾回收機(jī)制,逐步剖析JVM的核心組成部分和工作原理。通過(guò)本文的閱讀,讀者將對(duì)JVM有更深入的理解,并且能夠運(yùn)用這些知識(shí)來(lái)進(jìn)行Jav

    2024年02月13日
    瀏覽(20)
  • “深入理解JVM:Java虛擬機(jī)的工作原理揭秘“

    標(biāo)題:深入理解JVM:Java虛擬機(jī)的工作原理揭秘 摘要:本文將深入解析Java虛擬機(jī)(JVM)的工作原理,包括JVM的組成部分、類加載過(guò)程、運(yùn)行時(shí)數(shù)據(jù)區(qū)域、垃圾回收機(jī)制等。通過(guò)詳細(xì)的代碼示例,幫助讀者更好地理解JVM的內(nèi)部機(jī)制。 正文: 一、JVM的組成部分 Java虛擬機(jī)是Java語(yǔ)

    2024年02月13日
    瀏覽(24)
  • “深入理解Java虛擬機(jī)(JVM):背后的工作原理解析“

    標(biāo)題:深入理解Java虛擬機(jī)(JVM):背后的工作原理解析 摘要:本文將深入探討Java虛擬機(jī)(JVM)的工作原理,包括內(nèi)存管理、垃圾回收、即時(shí)編譯器等關(guān)鍵概念,以及如何優(yōu)化代碼以提高性能。通過(guò)示例代碼和詳細(xì)解釋,讀者將對(duì)JVM的底層原理有更深入的理解。 正文: 一、

    2024年02月12日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包