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

Spring MVC溫故而知新系列教程之從零開始

 更新時間:2018年05月19日 11:43:21   作者:仍是少年  
Spring MVC 框架在 Java 的 Web 項目中應該是無人不知的吧,你不會搭建一個 Spring 框架?作為身為一個剛剛學習Java的我都會,如果你不會的話,那可真令人憂傷。下面這篇文章主要給大家介紹了關于Spring MVC從零開始的相關資料,需要的朋友可以參考下

Spring MVC簡介

Spring MVC是一款基于MVC架構模式的輕量級Web框架,目的是將Web開發(fā)模塊化,對整體架構進行解耦。

Spring MVC有一下優(yōu)點:

作為Spring框架的一部分,擁有Spring的優(yōu)點(IOC,AOP等)

支持靈活的URL到頁面控制器的映射

提供靈活的數(shù)據(jù)驗證、格式化、數(shù)據(jù)綁定機制

支持RESTful風格

Spring MVC請求流程

Spring MVC框架的整體請求流程如下:

上圖中涉及到Spring MVC的幾個功能組件:

前端控制器(DispatcherServlet):接收用戶請求并返回請求結果。它的作用相當于一個轉發(fā)器或中央處理器,控制整個執(zhí)行流程,對各組件進行調(diào)度降低組件之間的耦合。

處理器映射器(HandlerMapping):根據(jù)用戶請求的URL,通過注解或者XML配置,查找相應的處理器Handler

處理器適配(HandlerAdapter):根據(jù)映射器查找出的Handler,完成調(diào)用處理器中的方法

處理器(Handler):請求處理的具體邏輯,返回數(shù)據(jù)和視圖信息

視圖解析器(View Resolver):解析具體視圖,通過ModelAndView對象中的View信息,將邏輯視圖名解析成真正的視圖View

請求流程具體步驟詳解:

1:用戶發(fā)起請求,請求會被前端控制器(DispatcherServlet)攔截

2:前端控制器(DispatcherServlet)請求處理器映射器(HandlerMapping)查找Handler

3:處理器映射器(HandlerMapping)根據(jù)配置找到相應Handler(可以更具注解或者XML配置),可能包含多個Interceptor攔截器,返回給前端控制器

4:前端控制器(DispatcherServlet)請求處理器適配器(HandlerAdapter)去執(zhí)行相應的Handler

5:適配器交由對應Handler處理器執(zhí)行

6: Handler處理器執(zhí)行完成后返回ModelAndView對象給處理器適配器

7:處理器適配器接受Handler處理器的返回結果,并將該結果返回給前端控制器(DispatcherServlet)

8:前端控制器(DispatcherServlet)接收處理器適配器返回的數(shù)據(jù)和視圖信息,請求視圖解析器,解析對應的視圖

9:視圖解析器根據(jù)View信息匹配的相應的視圖結果,反回給前端控制器

10:前端控制器接收具體視圖,進行視圖渲染,將Model數(shù)據(jù)填充到View視圖中,生成最終視圖

11:前端控制器向用戶返回結果

從零開始搭建demo

創(chuàng)建工程:

Eclipse下新建一個動態(tài)Web項目

工程默認目錄結構:

添加jar包依賴

WebContent > WEB-INF > lib 文件夾下導入相應的jar包,其中核心的jar包是spring-webmvc-5.0.0.RELEASE.jar,其他是幾個主要是spring用于管理上下文和beande 包、jstl標簽庫和一個用于打印日志的log包:

在web.xml中配置前端控制器

前端控制器相當于Spring MVC的專有servlet,用于攔截所有符合條件的請求,交由框架做后續(xù)處理

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
 id="WebApp_ID" 
 version="3.1">
 
 <!-- 配置前端控制器-DispatchServlet -->
 <servlet>
 <servlet-name>springMvcNext</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

 <!-- contextConfigLocation不是必須的, 如果不配置contextConfigLocation, springmvc的配置文件默認在:WEB-INF/servlet的name+"-servlet.xml" -->
 <init-param>
  <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
 </init-param>
 </servlet>
 
 <servlet-mapping>
 <servlet-name>springMvcNext</servlet-name>
 <url-pattern>/</url-pattern> <!--根據(jù)url-pattern設定的規(guī)則攔截用戶發(fā)來的請求 此處攔截所有請求,包括靜態(tài)資源 ->
 </servlet-mapping> 
</web-app>

其中<servlet-mapping>標簽中定義url匹配規(guī)則為符合*.action的形式,對應的servlet名為springMvcNext,而<servlet>配置的控制器為org.springframework.web.servlet.DispatchServlet,該控制器為當前SpringMVC項目的前端控制器,<init-param>標簽為當前控制器依賴的參數(shù),兩個參數(shù)分別代表上下文參數(shù)和參數(shù)加載路徑。

關于classpath:代表web項目編譯后編譯后的輸出路徑

配置spring MVC配置

在java源代碼更目錄下添加applicationContext.xml文件

具體內(nèi)容:

<?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:p="http://www.springframework.org/schema/p"
 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/security http://www.springframework.org/schema/security/spring-security.xsd
 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 <!-- 包掃描器 標簽將用于激活Spring MVC注釋掃描功能,允許使用@Controller和@RequestMapping等注釋。-->
 <context:component-scan base-package="com.sl.controller" />
 
 <!-- 注解驅動 -->
 <mvc:annotation-driven />
 
 <!-- 配置視圖解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
 <property name="prefix" value="/WEB-INF/view/" />
 <property name="suffix" value=".jsp" />
 </bean>
</beans>

添加控制器Controller與視圖View

Src目錄下添加包com.sl.controller,添加控制器代碼如下:

package com.sl.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloWorldController {
 
 @RequestMapping("/index") //處理URL路徑中以/index開頭的所有請求: 包括 /index/* 和 /index.html
 public ModelAndView helloWorld() {

  String message = "Hello Spring MVC";
  return new ModelAndView("index", "message", message);
 }
}

在WEB-INF/view中添加視圖文件index.jsp

<html>
<head>
 <title>Spring MVC </title>
</head>
<body>
 ${message}
</body>
</html>

運行結果:

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • ThreadPoolExecutor線程池的使用方法

    ThreadPoolExecutor線程池的使用方法

    這篇文章主要為大家詳細介紹了ThreadPoolExecutor線程池的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • SpringBoot啟動yaml報錯的解決

    SpringBoot啟動yaml報錯的解決

    這篇文章主要介紹了SpringBoot啟動yaml報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • DecimalFormat數(shù)字格式化用法詳解

    DecimalFormat數(shù)字格式化用法詳解

    這篇文章主要為大家詳細介紹了DecimalFormat數(shù)字格式化用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Spring中BeanFactoryPostProcessors是如何執(zhí)行的

    Spring中BeanFactoryPostProcessors是如何執(zhí)行的

    BeanFactoryPostProcessor是Spring容器提供的一個擴展機制,它允許開發(fā)者在Bean的實例化和初始化之前對BeanDefinition進行修改和處理,這篇文章主要介紹了你知道Spring中BeanFactoryPostProcessors是如何執(zhí)行的嗎,需要的朋友可以參考下
    2023-11-11
  • 詳解Java中用于國際化的locale類

    詳解Java中用于國際化的locale類

    Java中也有用于轉換和劃分地區(qū)的國際化類java.lang.Locale,國際化在程序中設置語言和時間等時非常有用,下面我們就來詳解Java中用于國際化的locale類
    2016-06-06
  • 深入理解Java強依賴和弱依賴

    深入理解Java強依賴和弱依賴

    本文主要介紹了深入理解Java強依賴和弱依賴,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • MyBatis使用resultMap如何解決列名和屬性名不一致

    MyBatis使用resultMap如何解決列名和屬性名不一致

    這篇文章主要介紹了MyBatis使用resultMap如何解決列名和屬性名不一致的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring sentinel哨兵模式相關原理解析

    Spring sentinel哨兵模式相關原理解析

    這篇文章主要介紹了Spring sentinel哨兵模式相關原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Spring的Bean生命周期之BeanDefinition詳解

    Spring的Bean生命周期之BeanDefinition詳解

    這篇文章主要介紹了Spring的Bean生命周期之BeanDefinition詳解,在spring bean創(chuàng)建過程 依賴 BeanDefinition 中的信息處理bean的生產(chǎn),BeanDefinition 是 Spring Framework 中定義 Bean 的配置元信息接口,需要的朋友可以參考下
    2023-12-12
  • RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    這篇文章主要為大家介紹了RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

香河县| 儋州市| 尖扎县| 常州市| 广南县| 娄底市| 玉门市| 武邑县| 绥芬河市| 尉犁县| 泽库县| 万全县| 仁化县| 浪卡子县| 大丰市| 明溪县| 仁化县| 凌海市| 天镇县| 永仁县| 贺兰县| 上林县| 武鸣县| 本溪市| 镇原县| 漠河县| 塔城市| 巴东县| 金平| 保亭| 蚌埠市| 武强县| 阿拉善右旗| 娄底市| 胶州市| 邯郸市| 宜都市| 安丘市| 松江区| 苏尼特左旗| 三穗县|