基于注解的SpringMVC簡單介紹_第1頁
基于注解的SpringMVC簡單介紹_第2頁
基于注解的SpringMVC簡單介紹_第3頁
基于注解的SpringMVC簡單介紹_第4頁
基于注解的SpringMVC簡單介紹_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、SpringMVC是一個(gè)基于DispatcherServlet的MVC框架,每一個(gè)請求最先訪問的都 是 DispatcherServlet,DispatcherServlet 負(fù)責(zé)轉(zhuǎn)發(fā)每一個(gè) Request 請求給相應(yīng)的 Handler, Handler處理 以后再返回相應(yīng)的視圖(View)和模型(Model),返回的視圖和 模型都可以不指定,即可以只返回 Model或只返回View或都不返回。DispatcherServlet 是繼承自 HttpServlet 的,既然 SpringMVC 是基于DispatcherServlet 的, 那么我們先來配置一下 DispatcherServle

2、t ,好讓它能 夠管理 我們希望它管理的內(nèi)容。 HttpServlet 是在 web.xml 文件中聲明 的。01 02 blog 03 0 org.springframework.web.servlet.DispatcherServlet4 05 106 07 08 blog 09 10 *.do 11 上面聲明了一個(gè)名 為blog的DispatcherServlet,該Servlet將處理所有以“ .do結(jié)尾 的請求。在初始化DispatcherServlet的時(shí)候,SpringMVC默認(rèn)會(huì)到/WEB-INF目錄 下尋找一個(gè)叫servlet- name-servlet.xml的配置文件,來

3、初始化里面的bean對象, 該文件中對應(yīng)的bean對象會(huì)覆蓋spring配置文件中聲明的同名的bean對象。如上面的就會(huì)在 /WEB-INF 目 錄下尋找一個(gè)叫 blog-servlet.xml 的文件;當(dāng)然也可以在 Servlet 中聲明配置文件的位 置。01 02 03 blog0 org.springframework.web.servlet.DispatcherServlet4 0506contextConfigLocation0708/WEB-INF/blog-servlet.xml0910111 12 1314 blog15 *.do16DispatcherServlet會(huì)利用一些

4、特殊的bean來處理Request請求和生成相應(yīng)的視圖 返回。關(guān)于視圖的返回, Controller 只負(fù)責(zé)傳回來一個(gè)值,然后到底返回的是什 么視圖,是 由視圖解析器控制的,在jsp中常用的視圖解析器是InternalResourceViewResovler,它會(huì)要求一個(gè)前綴和一個(gè)后綴1 3 4 5 在上述視圖解析器中,如果Controller返回的是blog/index,那么通過視圖解析器解 析之后的視圖就是/WEB-INF/blog/index.jsp 。要使用注解的SpringMVC需要在SpringMVC的配置文件中進(jìn)行聲明,具體方式為 先引入mvc命名空間,然后利用mvc:annot

5、ation-driven /進(jìn)行聲明。01 beans xmlns=/schema/beansxmlns:xsi=/2001/XMLSchema-instancexmlns:context=/schema/contextxmlns:mvc=/sche3ma/mvc xsi:schemaLocation=/schema/beans04d

6、/schema/beans/spring-beans-3.0.xs0506 0.xsd/schema/context/schema/context/spring-context-3./schema/mvc0 /schema/mvc/spring-mvc-3.0.xsd09101112 主要是 說說 Contr

7、oller.一個(gè)類使用了 Controller進(jìn)行標(biāo)記的都是Controller1 Controller2 public class BlogController 4有了 Controller 之后,那么到底是怎 樣請求一個(gè) Controller 具體的方法的呢,那是通 過RequestMappin冰標(biāo)記 的,RequestMappin回以標(biāo)記在類上面,也可以標(biāo)記 在方法上,當(dāng)方法上和類上都標(biāo)記了RequestMappingl勺時(shí)候,那么對應(yīng)的方 法 對應(yīng)的Url就是類上的加方法上的,如下面的index方法,其對應(yīng)的URL應(yīng)為類上的/blog加上index方法上的/index,所以應(yīng)為/blo

8、g/index,所以當(dāng)請求 /blog/index.do 的時(shí)候就會(huì)訪問 BlogController 的 index方法。01Controller02RequestMapping(/blog)03public class BlogController 040506RequestMapping(/index)0708public String index(Map map) return blog/index;0910在上面的代碼中,如果index方法上沒有RequestMapping注解,而只有BlogController 類上有,且該類只有一個(gè)方法的 時(shí)候,直接請求類上的 URL 就會(huì)調(diào) 用

9、里面的方法,即直接請求/blog.do的時(shí)候就會(huì)調(diào)用index方法。在RequestMapping中還可以指定一個(gè)屬性 method,其主要對應(yīng) 的值有 RequestMethod.GET和RequestMethod.POST,利用該屬性可以嚴(yán)格的控制某一方 法只能被 標(biāo)記的請求路徑 對應(yīng)的請求方法才能 訪問 ,如指定 method 的值為 GET, 則表示只有通過GET方式才能訪問該方法,默認(rèn)是都可以訪問。在 SpringMVC 中常用的注解 還有PathVariable RequestParan, PathVariable標(biāo) 記在方法的參數(shù)上,利用它 標(biāo)記的參數(shù)可以利用 請求路徑 傳值,看

10、下面一個(gè)例子1 RequestMapping(value=/comment/blogId, method=RequestMethod.POST) public void comment(Comment comment,PathVariableint blogId, HttpSession session, HttpServletResponse response) throws IOException 4在該例子中,blogId是被PathVariable標(biāo)記為請求路徑變量的,如果請求的是/blog/comment/1.do的時(shí)候就表 示blogId的值為1.同樣RequestParam也是用

11、來給參數(shù)傳值的,但是它是從頭request的參數(shù)里面取值,相當(dāng)于 request.getParameter 參數(shù)名)方法。在Controller的方法中,如果需要 WEB元素HttpServletRequest,HttpServletResponse和HttpSession,只需要在給方法一個(gè)對應(yīng)的參數(shù),那么在訪 問的時(shí)候SpringMVC就會(huì)自動(dòng)給其傳值,但是需要注意的是在傳入Session的 時(shí) 候如果是第一次 訪問系統(tǒng)的時(shí)候就調(diào)用session會(huì)報(bào)錯(cuò),因?yàn)檫@個(gè)時(shí)候session還沒 有生成。接下來討論一下方法的返回值,主要有一下情況:返回一個(gè)ModelAndView,其中Model是一個(gè)

12、Map,里面存放的是一對對的鍵 值對,其可以直接在頁面上使用,View是一個(gè)字符串,表示的是某一個(gè)View 的名稱返回一個(gè)View,也就是一個(gè)字符串,這個(gè)時(shí)候如果需要給頁面?zhèn)髦担梢越o 方法一個(gè)Map參數(shù),該Map就相當(dāng)于一個(gè)Model,往該Model里面存入鍵值 對就可以在頁面上進(jìn)行訪問了返回一個(gè)Model也就是一個(gè)Map,這個(gè)時(shí)候?qū)⒔馕瞿J(rèn)的生成的view nameb 什么也不返回,這個(gè)時(shí)候可以利用HttpServletResponse進(jìn)行返回,也可以 直接使用printStream進(jìn)行返回下面是一個(gè)簡單的實(shí)例01RequestMa ppin g(/ow ner/i ndex)02 Pub

13、lic String userIndex(MapvString, Objectmap,PathVariableStringowner, Htt pServletRequest request) throwsP arserExce pti on 030405060708List categories = categoryService.fi nd(ow ner); int offset = Util.getOffset(request);P agerp ager = blogService.fi nd(ow ner,0, offset, maxResults);int totalRecords

14、= p ager.getTotalRecords();List blogs = p ager.getData();Util.shortBlog(blogs);List messages = messageService.fi nd(ow ner, 0,5).getData();11 Util.shortMessage(messages, 20);091012map.put(messages, messages);13map.put(totalRecords, totalRecords);14List stores = storeService.find(owner, 0, 5).getData();15map

溫馨提示

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

評論

0/150

提交評論