日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring mvc教程_Spring MVC教程

發(fā)布時(shí)間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring mvc教程_Spring MVC教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

spring mvc教程

1.簡介

作為企業(yè)Java開發(fā)人員,這項(xiàng)工作的主要重點(diǎn)之一是開發(fā)Web應(yīng)用程序。 對于Web應(yīng)用程序,后果還包括許多挑戰(zhàn)。 具體來說,其中一些是狀態(tài)管理,工作流和驗(yàn)證。 HTTP協(xié)議的無狀態(tài)性質(zhì)只會(huì)使事情變得更加復(fù)雜。 Spring的Web框架旨在幫助我們應(yīng)對這些挑戰(zhàn)。 基于模型-視圖-控制器(MVC)模式,即使在解決了HTTP協(xié)議和其他協(xié)議所帶來的所有挑戰(zhàn)之后,Spring MVC仍可以幫助我們構(gòu)建非常松散耦合和靈活的應(yīng)用程序。

在本課程中,我們將從理解每個(gè)Spring MVC組件的目的以及它們在Spring應(yīng)用程序的整個(gè)生命周期中處理請求和響應(yīng)對象中所扮演的角色開始。 之后,我們將開始配置一個(gè)簡單的Spring MVC應(yīng)用程序,在每個(gè)步驟中添加一個(gè)組件,編寫一個(gè)非常簡單的Thymeleaf模板,最后為我們編寫的Controller包含一個(gè)JUnit測試用例。 讓我們開始吧!

2.請求的生命

請求對象的壽命

網(wǎng)上用戶單擊HTML頁面上的鏈接后,請求對象的工作就會(huì)開始。 當(dāng)請求對象離開瀏覽器并進(jìn)入Spring MVC應(yīng)用程序,該應(yīng)用程序最終轉(zhuǎn)換為響應(yīng)對象時(shí),它會(huì)停止數(shù)次以向MVC組件提供一些信息并加載一些新信息。 上圖顯示了將請求對象轉(zhuǎn)換為響應(yīng)對象之前的所有停止操作。

讓我們了解一個(gè)請求對象在Spring MVC應(yīng)用程序中需要執(zhí)行的所有步驟:

  • 該請求首先到達(dá)DispatcherServlet ,后者充當(dāng)前端控制器,并將責(zé)任委托給框架的其他組件進(jìn)行處理。 為了標(biāo)識應(yīng)該將請求發(fā)送到的控制器, DispatcherServlet咨詢處理程序映射,該處理程序從請求對象中提取URL并找到適合該請求的控制器。
  • 請求到達(dá)控制器后,它將丟棄其擁有的所有信息,并耐心等待控制器執(zhí)行其處理。 通常,Controller提供一個(gè)模型和一個(gè)視圖名稱,該名稱和視圖名稱提供響應(yīng)HTML內(nèi)容。
  • 為了保持Controller和視圖之間的分離,Controller僅將邏輯視圖名稱作為String返回給DispatcherServlet 。 然后DispatcherServlet咨詢View Resolver,以將此String邏輯視圖名稱映射到特定的視圖實(shí)現(xiàn),該實(shí)現(xiàn)可以是JSP頁面或HTML頁面。
  • 在DispatcherServlet知道要渲染哪個(gè)視圖之后,它最終將模型數(shù)據(jù)發(fā)送到實(shí)際視圖,以便可以構(gòu)造響應(yīng)對象。 現(xiàn)在,請求對象的生命已經(jīng)結(jié)束。
  • 現(xiàn)在,該視圖已轉(zhuǎn)換為響應(yīng)對象,并發(fā)送回用戶,可以在瀏覽器中顯示。
  • 聽起來所有工作都是由請求對象完成的,而用戶僅看到響應(yīng)對象。 確實(shí)如此!

    3.項(xiàng)目設(shè)置

    我們將使用許多Maven原型之一為我們的示例創(chuàng)建一個(gè)示例項(xiàng)目。 要?jiǎng)?chuàng)建項(xiàng)目,請?jiān)趯⒂米鞴ぷ骺臻g的目錄中執(zhí)行以下命令:

    建立專案

    mvn archetype:generate -DgroupId=com.javacodegeeks.example -DartifactId=JCG-SpringMVC-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    如果您是第一次運(yùn)行maven,則完成生成命令將需要幾秒鐘,因?yàn)閙aven必須下載所有必需的插件和工件才能完成生成任務(wù)。

    用Maven創(chuàng)建項(xiàng)目

    創(chuàng)建項(xiàng)目后,請隨時(shí)在您喜歡的IDE中打開它。 下一步是向項(xiàng)目添加適當(dāng)?shù)腗aven依賴關(guān)系。

    這是帶有適當(dāng)依賴項(xiàng)的pom.xml文件:

    pom.xml

    <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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.javacodegeeks.example</groupId><artifactId>JCG-SpringMVC-example</artifactId><version>1.0-SNAPSHOT</version><name>JCG-SpringMVC-example</name><packaging>war</packaging><description>Spring MVC Hello World Example</description><dependencies><!--Spring MVC Dependencies--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.9.RELEASE</version></dependency><!-- Servlet --><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.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.0.0</version><configuration><warSourceDirectory>WebContent</warSourceDirectory></configuration></plugin></plugins><!-- added to remove Version from WAR file --><finalName>${project.artifactId}</finalName></build> </project>

    最后,要了解添加此依賴項(xiàng)時(shí)添加到項(xiàng)目中的所有JAR,我們可以運(yùn)行一個(gè)簡單的Maven命令,當(dāng)我們向項(xiàng)目添加一些依賴項(xiàng)時(shí),該命令使我們能夠查看項(xiàng)目的完整依賴關(guān)系樹。 這是我們可以使用的命令:

    依賴樹

    mvn dependency:tree

    當(dāng)我們運(yùn)行此命令時(shí),它將向我們顯示以下依賴關(guān)系樹:

    Spring MVC項(xiàng)目依賴樹

    4.配置DispatcherServlet

    正如我們在上一節(jié)中所述,一切都始于DispatcherServlet 。 因此,這將是我們要添加到項(xiàng)目中的第一個(gè)組件。 請注意,我們將在Java類中配置DispatcherServlet ,而不是web.xml文件:

    AppInitializer.java

    package com.javacodegeeks.example.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class AppInitializer extendsAbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[] { RootConfig.class };}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[] { WebConfig.class };}@Overrideprotected String[] getServletMappings() {return new String[] { "/" };} }

    這里首先要注意的是,任何擴(kuò)展AbstractAnnotationConfigDispatcherServletInitializer類都將用于配置DispatcherServlet和應(yīng)用程序上下文。

    方法getServletMappings()標(biāo)識將DispatcherServlet映射到的路徑。 在這里,正如我們提供的/ ,它將是應(yīng)用程序的默認(rèn)servlet。 當(dāng)DispatcherServlet啟動(dòng)時(shí),它將創(chuàng)建Spring應(yīng)用程序上下文,并開始使用由getServletConfigClasses()方法定義的WebConfig類中聲明的bean加載該上下文。 最后,由getRootConfigClasses()方法返回的類用于加載ContextLoaderlistener創(chuàng)建的上下文。

    讓我們現(xiàn)在定義WebConfig和RootConfig類,看看它們的功能是什么。

    5.啟用Web MVC

    啟用S??pring MVC組件的經(jīng)典方法之一是將XML文件與 元素。 但是在本課程中,我們將展示僅使用Java類提供所有配置的最新方法。 讓我們通過定義WebConfig類來啟用Spring MVC Components:

    WebConfig.java

    package com.javacodegeeks.example.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration @EnableWebMvc @ComponentScan("com.javacodegeeks.example") public class WebConfig extends WebMvcConfigurerAdapter {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/views/");viewResolver.setSuffix(".jsp");viewResolver.setExposeContextBeansAsAttributes(true);return viewResolver;}@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();} }

    在此配置類中發(fā)生了很多事情。 讓我們了解所有這些事情:

    • 我們做的第一件事是使用@ComponentScan注釋@ComponentScan 。 這告訴Spring掃描哪個(gè)軟件包以查找我們定義的Spring Bean和組件。 它將解析上述包中的所有子包。
    • 我們還在類上定義一個(gè)ViewResolver bean,并將其配置為在相對于應(yīng)用程序的類路徑的指定位置中查找JSP頁面。
    • 最后,該類擴(kuò)展了WebMvcConfigurerAdapter并覆蓋了configureDefaultServletHandling方法,并在configurer對象上調(diào)用enable() ,該對象告訴DispatcherServlet將對靜態(tài)資源的請求轉(zhuǎn)發(fā)給ViewResolver而不自己處理。

    6.定義根配置

    對于ContextLoaderlistener的應(yīng)用程序上下文bean,我們將不定義任何bean。 在RootConfig類中,我們甚至可以為非Web組件定義Bean。 讓我們看一下示例代碼:

    RootConfig.java

    package com.javacodegeeks.example.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration @ComponentScan(basePackages = {"com.javacodegeeks.example"},excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)}) public class RootConfig { }

    我們唯一要做的就是用@ComponentScan注釋該類。 這告訴Spring掃描哪個(gè)軟件包以查找項(xiàng)目中可能存在的非Web組件。

    7.編寫一個(gè)簡單的控制器

    當(dāng)我們定義一個(gè)允許最終用戶與我們創(chuàng)建的應(yīng)用程序進(jìn)行交互的組件時(shí),事情開始變得有趣起來。 控制器是以URL形式提供映射的組件,用戶可以與之交互以獲得一些響應(yīng)。 在此示例中,我們將創(chuàng)建一個(gè)GET請求映射,該映射僅返回視圖的邏輯視圖名稱,然后由我們創(chuàng)建的已配置視圖解析器將其解析為JSP。 讓我們看一下我們創(chuàng)建的樣本控制器:

    HomeController.java

    package com.javacodegeeks.example.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;@Controller public class HomeController {@RequestMapping(value = "/", method = RequestMethod.GET)public String home() {return "home";} }

    我們在此處定義了一個(gè)GET映射,它僅返回邏輯視圖名稱,即home 。 這將解析為路徑/WebContent/WEB-INF/views/home.jsp 。

    8.設(shè)計(jì)視圖

    對于JSP視圖,我們將設(shè)計(jì)一個(gè)非常簡單的JSP頁面,該頁面僅提供示例設(shè)計(jì)。 我們從應(yīng)用程序根目錄并在/WebContent/WEB-INF/views/home.jsp路徑上創(chuàng)建了該文件。 這是文件:

    home.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html><head><title>JavaCodeGeeks: Spring MVC</title></head><body><h1>Welcome Spring MVC</h1><p>Hello JavaCodeGeeks!</p></body> </html>

    要查看我們所做的事情,我們接下來將運(yùn)行我們的應(yīng)用程序。 請注意,這只是一個(gè)基本的JSP頁面,沒有其他內(nèi)容介紹ViewResolver如何將邏輯視圖名稱解析為具體視圖, DispatcherServlet將其作為響應(yīng)返回。

    9.運(yùn)行應(yīng)用程序

    是時(shí)候運(yùn)行我們的應(yīng)用程序了。 我們使用IntelliJ IDE運(yùn)行該項(xiàng)目。 要運(yùn)行該項(xiàng)目,首先將Tomcat配置為接受爆炸的WAR工件:

    帶有爆炸WAR的Tomcat配置

    最后,在運(yùn)行應(yīng)用程序時(shí),我們可以從創(chuàng)建的JSP視圖中看到輸出:

    運(yùn)行Spring MVC應(yīng)用程序

    10.帶有Spring Boot的Spring MVC

    Spring Boot是一個(gè)出色的平臺,它建立在Spring MVC框架之上,使事情變得更快,更容易。 通過使用與我們添加到項(xiàng)目中的依賴項(xiàng)相關(guān)的許多默認(rèn)設(shè)置和配置來創(chuàng)建這種輕松性。 Spring Boot提供的另一個(gè)優(yōu)勢是,它允許我們定義父依賴關(guān)系,通過該依賴關(guān)系可以在整個(gè)項(xiàng)目中維護(hù)版本兼容性。 讓我們詳細(xì)了解一下。

    10.1 Spring Boot入門

    Spring Boot提供了非常方便的啟動(dòng)程序依賴項(xiàng) ,它使我們能夠選擇功能并將與之相關(guān)的依賴項(xiàng)添加到我們的項(xiàng)目中。 一旦完成,Spring Boot本身將管理所有相關(guān)的依賴項(xiàng)并將它們以正確的版本號帶入我們的項(xiàng)目,并確保這些依賴項(xiàng)將彼此兼容。 父依賴項(xiàng)定義為:

    入門依賴

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version> </parent>

    當(dāng)您在此處提供version并在pom.xml文件的dependencies部分中使用相同的groupId ,將自動(dòng)導(dǎo)入版本。

    10.2盯著Spring Boot應(yīng)用程序

    每個(gè)Spring Boot應(yīng)用程序都以舊的main()方法的形式提供了一個(gè)入口點(diǎn)。 我們可以像正常的main方法一樣運(yùn)行此方法,該方法主要負(fù)責(zé)初始化Spring Bean和啟動(dòng)應(yīng)用程序。 Spring Boot主類的最常見形式如下所示:

    Spring Boot主類

    @SpringBootApplication public class JCGApplication {public static void main(String[] args) {SpringApplication.run(JCGApplication.class, args);} }

    使用@SpringBootApplication的單個(gè)注釋,我們啟用了以下注釋:

    • @Configuration :此注釋將該類標(biāo)記為Configuration類,并由Spring Container首先初始化
    • @EnableAutoConfiguration :此批注意味著每個(gè)標(biāo)有@Component批注的@Component都將作為Spring Bean加載。
    • @ComponentScan :最后,此批注將自動(dòng)啟用組件掃描。 默認(rèn)情況下,當(dāng)我們不提供任何包值時(shí),此批注將選擇此類所在的包,并從那里開始尋找Spring組件。

    在這里查看使用Spring Boot使其他事情變得多么容易。

    11.結(jié)論

    在本課程中,我們了解了當(dāng)請求對象離開Web瀏覽器時(shí)會(huì)發(fā)生什么以及如何將其轉(zhuǎn)換為響應(yīng)對象。 這篇文章還解釋了DispatcherServlet在處理來自客戶端的請求時(shí)所起的重要作用。 我們還制作了一個(gè)簡單的Spring MVC應(yīng)用程序,以查看視圖名稱也如何解析為具體的視圖實(shí)現(xiàn)。

    重要的是要理解,即使Spring Boot已將Spring演變?yōu)橐粋€(gè)更簡單的工作空間,它仍然依賴Spring MVC提供默認(rèn)設(shè)置和bean。

    12.下載源代碼

    這是簡單的Spring MVC應(yīng)用程序的示例。

    下載
    您可以在此處下載此示例的完整源代碼: JCG-SpringMVC-example

    翻譯自: https://www.javacodegeeks.com/2018/04/spring-mvc-tutorial-2.html

    spring mvc教程

    總結(jié)

    以上是生活随笔為你收集整理的spring mvc教程_Spring MVC教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。