国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

從SpringBoot到SpringMVC

xavier / 2082人閱讀

摘要:概述用久了,深受其約定大于配置的便利性毒害之后,我想回歸到時(shí)代,看看開(kāi)發(fā)模式中用戶(hù)是如何參與的。備注當(dāng)然本文所使用的全是非注解的配置方法,即需要在中進(jìn)行配置并且需要遵循各種實(shí)現(xiàn)原則。而更加通用主流的基于注解的配置方法將在后續(xù)文章中詳述。

概述

用久了SpringBoot,深受其約定大于配置的便利性 “毒害” 之后,我想回歸到SpringMVC時(shí)代,看看SpringMVC開(kāi)發(fā)模式中用戶(hù)是如何參與的。本文就來(lái)體驗(yàn)一下SpringMVC時(shí)代開(kāi)發(fā)的流程。

注: 本文首發(fā)于 My 公眾號(hào) CodeSheep ,可 長(zhǎng)按掃描 下面的 小心心 來(lái)訂閱 ↓ ↓ ↓

SpringMVC架構(gòu)模式

一個(gè)典型的SpringMVC請(qǐng)求流程如圖所示,詳細(xì)分為12個(gè)步驟:

用戶(hù)發(fā)起請(qǐng)求,由前端控制器DispatcherServlet處理

前端控制器通過(guò)處理器映射器查找hander,可以根據(jù)XML或者注解去找

處理器映射器返回執(zhí)行鏈

前端控制器請(qǐng)求處理器適配器來(lái)執(zhí)行hander

處理器適配器來(lái)執(zhí)行handler

處理業(yè)務(wù)完成后,會(huì)給處理器適配器返回ModeAndView對(duì)象,其中有視圖名稱(chēng),模型數(shù)據(jù)

處理器適配器將視圖名稱(chēng)和模型數(shù)據(jù)返回到前端控制器

前端控制器通過(guò)視圖解析器來(lái)對(duì)視圖進(jìn)行解析

視圖解析器返回真正的視圖給前端控制器

前端控制器通過(guò)返回的視圖和數(shù)據(jù)進(jìn)行渲染

返回渲染完成的視圖

將最終的視圖返回給用戶(hù),產(chǎn)生響應(yīng)

整個(gè)過(guò)程清晰明了,下面我們將結(jié)合實(shí)際實(shí)驗(yàn)來(lái)理解這整個(gè)過(guò)程。
SpringMVC項(xiàng)目搭建

實(shí)驗(yàn)環(huán)境如下:

IntelliJ IDEA 2018.1 (Ultimate Edition)

SpringMVC 4.3.9.RELEASE

Maven 3.3.9

這里我是用IDEA來(lái)搭建的基于Maven的SpringMVC項(xiàng)目,搭建過(guò)程不再贅述,各種點(diǎn)擊并且下一步,最終創(chuàng)建好的項(xiàng)目架構(gòu)如下:

添加前端控制器配置

使用了SpringMVC,則所有的請(qǐng)求都應(yīng)該交由SpingMVC來(lái)管理,即要將所有符合條件的請(qǐng)求攔截到SpringMVC的專(zhuān)有Servlet上。

為此我們需要在 web.xml 中添加SpringMVC的前端控制器DispatcherServlet:

    
    
        mvc-dispatcher
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:mvc-dispatcher.xml
        
    

    
        mvc-dispatcher
        *.action
    

該配置說(shuō)明所有符合.action的url,都交由mvc-dispatcher這個(gè)Servlet來(lái)進(jìn)行處理

編寫(xiě)SpringMVC核心XML配置文件

從上一步的配置可以看到,我們定義的mvc-dispatcher Servlet依賴(lài)于配置文件 mvc-dispatcher.xml,在本步驟中我們需要在其中添加三個(gè)方面的配置

0x01. 添加處理器映射器

SpringMVC的處理器映射器有多種,這里的使用的BeanNameUrlHandlerMapping其映射規(guī)則是將bean的name作為url進(jìn)行處理

0x02. 添加處理器適配器

SpringMVC的處理器適配器也有多種,這里的使用的SimpleControllerHandlerAdapter是Controller實(shí)現(xiàn)類(lèi)的適配器類(lèi),其本質(zhì)是執(zhí)行Controller中的handleRequest方法。

0x03. 添加試圖解析器

這里配置了InternalResourceViewResolver視圖解析器后,其會(huì)根據(jù)controller方法執(zhí)行之后返回的ModelAndView中的視圖的具體位置,來(lái)加載對(duì)應(yīng)的界面并綁定數(shù)據(jù)

編寫(xiě)控制器

這里模擬的是一個(gè)打印學(xué)生名單的Service,我們編寫(xiě)的控制器需要將查詢(xún)到的學(xué)生名單數(shù)據(jù)通過(guò)ModelAndView渲染到指定的JSP頁(yè)面中

public class TestController implements Controller {

    private StudentService studentService = new StudentService();

    @Override
    public ModelAndView handleRequest( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        List studentList = studentService.queryStudents();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("studentList",studentList);
        modelAndView.setViewName("/WEB-INF/views/studentList.jsp");
        return modelAndView;
    }
}

class StudentService {
    public List queryStudents() {
        List studentList = new ArrayList();

        Student hansonwang = new Student();
        hansonwang.setName("hansonwang99");
        hansonwang.setID("123456");

        Student codesheep = new Student();
        codesheep.setName("codesheep");
        codesheep.setID("654321");

        studentList.add(hansonwang);
        studentList.add(codesheep);

        return studentList;
    }
}
編寫(xiě)視圖文件

這里的視圖文件是一個(gè)jsp文件,路徑為:/WEB-INF/views/studentList.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>



    學(xué)生名單


    

學(xué)生列表

姓名 學(xué)號(hào)
${student.name} ${student.ID}

結(jié)合本步驟和上一步驟,視圖和控制器都已編寫(xiě)完成,由于我們之前配置的處理器映射器為:BeanNameUrlHandlerMapping,因此接下來(lái)我們還需要在mvc-dispatcher.xml文件中配置一個(gè)可被url映射的controller的bean,供處理器映射器BeanNameUrlHandlerMapping查找:

實(shí)驗(yàn)測(cè)試

啟動(dòng)Tomcat服務(wù)器,然后瀏覽器輸入:

http://localhost:8080/test.action

數(shù)據(jù)渲染OK。

備注:當(dāng)然本文所使用的全是非注解的配置方法,即需要在XML中進(jìn)行配置并且需要遵循各種實(shí)現(xiàn)原則。而更加通用、主流的基于注解的配置方法將在后續(xù)文章中詳述。

呼,長(zhǎng)舒一口氣,這么個(gè)小Demo用SpringMVC完成的話,各種XML配置了半天,真麻煩啊,算了,還是回SpringBoot好了!

后記

作者更多的原創(chuàng)文章在此,歡迎觀賞

My Personal Blog

作者更多的SpringBt實(shí)踐文章在此:

Spring Boot應(yīng)用監(jiān)控實(shí)戰(zhàn)

SpringBoot應(yīng)用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的實(shí)踐

初探Kotlin+SpringBoot聯(lián)合編程

Spring Boot日志框架實(shí)踐

SpringBoot優(yōu)雅編碼之:Lombok加持

如果有興趣,也可以抽點(diǎn)時(shí)間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:

利用K8S技術(shù)棧打造個(gè)人私有云 連載文章

從一份配置清單詳解Nginx服務(wù)器配置

Docker容器可視化監(jiān)控中心搭建

利用ELK搭建Docker容器化應(yīng)用日志中心

RPC框架實(shí)踐之:Apache Thrift

RPC框架實(shí)踐之:Google gRPC

微服務(wù)調(diào)用鏈追蹤中心搭建

Docker容器跨主機(jī)通信

Docker Swarm集群初探

高效編寫(xiě)Dockerfile的幾條準(zhǔn)則

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69722.html

相關(guān)文章

  • springboot學(xué)習(xí)(二)——springmvc配置使用

    摘要:中添加攔截器配置如下攔截所有請(qǐng)求,也就是,只攔截開(kāi)頭的請(qǐng)求。在中并沒(méi)有提供配置文件的方式來(lái)配置攔截器,因此需要使用的代碼式配置,配置如下這個(gè)屬性通常并不需要手動(dòng)配置,高版本的會(huì)自動(dòng)檢測(cè)第四點(diǎn)講下靜態(tài)資源映射。 以下內(nèi)容,如有問(wèn)題,煩請(qǐng)指出,謝謝 上一篇講解了springboot的helloworld部分,這一篇開(kāi)始講解如何使用springboot進(jìn)行實(shí)際的應(yīng)用開(kāi)發(fā),基本上尋著sprin...

    hiyayiji 評(píng)論0 收藏0
  • “過(guò)時(shí)”的SpringMVC我們底在用什么?深入分析DispatchServlet源碼

    摘要:?jiǎn)栴}來(lái)了,我們到底還在用嗎答案是,不全用。后者是初始化的配置,主要是的配置。啟動(dòng)類(lèi)測(cè)試啟動(dòng)項(xiàng)目后,在瀏覽器里面輸入。通過(guò)查詢(xún)已裝載的,并且支持該而獲取的。按照前面對(duì)的描述,對(duì)于而言,這個(gè)必定是。的核心在的方法中。 之前已經(jīng)分析過(guò)了Spring的IOC(《零基礎(chǔ)帶你看Spring源碼——IOC控制反轉(zhuǎn)》)與AOP(《從源碼入手,一文帶你讀懂Spring AOP面向切面編程》)的源碼,本次...

    array_huang 評(píng)論0 收藏0
  • SpringBoot 中 @SpringBootApplication注解背后的三體結(jié)構(gòu)探秘

    摘要:概述約定大于配置的功力讓我們?nèi)玢宕猴L(fēng),在我之前寫(xiě)的文章從到也對(duì)比過(guò)和這兩個(gè)框架,不過(guò)最終以超高的代碼信噪比和易上手性讓我們映像頗深。至于,我想在非時(shí)代大家應(yīng)該不陌生吧,作用是配置容器,也即形式的容器的配置類(lèi)所使用。 showImg(https://segmentfault.com/img/remote/1460000015822144); 概 述 SpringBoot 約定大于配置...

    Tecode 評(píng)論0 收藏0
  • SpringBoot自動(dòng)配置原理

    摘要:開(kāi)啟自動(dòng)配置功能后文詳解這個(gè)注解,學(xué)過(guò)的同學(xué)應(yīng)該對(duì)它不會(huì)陌生,就是掃描注解,默認(rèn)是掃描當(dāng)前類(lèi)下的。簡(jiǎn)單來(lái)說(shuō),這個(gè)注解可以幫助我們自動(dòng)載入應(yīng)用程序所需要的所有默認(rèn)配置。簡(jiǎn)單理解這二者掃描的對(duì)象是不一樣的。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧前面Spring的文章(以學(xué)習(xí)...

    Rainie 評(píng)論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會(huì)有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xavier

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<