最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你入門SpringMVC的配置與使用

 更新時(shí)間:2022年11月11日 09:04:23   作者:世界盡頭與你  
Spring MVC是Spring Framework的一部分,是基于Java實(shí)現(xiàn)MVC的輕量級(jí)Web框架。本文將通過一些簡單示例帶大家掌握SpringMVC的配置與使用,感興趣的可以了解一下

1.概述

Spring MVC是Spring Framework的一部分,是基于Java實(shí)現(xiàn)MVC的輕量級(jí)Web框架。

Spring MVC的特點(diǎn):

  • 輕量級(jí),簡單易學(xué)
  • 高效 , 基于請(qǐng)求響應(yīng)的MVC框架
  • 與Spring兼容性好,無縫結(jié)合
  • 約定優(yōu)于配置
  • 功能強(qiáng)大:RESTful、數(shù)據(jù)驗(yàn)證、格式化、本地化、主題等
  • 簡潔靈活

Spring的web框架圍繞DispatcherServlet [ 調(diào)度Servlet ] 設(shè)計(jì)。

DispatcherServlet的作用是將請(qǐng)求分發(fā)到不同的處理器。

2.中心控制器

Spring MVC框架像許多其他MVC框架一樣, 以請(qǐng)求為驅(qū)動(dòng) , 圍繞一個(gè)中心Servlet分派請(qǐng)求及提供其他功能,DispatcherServlet是一個(gè)實(shí)際的Servlet (它繼承自HttpServlet 基類)

SpringMVC的原理如下圖所示:

當(dāng)發(fā)起請(qǐng)求時(shí)被前置的控制器攔截到請(qǐng)求,根據(jù)請(qǐng)求參數(shù)生成代理請(qǐng)求,找到請(qǐng)求對(duì)應(yīng)的實(shí)際控制器,控制器處理請(qǐng)求,創(chuàng)建數(shù)據(jù)模型,訪問數(shù)據(jù)庫,將模型響應(yīng)給中心控制器,控制器使用模型與視圖渲染視圖結(jié)果,將結(jié)果返回給中心控制器,再將結(jié)果返回給請(qǐng)求者。

DispatcherServlet表示前置控制器,是整個(gè)SpringMVC的控制中心。用戶發(fā)出請(qǐng)求,DispatcherServlet接收請(qǐng)求并攔截請(qǐng)求。

我們假設(shè)請(qǐng)求的url為 : http://localhost:8080/SpringMVC/hello

SpringMVC部署在服務(wù)器上的web站點(diǎn),hello表示控制器

通過分析,如上url表示為:請(qǐng)求位于服務(wù)器localhost:8080上的SpringMVC站點(diǎn)的hello控制器。

  • HandlerMapping為處理器映射。DispatcherServlet調(diào)用HandlerMapping,HandlerMapping根據(jù)請(qǐng)求url查找Handler。
  • HandlerExecution表示具體的Handler,其主要作用是根據(jù)url查找控制器,如上url被查找控制器為:hello。
  • HandlerExecution將解析后的信息傳遞給DispatcherServlet,如解析控制器映射等。
  • HandlerAdapter表示處理器適配器,其按照特定的規(guī)則去執(zhí)行Handler。
  • Handler讓具體的Controller執(zhí)行。
  • Controller將具體的執(zhí)行信息返回給HandlerAdapter,如ModelAndView。
  • HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherServlet。
  • DispatcherServlet調(diào)用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名。
  • 視圖解析器將解析的邏輯視圖名傳給DispatcherServlet。
  • DispatcherServlet根據(jù)視圖解析器解析的視圖結(jié)果,調(diào)用具體的視圖。
  • 最終視圖呈現(xiàn)給用戶。

3.搭建SpringMVC

新建一個(gè)Moudle,添加web支持

更新pom依賴

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.23</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.31</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.11</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.23</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.9.1</version>
            <scope>runtime</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

</project>

配置web.xml

注冊(cè)DispatcherServlet

<?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">
    <!-- 注冊(cè)DispatcherServlet -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通過初始化參數(shù)指定SpringMVC配置文件的位置,進(jìn)行關(guān)聯(lián) -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 啟動(dòng)順序,數(shù)字越小,啟動(dòng)越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 設(shè)定所有請(qǐng)求都會(huì)被SpringMVC攔截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

配置springmvc-servlet.xml

<?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
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 自動(dòng)掃描包,讓指定包下的注解生效,由IOC容器統(tǒng)一管理 -->
    <context:component-scan base-package="top.imustctf.controller"/>
    <!-- 讓Spring MVC不處理靜態(tài)資源 -->
    <mvc:default-servlet-handler />
    <!--
    支持mvc注解驅(qū)動(dòng)
        在spring中一般采用@RequestMapping注解來完成映射關(guān)系
        要想使@RequestMapping注解生效
        必須向上下文中注冊(cè)DefaultAnnotationHandlerMapping
        和一個(gè)AnnotationMethodHandlerAdapter實(shí)例
        這兩個(gè)實(shí)例分別在類級(jí)別和方法級(jí)別處理。
        而annotation-driven配置幫助我們自動(dòng)完成上述兩個(gè)實(shí)例的注入。
     -->
    <mvc:annotation-driven />
    <!-- 視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 前綴 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后綴 -->
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

在resource目錄下添加springmvc-servlet.xml配置文件,配置的形式與Spring容器配置基本類似

創(chuàng)建Controller

@Controller
@RequestMapping("/HelloController")
public class HelloController {
    // 真實(shí)訪問地址 : 項(xiàng)目名/HelloController/hello
    @RequestMapping("/hello")
    public String sayHello(Model model){
        // 向模型中添加屬性msg與值,可以在JSP頁面中取出并渲染
        model.addAttribute("msg","hello,SpringMVC");
        // web-inf/jsp/hello.jsp
        // 因?yàn)樵赟pringMVC配置文件中添加了前綴和后綴
        return "hello";
    }
}

創(chuàng)建視圖層

WEB-INF/jsp目錄中創(chuàng)建hello.jsp , 視圖可以直接取出并展示從Controller帶回的信息;

可以通過EL表示取出Model中存放的值,或者對(duì)象;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC</title>
</head>
<body>
    ${msg}
</body>
</html>

啟動(dòng)Tomcat,測試

訪問路徑:

http://localhost:8080/HelloController/hello

環(huán)境配置成功了

以上就是一文帶你入門SpringMVC的配置與使用的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC入門的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 說說字符串轉(zhuǎn) OffSetDateTime 你真的會(huì)用嗎

    說說字符串轉(zhuǎn) OffSetDateTime 你真的會(huì)用嗎

    這篇文章主要介紹了字符串轉(zhuǎn) OffSetDateTime 你真的會(huì)用嗎?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • springboot jackson配置教程

    springboot jackson配置教程

    這篇文章主要介紹了springboot jackson配置教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Http協(xié)議以及post與get區(qū)別

    詳解Http協(xié)議以及post與get區(qū)別

    這篇文章主要介紹了詳解Http協(xié)議以及post與get區(qū)別,通過分別說明Http協(xié)議以及get與post各自的概念,再到兩者作比較有著詳細(xì)的說明,希望對(duì)你有所幫助
    2021-06-06
  • Java操作Redis2種方法代碼詳解

    Java操作Redis2種方法代碼詳解

    這篇文章主要介紹了Java操作Redis2種方法代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • JRebel2023.3 插件使用及安裝步驟詳解

    JRebel2023.3 插件使用及安裝步驟詳解

    JRebel是一款JVM插件,它使得Java代碼修改后不用重啟系統(tǒng),立即生效,IDEA上原生是不支持熱部署的,一般更新了 Java 文件后要手動(dòng)重啟 Tomcat 服務(wù)器,才能生效,浪費(fèi)時(shí)間浪費(fèi)生命,目前對(duì)于idea熱部署最好的解決方案就是安裝JRebel插件,本文分步驟介紹的非常詳細(xì),一起看看吧
    2023-08-08
  • springboot利用AOP完成日志統(tǒng)計(jì)的詳細(xì)步驟

    springboot利用AOP完成日志統(tǒng)計(jì)的詳細(xì)步驟

    項(xiàng)目用到了過濾器,可能有的人會(huì)不理解,之所以用過濾器是因?yàn)橄胍谌罩居涗沺ost請(qǐng)求的json數(shù)據(jù)。本文重點(diǎn)給大家介紹springboot利用AOP完成日志統(tǒng)計(jì)的詳細(xì)步驟,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Java線程池大小的設(shè)置方法實(shí)例

    Java線程池大小的設(shè)置方法實(shí)例

    線程池的設(shè)置是有方法的,不是憑借簡單的估算來決定的,這篇文章主要給大家介紹了關(guān)于Java線程池大小的設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • IntelliJ Plugin 開發(fā)之添加第三方j(luò)ar的示例代碼

    IntelliJ Plugin 開發(fā)之添加第三方j(luò)ar的示例代碼

    這篇文章主要介紹了IntelliJ Plugin 開發(fā)之添加第三方j(luò)ar的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring Boot開發(fā)Web應(yīng)用詳解

    Spring Boot開發(fā)Web應(yīng)用詳解

    這篇文章主要介紹了Spring Boot開發(fā)Web應(yīng)用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • 用Rational Rose逆向工程(java)生成類圖(教程和錯(cuò)誤解決)

    用Rational Rose逆向工程(java)生成類圖(教程和錯(cuò)誤解決)

    Rational Rose有個(gè)很方便的功能,將項(xiàng)目中的JAVA代碼自動(dòng)轉(zhuǎn)換成UML類圖
    2013-02-02

最新評(píng)論

方城县| 三原县| 鞍山市| 遵义县| 喀什市| 湄潭县| 绍兴县| 溧水县| 皋兰县| 桓仁| 阿坝| 泸州市| 宝丰县| 黄龙县| 荥阳市| 阿拉尔市| 邵阳市| 花莲市| 五华县| 昌邑市| 中山市| 永年县| 平江县| 柳林县| 舒城县| 清苑县| 修水县| 公安县| 崇信县| 保山市| 邢台县| 长阳| 古丈县| 巴塘县| 吉隆县| 西和县| 蓝田县| 建平县| 宁陵县| 孝义市| 田东县|