国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Struts2攔截器

dendoink / 2852人閱讀

摘要:自定義的攔截器可以和框架內(nèi)置的攔截器進(jìn)行混合使用,一般情況攔截器都被默認(rèn)配置成為執(zhí)行的基礎(chǔ)。若類型轉(zhuǎn)換失敗,或者數(shù)據(jù)驗(yàn)證失敗,攔截器就會(huì)阻止的執(zhí)行。

1.攔截器簡(jiǎn)介

默認(rèn)的攔截器在設(shè)計(jì)的時(shí)候就能滿足大部分的應(yīng)用,所以很多時(shí)候就不需要添加自定義的攔截器或者修改攔截器棧。很多action有各種各樣的需求,比如輸入驗(yàn)證、文件上傳、防止多次提交等等。于是struts框架就提供了一個(gè)解決方案,Interceptor策略。當(dāng)你請(qǐng)求一個(gè)action時(shí),在執(zhí)行當(dāng)前action之前,會(huì)執(zhí)行攔截,執(zhí)行完action之后會(huì)再次進(jìn)行攔截。這個(gè)過(guò)程通稱為攔截器。

由于攔截器在action執(zhí)行前后都會(huì)被執(zhí)行,所以struts2的框架的核心功能大部分都作為攔截器進(jìn)行實(shí)現(xiàn),比如類型轉(zhuǎn)換、數(shù)據(jù)驗(yàn)證等等,并且這些功能都是可插拔的,所以在使用時(shí)可以決定action使用哪些功能。自定義的攔截器可以和框架內(nèi)置的攔截器進(jìn)行混合使用,一般情況攔截器都被默認(rèn)配置成為action執(zhí)行的基礎(chǔ)。若類型轉(zhuǎn)換失敗,或者數(shù)據(jù)驗(yàn)證失敗,攔截器就會(huì)阻止action的執(zhí)行。

2.攔截器配置

在大部分應(yīng)用中,如果會(huì)多次使用同一系列的攔截器,可以將這些攔截器進(jìn)行整理,聚合成Interceptor Stack


   
        
        
        
           
           
        
    
 

         
         login.jsp
         /secure/home

struts2框架默認(rèn)的攔截器在struts2-core-2.3.24.1.jar包中的struts-default.xml中。

Interceptor Name Description
Alias Interceptor alias 允許參數(shù)在跨越多個(gè)請(qǐng)求時(shí)使用不同別名,這個(gè)攔截器可將多個(gè)action使用不同名字鏈接起來(lái),然后用于處理同一信息
Chaining Interceptor chain 允許當(dāng)前action能夠使用上一個(gè)被執(zhí)行action的屬性,這個(gè)攔截器通常要和“chain”結(jié)果類型一起使用(
Checkbox Interceptor checkbox 為沒(méi)有被選定的多選框增加一個(gè)值為false的參數(shù),協(xié)助管理多選框(在HTTP請(qǐng)求里,那些沒(méi)有被選定的多選框通常是沒(méi)有任何信息的
Cookie Interceptor cookie 使用配置的name,value來(lái)指定cookies
CookieProvider Interceptor cookieProvider 將cookies從action傳輸?shù)絩esponse
Conversion Error Interceptor conversionError 將轉(zhuǎn)換錯(cuò)誤的信息(包括轉(zhuǎn)換的字符串和參數(shù)類型等)存放到action的字段錯(cuò)誤集里去
Create Session Interceptor createSession 自動(dòng)創(chuàng)建一個(gè)HttpSession會(huì)話(如果會(huì)話不存在),用來(lái)為需要使用到HttpSession的攔截器服務(wù)
DebuggingInterceptor debugging 當(dāng)使用Struts2的開(kāi)發(fā)模式時(shí),此攔截器會(huì)提供更多的調(diào)試信息,為開(kāi)發(fā)者提供幾種不同調(diào)試界面
DeprecationInterceptor deprecation 當(dāng)devMode設(shè)置為on,會(huì)將所有未知或過(guò)時(shí)的設(shè)置打上log
Execute and Wait Interceptor execAndWait 當(dāng)action在后臺(tái)執(zhí)行時(shí),給用戶顯示一個(gè)過(guò)渡性的等待頁(yè)面
Exception Interceptor exception 將action拋出的異常映射到結(jié)果,這樣就通過(guò)重定向來(lái)自動(dòng)處理異常,一般情況下,應(yīng)該為最后一個(gè)攔截器
File Upload Interceptor fileUpload 此攔截器主要用于文件上傳,它負(fù)責(zé)解析表單中文件域的內(nèi)容
I18n Interceptor i18n 這是支持國(guó)際化的攔截器,它負(fù)責(zé)把所選的語(yǔ)言、區(qū)域放入用戶Session中
Logger Interceptor logger 通過(guò)輸出被執(zhí)行action的名字,提供簡(jiǎn)單的日志功能,記錄用于追蹤的信息(可位于攔截器序列的不同位置)
Message Store Interceptor store 在會(huì)話中為action存儲(chǔ)和檢索消息、字段錯(cuò)誤以及action錯(cuò)誤,該攔截器要求action實(shí)現(xiàn)ValidationAware接口
Model Driven Interceptor modelDriven 這是一個(gè)用于模型驅(qū)動(dòng)的攔截器,當(dāng)某個(gè)Action類實(shí)現(xiàn)了ModelDriven接口時(shí),它負(fù)責(zé)把getModel()方法的結(jié)果放入ValueStack中
Scoped Model Driven Interceptor scopedModelDriven 如果一個(gè)Action實(shí)現(xiàn)了一個(gè)ScopedModelDriven接口,該攔截器負(fù)責(zé)從指定生存范圍中找出指定的Modol,并將通過(guò)setModel方法將該Model傳給Action實(shí)例
Parameters Interceptor params 這是最基本的一個(gè)攔截器,它負(fù)責(zé)解析HTTP請(qǐng)求中的參數(shù),并將參數(shù)值設(shè)置成Action對(duì)應(yīng)的屬性值
Prepare Interceptor prepare 如果action實(shí)現(xiàn)Preparable接口,將會(huì)調(diào)用該攔截器的prepare()方法
Scope Interceptor scope 這是范圍轉(zhuǎn)換攔截器,它可以將Action狀態(tài)信息保存到HttpSession范圍,或者保存到ServletContext范圍內(nèi)。
Servlet Config Interceptor servletConfig 如果某個(gè)Action需要直接訪問(wèn)ServletAPI,就是通過(guò)這個(gè)攔截器實(shí)現(xiàn),它提供訪問(wèn)HttpServletRequest和HttpServletResponse的方法,以map的方式訪問(wèn)
Static Parameters Interceptor staticParams 設(shè)置action里的靜態(tài)定義值(通過(guò)action配置里的param標(biāo)簽來(lái)實(shí)現(xiàn));這個(gè)攔截器負(fù)責(zé)將struts.xml文件中標(biāo)簽下標(biāo)簽中的參數(shù)傳入action
Roles Interceptor roles 這是一個(gè)JAAS(Java Authentication and Authorization Service,Java授權(quán)和認(rèn)證服務(wù))攔截器,只有當(dāng)瀏覽者取得合適的授權(quán)后,才可以調(diào)用被該攔截器攔截的Action
Timer Interceptor timer 以執(zhí)行action所花時(shí)間的形式,簡(jiǎn)單記錄action概要信息,此攔截器負(fù)責(zé)輸出Action的執(zhí)行時(shí)間,可以利用此攔截器分析該Action的性能瓶頸
Token Interceptor token 以執(zhí)行action所花時(shí)間的形式,簡(jiǎn)單記錄action概要信息,此攔截器負(fù)責(zé)輸出Action的執(zhí)行時(shí)間,可以利用此攔截器分析該Action的性能瓶頸
Token Session Interceptor tokenSession 和Token類似,但是遇到無(wú)效的token會(huì)將提交數(shù)據(jù)保存到session中
Validation Interceptor validation 通過(guò)執(zhí)行在xxxAction-validation.xml中定義的校驗(yàn)器,從而完成數(shù)據(jù)校驗(yàn)。
Default Workflow Interceptor workflow 為action定義默認(rèn)的工作流,一般跟在validation等其他攔截器后,當(dāng)驗(yàn)證失敗時(shí),不執(zhí)行action然后重定向到INPUT視圖
Parameter Filter Interceptor N/A 控制action對(duì)參數(shù)的訪問(wèn)(非默認(rèn)配置
Profiling Interceptor profiling 允許action記錄簡(jiǎn)單的概要信息日志
Multiselect Interceptor multiselect 當(dāng)一個(gè)select標(biāo)簽設(shè)置成多選后(就是你寫(xiě)的這種),沒(méi)有一個(gè)option被選中的時(shí)候,會(huì)自動(dòng)設(shè)置一個(gè)空值
3.自定義攔截器

所有的攔截器都必須實(shí)現(xiàn)com.opensymphony.xwork2.interceptor.Interceptor這個(gè)接口,如下:

public interface Interceptor extends Serializable {
 
    void destroy();
 
    void init();
 
    String intercept(ActionInvocation invocation) throws Exception;
}

struts2的每一個(gè)request會(huì)請(qǐng)求一個(gè)action,因此不用擔(dān)心線程安全問(wèn)題,但是Interceptor會(huì)在多個(gè)request的中使用,所以必須要保證線程安全。

我們自定義的攔截器可以繼承 AbstractInterceptor抽象類, AbstractInterceptor提供了一個(gè)而空的init和destory方法,若沒(méi)有實(shí)現(xiàn)這兩個(gè)方法的需求,可以直接重寫(xiě)intercept方法。

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 
public class SimpleInterceptor extends AbstractInterceptor {
 
    public String intercept(ActionInvocation invocation) throws Exception {
       MyAction action = (MyAction)invocation.getAction();
       action.setDate(new Date());
       return invocation.invoke();
    }
}

然后在struts2.xml文件中進(jìn)行配置

   
      
         
         
         ...
      
   

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/65726.html

相關(guān)文章

  • Struts2截器】就是這么簡(jiǎn)單

    摘要:文件上傳通過(guò)這個(gè)攔截器攔截器的設(shè)計(jì)就是基于組件設(shè)計(jì)的應(yīng)用再次回顧攔截器基礎(chǔ)在開(kāi)始講解的時(shí)候已經(jīng)說(shuō)明過(guò)了這個(gè)文件,它定義了的所有攔截器。由于我們配置了自定義攔截器,那么默認(rèn)的攔截器棧是不會(huì)執(zhí)行的。 什么是攔截器 攔截器Interceptor.....攔截器是Struts的概念,它與過(guò)濾器是類似的...可以近似于看作是過(guò)濾器 為什么我們要使用攔截器 前面在介紹Struts的時(shí)候已經(jīng)講解過(guò)了...

    chanjarster 評(píng)論0 收藏0
  • 面試題:SpringMVC和Struts2的區(qū)別

    摘要:的入口是,而是這里要指出,和是不同的。以前認(rèn)為是的一種特殊,這就導(dǎo)致了二者的機(jī)制不同,這里就牽涉到和的區(qū)別了。開(kāi)發(fā)效率和性能高于。的實(shí)現(xiàn)機(jī)制有以自己的機(jī)制,用的是獨(dú)立的方式。 1、Struts2是類級(jí)別的攔截, 一個(gè)類對(duì)應(yīng)一個(gè)request上下文,SpringMVC是方法級(jí)別的攔截,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),所以說(shuō)從架構(gòu)本身上SpringMVC...

    isaced 評(píng)論0 收藏0
  • Struts2開(kāi)發(fā)流程

    摘要:的開(kāi)發(fā)流程在文件中定義核心攔截用戶請(qǐng)求。的最大作用是配置和請(qǐng)求之間的對(duì)應(yīng)關(guān)系,并配置邏輯視圖名和物理視圖資源之間的相對(duì)關(guān)系,即返回結(jié)果和文件的物理位置的關(guān)系。實(shí)現(xiàn)為了使開(kāi)發(fā)的更規(guī)范,提供了一個(gè)接口,定義了的處理應(yīng)該實(shí)現(xiàn)的規(guī)范。 1.struts2的開(kāi)發(fā)流程 在web.xml文件中定義核心Filter攔截用戶請(qǐng)求。 struts2 org.apa...

    Leo_chen 評(píng)論0 收藏0
  • Struts2配置文件

    摘要:執(zhí)行中的方法,默認(rèn)執(zhí)行方法返回結(jié)果同樣會(huì)通過(guò)一系列攔截器,然后由指定的表現(xiàn)形式返回,比如,或字面值配置文件利用配置文件初始化一系列的相關(guān)資源,這個(gè)底層實(shí)現(xiàn)技術(shù)屬于依賴注入。會(huì)通過(guò)配置文件初始化的資源包括攔截器,類及。 1.Struts2簡(jiǎn)介 框架是一組程序的集合,包含了一系列的最佳實(shí)踐,作用是解決某個(gè)領(lǐng)域的問(wèn)題。本質(zhì)上來(lái)講,框架只是一個(gè)jar包,其本質(zhì)上是對(duì)jdk的擴(kuò)展。 最佳實(shí)踐:...

    jifei 評(píng)論0 收藏0
  • Struts2入門這一篇就夠了

    摘要:現(xiàn)在,我們使用了的話,那么框架內(nèi)部就能幫我們封裝了。每個(gè)中都有和這樣的方法,沒(méi)必要的。我們抽取出來(lái),通過(guò)配置文件來(lái)把這兩個(gè)方法替換掉,那么我們的程序就會(huì)更加優(yōu)雅了。于是乎,就應(yīng)運(yùn)而生了。因此,學(xué)習(xí)的時(shí)候,不了解是沒(méi)有任何關(guān)系的。 前言 這是Strtus的開(kāi)山篇,主要是引入struts框架...為什么要引入struts,引入struts的好處是什么,以及對(duì)Struts2一個(gè)簡(jiǎn)單的入門.....

    Scliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

dendoink

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<