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

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

springhtml5,Spring5

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í)間。

成都創(chuàng)新互聯(lián)公司一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、成都網(wǎng)頁(yè)設(shè)計(jì)、微信平臺(tái)小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、成都App制作是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!

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)降?,只是在Struts2 里面需要手動(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)降?,可以同時(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)行攔截了。

誰(shuí)有springmvc multipartfile html5 多文件上傳的示例代碼,急!急!急!

form?id="fileUpload"?action="%=basePath%template/fileUpload.do"?enctype="multipart/form-data"?method="post"?class="form-horizontal"

div?class="modal-header"

button?type="button"?class="close"?data-dismiss="modal"

aria-hidden="true"times;/button

h4?class="modal-title"?id="myModalLabel"?style="color:?#15428b;"上傳/h4

/div

div?class="modal-body"

input?type="file"?name="targetFile"

input?type="file"?name="targetFile"

input?type="file"?name="targetFile"

/div

div?class="modal-footer"

button?id="cancel"?type="button"?class="btn?btn-default"?data-dismiss="modal"取消

/button

button?type="button"?class="btn?btn-primary"?onclick="uploadFile();"?確認(rèn)/button

/div

/form

@RequestMapping(value?=?"/fileUpload.do")

public?String?fileUpload(Model?model,?@RequestParam?MultipartFile[]?targetFile,?HttpServletRequest?request,?PageSplitBankVo?pageSplit){

try?{

FileOperationsUtil.uploadFileMVC(request,?targetFile,?"/files/temporary");

model.addAttribute("msg",?"文件上傳成功!");

}?catch?(Exception?e)?{

logger.error(e);

model.addAttribute("msg",?"文件上傳失敗!");

}

return?this.allButton(model,?request,?pageSplit);

}

public?static?void?uploadFileMVC(HttpServletRequest?request,?MultipartFile[]?fileSource,?String?fileTarget){

for(MultipartFile?file?:?fileSource){??

if(file.isEmpty()){??

System.out.println("文件未上傳");??

}else{??

//如果用的是Tomcat服務(wù)器,則文件會(huì)上傳到\\%TOMCAT_HOME%\\webapps\\項(xiàng)目\\fileTarget\\文件夾中??

String?realPath?=?request.getSession().getServletContext().getRealPath(fileTarget);??

//這里不必處理IO流關(guān)閉的問題,因?yàn)镕ileUtils.copyInputStreamToFile()方法內(nèi)部會(huì)自動(dòng)把用到的IO流關(guān)掉,我是看它的源碼才知道的??

try?{

FileUtils.copyInputStreamToFile(file.getInputStream(),?new?File(realPath,?file.getOriginalFilename()));

}?catch?(IOException?e)?{

//?TODO?Auto-generated?catch?block

e.printStackTrace();

}??

}??

}??

}

ispring 轉(zhuǎn)出來的html5怎么放在網(wǎng)頁(yè)中

沒法直接看出來,至少得看源文件(一般對(duì)網(wǎng)頁(yè)單擊右鍵就有相應(yīng)選項(xiàng),不同瀏覽器選項(xiàng)不同),分析是否使用了HTML5新增的標(biāo)簽主要是video、audio、canvas、section、article、header、nav。CSS3則需要看有沒有使用CSS3新增的屬性,比如“border-radius”、“text-shadow”、“transform”以及“transition”等等。想完成這些工作,要求你對(duì)HTML和CSS都有相當(dāng)?shù)牧私狻?/p>

最后,如果網(wǎng)頁(yè)最上方的文檔聲明不是”!DOCTYPE html“,則肯定不是HTML5。


網(wǎng)站名稱:springhtml5,Spring5
當(dāng)前網(wǎng)址:http://weahome.cn/article/dsceoop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部