SpringMvc學(xué)習(xí)筆記一介紹與環(huán)境搭建_第1頁
SpringMvc學(xué)習(xí)筆記一介紹與環(huán)境搭建_第2頁
SpringMvc學(xué)習(xí)筆記一介紹與環(huán)境搭建_第3頁
SpringMvc學(xué)習(xí)筆記一介紹與環(huán)境搭建_第4頁
SpringMvc學(xué)習(xí)筆記一介紹與環(huán)境搭建_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、springmvc學(xué)習(xí)筆記(一)介紹與環(huán)境搭建一、springmvc的介紹(一)、介紹springmvc是一種基于java的實(shí)現(xiàn)了web mvc設(shè)計模式的請求驅(qū)動類型的輕量級web框架,即使用了mvc架構(gòu)模式的思想,springmvc結(jié)構(gòu)簡單,而且性能也非常優(yōu)秀。相信很多人和我一樣,學(xué)習(xí)springmvc之前多多少少學(xué)習(xí)過struts2。struts2也是比較優(yōu)秀的mvc架構(gòu),比如良好的結(jié)構(gòu),包括它的多層攔截器,多實(shí)例的action性能都很好。只是相比springmvc,struts2的值棧、ognl表達(dá)式、struts2標(biāo)簽庫等,會導(dǎo)致應(yīng)用的性能下降。所以相比之下,springmvc會比st

2、urts2更快,更便于使用,這也是現(xiàn)在越來越多的團(tuán)隊使用springmvc的原因。(二)、springmvc請求流程具體執(zhí)行步驟如下:1、 首先用戶發(fā)送請求>前端控制器,前端控制器根據(jù)請求信息(如url)來決定選擇哪一個頁面控制器進(jìn)行處理并把請求委托給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;2、 頁面控制器接收到請求后,進(jìn)行功能處理,首先需要收集和綁定請求參數(shù)到一個對象,這個對象在spring web mvc中叫命令對象,并進(jìn)行驗證,然后將命令對象委托給業(yè)務(wù)對象進(jìn)行處理;處理完畢后返回一個modelandview(模型數(shù)據(jù)和邏輯視圖名);圖2-1中的3、4、5步驟;3、

3、 前端控制器收回控制權(quán),然后根據(jù)返回的邏輯視圖名,選擇相應(yīng)的視圖進(jìn)行渲染,并把模型數(shù)據(jù)傳入以便視圖渲染;圖2-1中的步驟6、7;4、 前端控制器再次收回控制權(quán),將響應(yīng)返回給用戶,圖2-1中的步驟8;至此整個結(jié)束。(三)、 springmvc結(jié)構(gòu)核心架構(gòu)的具體流程步驟如下:1、 首先用戶發(fā)送請求>dispatcherservlet,前端控制器收到請求后自己不進(jìn)行處理,而是委托給其他的解析器進(jìn)行處理,作為統(tǒng)一訪問點(diǎn),進(jìn)行全局的流程控制;2、 dispatcherservlet>handlermapping, handlermapping將會把請求映射為handlerexecutionc

4、hain對象(包含一個handler處理器(頁面控制器)對象、多個handlerinterceptor攔截器)對象,通過這種策略模式,很容易添加新的映射策略;3、 dispatcherservlet>handleradapter,handleradapter將會把處理器包裝為適配器,從而支持多種類型的處理器,即適配器設(shè)計模式的應(yīng)用,從而很容易支持很多類型的處理器;4、 handleradapter>處理器功能處理方法的調(diào)用,handleradapter將會根據(jù)適配的結(jié)果調(diào)用真正的處理器的功能處理方法,完成功能處理;并返回一個modelandview對象(包含模型數(shù)據(jù)、邏輯視圖名);

5、5、 modelandview的邏輯視圖名> viewresolver, viewresolver將把邏輯視圖名解析為具體的view,通過這種策略模式,很容易更換其他視圖技術(shù);6、 view>渲染,view會根據(jù)傳進(jìn)來的model模型數(shù)據(jù)進(jìn)行渲染,此處的model實(shí)際是一個map數(shù)據(jù)結(jié)構(gòu),因此很容易支持其他視圖技術(shù);7、返回控制權(quán)給dispatcherservlet,由dispatcherservlet返回響應(yīng)給用戶,到此一個流程結(jié)束。(三)、springmvc的優(yōu)點(diǎn)1、清晰的角色劃分:前端控制器(dispatcherservlet)、請求到處理器映射(handlermapping

6、)、處理器適配器(handleradapter)、視圖解析器(viewresolver)、處理器或頁面控制器(controller)、驗證器( validator)、命令對象(command 請求參數(shù)綁定到的對象就叫命令對象)、表單對象(form object 提供給表單展示和提交到的對象就叫表單對象)。2、分工明確,而且擴(kuò)展點(diǎn)相當(dāng)靈活,可以很容易擴(kuò)展,雖然幾乎不需要;3、由于命令對象就是一個pojo,無需繼承框架特定api,可以使用命令對象直接作為業(yè)務(wù)對象;4、和spring 其他框架無縫集成,是其它web框架所不具備的;5、可適配,通過handleradapter可以支持任意的類作為處理器

7、;6、可定制性,handlermapping、viewresolver等能夠非常簡單的定制;7、功能強(qiáng)大的數(shù)據(jù)驗證、格式化、綁定機(jī)制;8、利用spring提供的mock對象能夠非常簡單的進(jìn)行web層單元測試;9、本地化、主題的解析的支持,使我們更容易進(jìn)行國際化和主題的切換。10、強(qiáng)大的jsp標(biāo)簽庫,使jsp編寫更容易。還有比如restful風(fēng)格的支持、簡單的文件上傳、約定大于配置的契約式編程支持、基于注解的零配置支持等等。以上大部分是從網(wǎng)上摘取,歸納過來的。更多關(guān)于springmvc介紹的文章這里推薦幾個:1. 2. 二、環(huán)境搭建:第一個helloworld(一)、環(huán)境與資源準(zhǔn)備1. 下載sp

8、ring框架spring-framework-3.1.1.release-with-docs.zip。下載地址是:/download 2. 這里使用ide的是eclipse-jee-juno,服務(wù)器tomcat6.0。3. 新建web工程springmvc_01,導(dǎo)入依賴的包:(1) spring框架jar包:為了簡單,將spring-framework-3.1.3.release-with-docs.zip/dist/下的所有jar包拷貝到項目的web-inf/lib目錄下;(2) spring框架依賴的jar包:需要添加apac

9、he commons logging日志,此處使用的是commons.logging-1.1.1.jar;需要添加jstl標(biāo)簽庫支持,此處使用的是jstl-1.2.jar和standard.jar;4. 配置web.xml文件我們在web.xml中進(jìn)行如下配置:<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="/2001/xmlschema-instance" xmlns=" xmlns:web="

10、xsi:schemalocation=" id="webapp_id" version="2.5"><servlet><servlet-name>hello</servlet-name><servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class><!-<init-param> <param-name>contextconfiglocation</

11、param-name> <param-value>/web-inf/applicationcontext.xml</param-value> </init-param>-> <load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/</url-pattern></servlet-map

12、ping></web-app>-load-on-startup:表示啟動容器時初始化該servlet;url-pattern:表示哪些請求交給spring web mvc處理, “/” 是用來定義默認(rèn)servlet映射的。也可以如“*.html”表示攔截所有以html為擴(kuò)展名的請求。如果你沒有指定init-param里面contextcofiglocation的值中對應(yīng)的xml文件的話,那么像本段代碼對應(yīng)在springmvc中的配置文件就應(yīng)該是/web-inf/hello-servlet.xml這樣的文件。5.創(chuàng)建hello-servlet.xml文件像上一步所說的,在/we

13、b-inf目錄下創(chuàng)建hello-servlet.xml文件。<?xml version="1.0" encoding="utf-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/xmlschema-instance"xmlns:context="/schema/context"xmln

14、s:mvc="/schema/mvc"xsi:schemalocation="/schema/mvc /schema/mvc/spring-mvc-3.1.xsd/schema/beans /schema/beans/spring-beans.xsdhttp:/www.sprin

15、/schema/context /schema/context/spring-context-3.1.xsd"><!- 配置請求映射處理器 -><bean id="handlermapping" class="org.springframework.web.servlet.handler.beannameurlhandlermapping"/><!- 配置視圖解析器 -><bean id="viewre

16、solver" class="org.springframework.web.servlet.view.internalresourceviewresolver"><property name="viewclass" value="org.springframework.web.servlet.view.jstlview"/> <property name="prefix" value="/"/> <property name="suffi

17、x" value=".jsp"/></bean><!- 配置控制器 -><bean name="/hello.htm" class="com.tjitcast.web.controller.hellocontroller"></bean></beans>-(1) beannameurlhandlermapping:表示將請求的url和bean名字映射,如url為 “上下文/hello”,則spring配置文件必須有一個名字為“/hello”的bean,上下文默

18、認(rèn)忽略。(2) internalresourceviewresolver:用于支持servlet、jsp視圖解析;    viewclass:jstlview表示jsp模板頁面需要使用jstl標(biāo)簽庫,classpath中必須包含jstl的相關(guān)jar包;    prefix和suffix:查找視圖頁面的前綴和后綴(前綴邏輯視圖名后綴),比如傳進(jìn)來的邏輯視圖名為hello,則該該jsp視圖頁面應(yīng)該存放在“content根目錄下”;(3) name="/hello.htm":前邊配置的beannameurlhandler

19、mapping,表示如過請求的url為 “上下文/hello”,則將會交給該bean進(jìn)行處理。6. 創(chuàng)建控制器類public class hellocontroller implements controller public modelandview handlerequest(httpservletrequest req, httpservletresponse resp) throws exception modelandview mav = new modelandview(); /添加模型數(shù)據(jù) mav.addobject("name", "張艷羽&quo

20、t;); /設(shè)置邏輯視圖名,視圖解析器會根據(jù)該名字解析到具體的視圖頁面 mav.setviewname("hello"); return mav; 7. 在webcontent下創(chuàng)建頁面hello.jsp<% page language="java" import="java.util.*" pageencoding="utf-8"%><!doctype html public "-/w3c/dtd html 4.01 transitional/en"><html&

21、gt; <head> <title>hello</title></head> <body> <h3>helloworld!</h3><hr/> 你好,$name </body></html>8. 部署,啟動tomcat,訪問localhost:8080/springmvc_01/hello。會出現(xiàn)下面的頁面。三、環(huán)境搭建:基于注解實(shí)現(xiàn)springmvc很大的一個優(yōu)點(diǎn)就是基于注解的零配置支持,也就是說,我們可以用注解的方式實(shí)現(xiàn)上節(jié)的例子。1. 在hello-servlet.xm

22、l中加上這兩行配置(加在前面):<context:component-scan base-package="com.tjitcast.web.controller"/><mvc:annotation-driven/>2. 新建index.jsp<% page language="java" import="java.util.*" pageencoding="utf-8"%><!doctype html public "-/w3c/dtd html 4.01 tr

23、ansitional/en"><html> <head> <title>springmvc示例-注解</title></head> <body> <h3>springmvc傳值</h3><hr/> <form action="hello" method="post"> <input type="text" name="username"/> <input type="submit" value="提交"/> </form> </body></html>-3. 改造hellocontroller:controllerpublic class hellocontroller requestmapping("/hello2")public string hello2(string username,model model)system.out.println(username);model.addattribute("username"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論