真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMVC簡(jiǎn)介與配置-創(chuàng)新互聯(lián)

1.Spring MVC簡(jiǎn)介

創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10年,專業(yè)且經(jīng)驗(yàn)豐富。10年網(wǎng)站優(yōu)化營(yíng)銷經(jīng)驗(yàn),我們已為上1000家中小企業(yè)提供了做網(wǎng)站、成都網(wǎng)站建設(shè)解決方案,按需網(wǎng)站設(shè)計(jì),設(shè)計(jì)滿意,售后服務(wù)無(wú)憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!

Spring MVC框架是有一個(gè)MVC框架,通過(guò)實(shí)現(xiàn)Model-View-Controller模式來(lái)很好地將數(shù)據(jù)、業(yè)務(wù)與展現(xiàn)進(jìn)行分離。從這樣一個(gè)角度來(lái)說(shuō),Spring MVC和Struts、Struts2非常類似。Spring MVC的設(shè)計(jì)是圍繞DispatcherServlet展開(kāi)的,DispatcherServlet負(fù)責(zé)將請(qǐng)求派發(fā)到特定的handler。通過(guò)可配置的handler mappings、view resolution、locale以及theme resolution來(lái)處理請(qǐng)求并且轉(zhuǎn)到對(duì)應(yīng)的視圖。Spring MVC請(qǐng)求處理的整體流程如圖:

SpringMVC簡(jiǎn)介與配置

Spring3.x中定義一個(gè)控制器類,必須以@Controller注解標(biāo)記。當(dāng)控制器類接收到一個(gè)請(qǐng)求時(shí),它會(huì)在自己內(nèi)部尋找一個(gè)合適的處理方法來(lái)處理請(qǐng)求。使用@RequestMapping注解將方法映射到一些請(qǐng)求上,以便讓該方法處理那些請(qǐng)求。這種方法就像一般的類中的方法,方法名參數(shù)列表和返回值并不像Struts2之類的框架有很強(qiáng)的限制。方法參數(shù)列表具體以及返回值具體都有哪些,這里先不細(xì)說(shuō)。這篇博客的目的在于簡(jiǎn)單介紹如何快速上手使用Spring MVC框架。

控制器在選擇好適合處理請(qǐng)求的方法時(shí),傳入收到的請(qǐng)求(根據(jù)方法參數(shù)類型,可能以不同的類型傳入),并且調(diào)用該方法中的邏輯來(lái)進(jìn)行處理(也可以是調(diào)用Service來(lái)真正處理)。方法邏輯可能也會(huì)在參數(shù)中添加或者刪除數(shù)據(jù)。處理方法處理完之后,會(huì)委派給一個(gè)視圖,由該視圖來(lái)處理方法的返回值。處理程序的返回值并不代表視圖的具體實(shí)現(xiàn),可以只是String類型,代表視圖名,甚至是void(這時(shí)候Spring MVC可以根據(jù)方法名或者控制器名找默認(rèn)視圖)。也不需要擔(dān)心返回值只是視圖名稱的話,視圖拿不到要顯示的數(shù)據(jù)。因?yàn)榉椒▍?shù)對(duì)于視圖來(lái)說(shuō)也是可以拿到的。比如說(shuō),如果處理方法以Map為參數(shù),那么這個(gè)Map對(duì)于視圖也是可以拿到的。

返回的視圖名稱會(huì)返回給DispatcherServlet,它會(huì)根據(jù)一個(gè)視圖解析器將視圖名稱解析為一個(gè)具體的視圖實(shí)現(xiàn)。這里說(shuō)到的視圖解析器是一個(gè)實(shí)現(xiàn)了ViewResolver借口的Bean,它的任務(wù)就是返回一個(gè)視圖的具體實(shí)現(xiàn)(HTML、JSP、PDF等等).

2.Spring MVC版本的helloworld

接下來(lái)我們用Spring MVC開(kāi)發(fā)一個(gè)最最簡(jiǎn)單的Web應(yīng)用。首先創(chuàng)建一個(gè)Dynamic Web Project。為了方便起見(jiàn),我們將Spring dist目錄下的所有jar包放到WEB-INF/lib目錄下。這里我是用的是Spring3.1.x版本。此外還需要添加commons-logging包。

接下來(lái)在web.xml文件中配置DispatcherServlet,在web.xml文件中添加如下片段:

    hello

    

        org.springframework.web.servlet.DispatcherServlet

    

    1

    hello

    /

這里我們將DispatcherServlet命名為hello,并且讓它在web項(xiàng)目一啟動(dòng)就加載。接下來(lái)我們需要在WEB-INF目錄下創(chuàng)建一個(gè)hello-servlet.xml的Spring配置文件。Spring官方文檔上推薦的默認(rèn)的文件名是[servlet-name]-servlet.xml文件,這里servlet-name叫hello,因此,這個(gè)文件也就是叫hello-servlet.xml。在這個(gè)文件中可以定義各種各樣的Spring MVC需要使用的Bean。需要說(shuō)明的是,對(duì)于整個(gè)Web項(xiàng)目中的Spring配置文件中定義的Bean在這個(gè)配置文件中是可以繼承的,反過(guò)來(lái)不成立。上面我們將所有的請(qǐng)求都交給DispatcherServlet。

現(xiàn)在我們定義一個(gè)控制器類HelloController:

package springmvc.controller;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

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

import org.springframework.web.bind.annotation.RequestMethod;

@Controller

public class HelloController {

    @RequestMapping(value="/hello",method=RequestMethod.GET)

    public String sayHello(Model model) {

        model.addAttribute("msg", "Hello, World!");

        return "hello";

    }

}

首先通過(guò)@Controller注解標(biāo)示這個(gè)類是一個(gè)控制器,接下來(lái)通過(guò)@RequestMapping注解為制定方法sayHello處理哪些請(qǐng)求,在這個(gè)例子中,sayHello方法僅僅處理GET類型的/hello請(qǐng)求。

sayHello方法接收一個(gè)org.springframework.ui.Model類型的參數(shù)model,SpringMVC會(huì)自動(dòng)將請(qǐng)求參數(shù)封裝進(jìn)model中,我們可以簡(jiǎn)單的把model理解為一個(gè)Map。我們?cè)诜椒ㄖ袕膍odel中取出參數(shù)person的值并且打印出來(lái),接下來(lái)往model中添加一個(gè)屬性msg,值為"Hello,World!",然后返回視圖名稱hello。

接下來(lái)我們需要在Spring MVC配置文件中配置一個(gè)視圖解析器,我們看看hello-servlet.xml的內(nèi)容:

    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-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.xsd

    http://www.springframework.org/schema/mvc

    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    

    

    

    

    

        

        

    

前面沒(méi)什么好說(shuō)的,但是注意添加了mvc名稱空間,接下來(lái)啟用了spring的自動(dòng)掃描,并且設(shè)置了默認(rèn)的注解映射支持。這里需要重點(diǎn)解釋的是配置文件中的那個(gè)bean。它的類型是是Spring MVC中最常用的一種視圖解析器,當(dāng)然還有很多其他的類型,由于這篇博客的重點(diǎn)在于簡(jiǎn)單的介紹Spring MVC,因此不重點(diǎn)介紹,后續(xù)博文會(huì)補(bǔ)充。prefix屬性是指視圖前綴,suffix是視圖后綴,這里配置的是.jsp,我們?cè)诳刂破鞯姆椒╯ayHello中返回的是hello,再結(jié)合這里的配置,對(duì)應(yīng)的完整的視圖是:/WEB-INF/jsp/hello.jsp。接下來(lái)我們完成這個(gè)視圖,我們只是簡(jiǎn)單的取出我們放的信息msg:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

hello.jsp

    ${msg}

接下來(lái)部署應(yīng)用,我們?cè)L問(wèn)http://localhost:8080/springmvc/hello ,會(huì)顯示視圖的內(nèi)容,并且取出了msg的內(nèi)容:

SpringMVC簡(jiǎn)介與配置

就這樣一個(gè)簡(jiǎn)單的Spring MVC的Web應(yīng)用就ok了。

核心架構(gòu)的具體流程步驟如下:

1、 首先用戶發(fā)送請(qǐng)求——>DispatcherServlet,前端控制器收到請(qǐng)求后自己不進(jìn)行處理,而是委托給其他的解析器進(jìn)行處理,作為統(tǒng)一訪問(wèn)點(diǎn),進(jìn)行全局的流程控制;

2、 DispatcherServlet——>HandlerMapping, HandlerMapping將會(huì)把請(qǐng)求映射為HandlerExecutionChain對(duì)象(包含一個(gè)Handler處理器(頁(yè)面控制器)對(duì)象、多個(gè)HandlerInterceptor攔截器)對(duì)象,通過(guò)這種策略模式,很容易添加新的映射策略;

3、 DispatcherServlet——>HandlerAdapter,HandlerAdapter將會(huì)把處理器包裝為適配器,從而支持多種類型的處理器,即適配器設(shè)計(jì)模式的應(yīng)用,從而很容易支持很多類型的處理器;

4、 HandlerAdapter——>處理器功能處理方法的調(diào)用,HandlerAdapter將會(huì)根據(jù)適配的結(jié)果調(diào)用真正的處理器的功能處理方法,完成功能處理;并返回一個(gè)ModelAndView對(duì)象(包含模型數(shù)據(jù)、邏輯視圖名);

5、 ModelAndView的邏輯視圖名——> ViewResolver, ViewResolver將把邏輯視圖名解析為具體的View,通過(guò)這種策略模式,很容易更換其他視圖技術(shù);

6、 View——>渲染,View會(huì)根據(jù)傳進(jìn)來(lái)的Model模型數(shù)據(jù)進(jìn)行渲染,此處的Model實(shí)際是一個(gè)Map數(shù)據(jù)結(jié)構(gòu),因此很容易支持其他視圖技術(shù);

7、返回控制權(quán)給DispatcherServlet,由DispatcherServlet返回響應(yīng)給用戶,到此一個(gè)流程結(jié)束。

此處我們只是講了核心流程,沒(méi)有考慮攔截器、本地解析、文件上傳解析等,后邊再細(xì)述。

到此,再來(lái)看我們前邊提出的問(wèn)題:

1、 請(qǐng)求如何給前端控制器?這個(gè)應(yīng)該在web.xml中進(jìn)行部署描述,在HelloWorld中詳細(xì)講解。

2、 前端控制器如何根據(jù)請(qǐng)求信息選擇頁(yè)面控制器進(jìn)行功能處理? 我們需要配置HandlerMapping進(jìn)行映射

3、 如何支持多種頁(yè)面控制器呢?配置HandlerAdapter從而支持多種類型的頁(yè)面控制器

4、 如何頁(yè)面控制器如何使用業(yè)務(wù)對(duì)象?可以預(yù)料到,肯定利用Spring IoC容器的依賴注入功能

5、 頁(yè)面控制器如何返回模型數(shù)據(jù)?使用ModelAndView返回

6、 前端控制器如何根據(jù)頁(yè)面控制器返回的邏輯視圖名選擇具體的視圖進(jìn)行渲染? 使用ViewResolver進(jìn)行解析

7、 不同的視圖技術(shù)如何使用相應(yīng)的模型數(shù)據(jù)? 因?yàn)镸odel是一個(gè)Map數(shù)據(jù)結(jié)構(gòu),很容易支持其他視圖技術(shù)

在此我們可以看出具體的核心開(kāi)發(fā)步驟:

1、 DispatcherServlet在web.xml中的部署描述,從而攔截請(qǐng)求到Spring Web MVC

2、 HandlerMapping的配置,從而將請(qǐng)求映射到處理器

3、 HandlerAdapter的配置,從而支持多種類型的處理器

4、 ViewResolver的配置,從而將邏輯視圖名解析為具體視圖技術(shù)

5、處理器(頁(yè)面控制器)的配置,從而進(jìn)行功能處理

附件:http://down.51cto.com/data/2367670

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享文章:SpringMVC簡(jiǎn)介與配置-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/djgscs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部