内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

html5spring的簡(jiǎn)單介紹

spring mvc用html5 攔截器怎么配置

SpringMVC 中的Interceptor 攔截器也是相當(dāng)重要和相當(dāng)有用的,它的主要作用是攔截用戶的請(qǐng)求并進(jìn)行相應(yīng)的處理。比如通過它來進(jìn)行權(quán)限驗(yàn)證,或者是來判斷用戶是否登陸,或者是像12306 那樣子判斷當(dāng)前時(shí)間是否是購(gòu)票時(shí)間。

南溪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,南溪網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為南溪上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的南溪做網(wǎng)站的公司定做!

1、定義Interceptor的實(shí)現(xiàn)類

SpringMVC 中的Interceptor 攔截請(qǐng)求是通過HandlerInterceptor 來實(shí)現(xiàn)的。在SpringMVC 中定義一個(gè)Interceptor 非常簡(jiǎn)單,主要有兩種方式:

第一種方式是要定義的Interceptor類要實(shí)現(xiàn)了Spring 的HandlerInterceptor

接口,或者是這個(gè)類繼承實(shí)現(xiàn)了HandlerInterceptor 接口的類,比如Spring

已經(jīng)提供的實(shí)現(xiàn)了HandlerInterceptor 接口的抽象類HandlerInterceptorAdapter ;

第二種方式是實(shí)現(xiàn)Spring的WebRequestInterceptor接口,或者是繼承實(shí)現(xiàn)了WebRequestInterceptor的類。

2、實(shí)現(xiàn)HandlerInterceptor接口

HandlerInterceptor 接口中定義了三個(gè)方法,我們就是通過這三個(gè)方法來對(duì)用戶的請(qǐng)求進(jìn)行攔截處理的。

(1 )preHandle (HttpServletRequest

request, HttpServletResponse response, Object handle)

方法,顧名思義,該方法將在請(qǐng)求處理之前進(jìn)行調(diào)用。SpringMVC 中的Interceptor

是鏈?zhǔn)降恼{(diào)用的,在一個(gè)應(yīng)用中或者說是在一個(gè)請(qǐng)求中可以同時(shí)存在多個(gè)Interceptor 。每個(gè)Interceptor

的調(diào)用會(huì)依據(jù)它的聲明順序依次執(zhí)行,而且最先執(zhí)行的都是Interceptor

中的preHandle

方法,所以可以在這個(gè)方法中進(jìn)行一些前置初始化操作或者是對(duì)當(dāng)前請(qǐng)求的一個(gè)預(yù)處理,也可以在這個(gè)方法中進(jìn)行一些判斷來決定請(qǐng)求是否要繼續(xù)進(jìn)行下去。該方法

的返回值是布爾值Boolean 類型的,當(dāng)它返回為false 時(shí),表示請(qǐng)求結(jié)束,后續(xù)的Interceptor 和Controller

都不會(huì)再執(zhí)行;當(dāng)返回值為true 時(shí)就會(huì)繼續(xù)調(diào)用下一個(gè)Interceptor 的preHandle

方法,如果已經(jīng)是最后一個(gè)Interceptor 的時(shí)候就會(huì)是調(diào)用當(dāng)前請(qǐng)求的Controller 方法。

(2 )postHandle (HttpServletRequest

request, HttpServletResponse response, Object handle, ModelAndView

modelAndView) 方法,由preHandle 方法的解釋我們知道這個(gè)方法包括后面要說到的afterCompletion

方法都只能是在當(dāng)前所屬的Interceptor 的preHandle 方法的返回值為true 時(shí)才能被調(diào)用。postHandle

方法,顧名思義就是在當(dāng)前請(qǐng)求進(jìn)行處理之后,也就是Controller 方法調(diào)用之后執(zhí)行,但是它會(huì)在DispatcherServlet

進(jìn)行視圖返回渲染之前被調(diào)用,所以我們可以在這個(gè)方法中對(duì)Controller 處理之后的ModelAndView

對(duì)象進(jìn)行操作。postHandle 方法被調(diào)用的方向跟preHandle 是相反的,也就是說先聲明的Interceptor

的postHandle 方法反而會(huì)后執(zhí)行,這和Struts2 里面的Interceptor 的執(zhí)行過程有點(diǎn)類型。Struts2

里面的Interceptor

的執(zhí)行過程也是鏈?zhǔn)降模皇窃赟truts2 里面需要手動(dòng)調(diào)用ActionInvocation 的invoke

方法來觸發(fā)對(duì)下一個(gè)Interceptor 或者是Action 的調(diào)用,然后每一個(gè)Interceptor 中在invoke

方法調(diào)用之前的內(nèi)容都是按照聲明順序執(zhí)行的,而invoke 方法之后的內(nèi)容就是反向的。

(3

)afterCompletion(HttpServletRequest request, HttpServletResponse

response, Object handle, Exception ex) 方法,該方法也是需要當(dāng)前對(duì)應(yīng)的Interceptor

的preHandle 方法的返回值為true 時(shí)才會(huì)執(zhí)行。顧名思義,該方法將在整個(gè)請(qǐng)求結(jié)束之后,也就是在DispatcherServlet

渲染了對(duì)應(yīng)的視圖之后執(zhí)行。這個(gè)方法的主要作用是用于進(jìn)行資源清理工作的。

下面是一個(gè)簡(jiǎn)單的代碼說明:

[java] view plain copy

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

public class SpringMVCInterceptor implements HandlerInterceptor {

/**

* preHandle方法是進(jìn)行處理器攔截用的,顧名思義,該方法將在Controller處理之前進(jìn)行調(diào)用,SpringMVC中的Interceptor攔截器是鏈?zhǔn)降模梢酝瑫r(shí)存在

* 多個(gè)Interceptor,然后SpringMVC會(huì)根據(jù)聲明的前后順序一個(gè)接一個(gè)的執(zhí)行,而且所有的Interceptor中的preHandle方法都會(huì)在

* Controller方法調(diào)用之前調(diào)用。SpringMVC的這種Interceptor鏈?zhǔn)浇Y(jié)構(gòu)也是可以進(jìn)行中斷的,這種中斷方式是令preHandle的返

* 回值為false,當(dāng)preHandle的返回值為false的時(shí)候整個(gè)請(qǐng)求就結(jié)束了。

*/

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

// TODO Auto-generated method stub

return false;

}

/**

* 這個(gè)方法只會(huì)在當(dāng)前這個(gè)Interceptor的preHandle方法返回值為true的時(shí)候才會(huì)執(zhí)行。postHandle是進(jìn)行處理器攔截用的,它的執(zhí)行時(shí)間是在處理器進(jìn)行處理之

* 后,也就是在Controller的方法調(diào)用之后執(zhí)行,但是它會(huì)在DispatcherServlet進(jìn)行視圖的渲染之前執(zhí)行,也就是說在這個(gè)方法中你可以對(duì)ModelAndView進(jìn)行操

* 作。這個(gè)方法的鏈?zhǔn)浇Y(jié)構(gòu)跟正常訪問的方向是相反的,也就是說先聲明的Interceptor攔截器該方法反而會(huì)后調(diào)用,這跟Struts2里面的攔截器的執(zhí)行過程有點(diǎn)像,

* 只是Struts2里面的intercept方法中要手動(dòng)的調(diào)用ActionInvocation的invoke方法,Struts2中調(diào)用ActionInvocation的invoke方法就是調(diào)用下一個(gè)Interceptor

* 或者是調(diào)用action,然后要在Interceptor之前調(diào)用的內(nèi)容都寫在調(diào)用invoke之前,要在Interceptor之后調(diào)用的內(nèi)容都寫在調(diào)用invoke方法之后。

*/

@Override

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

// TODO Auto-generated method stub

}

/**

* 該方法也是需要當(dāng)前對(duì)應(yīng)的Interceptor的preHandle方法的返回值為true時(shí)才會(huì)執(zhí)行。該方法將在整個(gè)請(qǐng)求完成之后,也就是DispatcherServlet渲染了視圖執(zhí)行,

* 這個(gè)方法的主要作用是用于清理資源的,當(dāng)然這個(gè)方法也只能在當(dāng)前這個(gè)Interceptor的preHandle方法的返回值為true時(shí)才會(huì)執(zhí)行。

*/

@Override

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

// TODO Auto-generated method stub

}

}

3、定義的攔截器類加到SpringMVC的攔截體系中

[html] view plain copy

span style="font-size:12px;" mvc:interceptors

!-- 使用bean定義一個(gè)Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請(qǐng)求 --

bean class="com.host.app.web.interceptor.AllInterceptor"/

mvc:interceptor

mvc:mapping path="/test/number.do"/

!-- 定義在mvc:interceptor下面的表示是對(duì)特定的請(qǐng)求才進(jìn)行攔截的 --

bean class="com.host.app.web.interceptor.LoginInterceptor"/

/mvc:interceptor

/mvc:interceptors/span

由上面的示例可以看出可以利用mvc:interceptors標(biāo)簽聲明一系列的攔截器,然后它們就可以形成一個(gè)攔截器鏈,攔截器的執(zhí)行順序是按聲明的先

后順序執(zhí)行的,先聲明的攔截器中的preHandle方法會(huì)先執(zhí)行,然而它的postHandle方法和afterCompletion方法卻會(huì)后執(zhí)

行。

在mvc:interceptors標(biāo)簽下聲明interceptor主要有兩種方式:

(1)直接定義一個(gè)Interceptor實(shí)現(xiàn)類的bean對(duì)象。使用這種方式聲明的Interceptor攔截器將會(huì)對(duì)所有的請(qǐng)求進(jìn)行攔截。

(2)使用mvc:interceptor標(biāo)簽進(jìn)行聲明。使用這種方式進(jìn)行聲明的Interceptor可以通過mvc:mapping子標(biāo)簽來定義需要進(jìn)行攔截的請(qǐng)求路徑。

經(jīng)過上述兩步之后,定義的攔截器就會(huì)發(fā)生作用對(duì)特定的請(qǐng)求進(jìn)行攔截了。

學(xué)習(xí)spring web mvc,需要掌握哪些知識(shí)

在學(xué)習(xí)springMVC之前 你要對(duì)MVC(模型model,視圖View,控制器Controller)設(shè)計(jì)模式有一個(gè)比較深入的理解。結(jié)合一個(gè)案例分析MVC的模式,當(dāng)然在學(xué)習(xí)SpringMVC 之前,需要把java基礎(chǔ)打好,這樣學(xué)習(xí)起來才會(huì)更加的容易。

其次是 HTML(超文本標(biāo)記語言)是網(wǎng)頁(yè)的核心,學(xué)好HTML是成為Web開發(fā)人員的基本條件。HTML很容易學(xué)習(xí)的,但也很容易誤用,要學(xué)精還得費(fèi)點(diǎn)功夫。隨著HTML5的發(fā)展和普及,了解HTML5也將成為Web開發(fā)人員的必修課。涉及到網(wǎng)頁(yè)外觀時(shí),就需要學(xué)習(xí)CSS了。

java中的設(shè)計(jì)模式 那是不用說了。java中的動(dòng)態(tài)代理 多線程機(jī)制,反射等java高級(jí)技術(shù)要了解。這樣學(xué)起來就方便快捷一些。最好的辦法就是通過實(shí)例來參考印證,由低到高,由簡(jiǎn)到繁循序漸進(jìn)的學(xué)習(xí)。

想做HTML5的微課,誰知道哪些制作HTML5微課的工具比較好用?

您好,可以試試 epub360 來制作H5課件哦,制作目錄導(dǎo)航、雜志、微官網(wǎng)、課件、小游戲互動(dòng)等功能類型十分簡(jiǎn)單,上百種動(dòng)畫\動(dòng)效、拖拽式組件和觸發(fā)行為可以幫你快速制作一個(gè)炫酷的H5場(chǎng)景。

本文題目:html5spring的簡(jiǎn)單介紹
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article26/dscohjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、App設(shè)計(jì)、企業(yè)網(wǎng)站制作自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
时尚| 武宣县| 油尖旺区| 拜城县| 武宁县| 封开县| 老河口市| 府谷县| 贵溪市| 韶山市| 中宁县| 班戈县| 湖南省| 无为县| 泉州市| 固始县| 年辖:市辖区| 邢台县| 获嘉县| 雷波县| 天全县| 广河县| 平罗县| 家居| 谢通门县| 吉木萨尔县| 伊春市| 利津县| 嘉峪关市| 恭城| 池州市| 西和县| 南投县| 行唐县| 南通市| 思茅市| 容城县| 洛浦县| 增城市| 镇康县| 甘肃省|