国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Struts2教程:攔截器概述

開發 后端
本文為Struts2教程,本部分為攔截器概述。Struts2雖然在大版本號上是第二個版本,但基本上在配置和使用上已經完全顛覆了Struts1.x的方式。

Struts2的攔截器和Servlet過濾器類似。在執行Action的execute方法之前,Struts2會首先執行在struts.xml中引用的攔截器,在執行完所有引用的攔截器的intercept方法后,會執行Action的execute方法。

Struts2攔截器類必須從com.opensymphony.xwork2.interceptor.Interceptor接口繼承,在Intercepter接口中有如下三個方法需要實現:

  1. void destroy();  
  2. void init();  
  3. String intercept(ActionInvocation invocation) throws Exception; 

其中intercept方法是攔截器的核心方法,所有安裝的攔截器都會調用之個方法。在Struts2中已經在struts-default.xml中預定義了一些自帶的攔截器,如timer、params等。如果在< package>標簽中繼承struts-default,則當前package就會自動擁有struts-default.xml中的所有配置。代碼如下:

< package name="demo" extends="struts-default" > ... < /package>

在struts-default.xml中有一個默認的引用,在默認情況下(也就是< action>中未引用攔截器時)會自動引用一些攔截器。這個默認的攔截器引用如下:

  1. < default-interceptor-ref name="defaultStack"/> 
  2.  
  3. < interceptor-stack name="defaultStack">     
  4.     < interceptor-ref name="exception"/> 
  5.     < interceptor-ref name="alias"/> 
  6.     < interceptor-ref name="servletConfig"/> 
  7.     < interceptor-ref name="prepare"/> 
  8.     < interceptor-ref name="i18n"/> 
  9.     < interceptor-ref name="chain"/> 
  10.     < interceptor-ref name="debugging"/> 
  11.     < interceptor-ref name="profiling"/> 
  12.     < interceptor-ref name="scopedModelDriven"/> 
  13.     < interceptor-ref name="modelDriven"/> 
  14.     < interceptor-ref name="fileUpload"/> 
  15.     < interceptor-ref name="checkbox"/> 
  16.     < interceptor-ref name="staticParams"/> 
  17.     < interceptor-ref name="params"> 
  18.         < param name="excludeParams">dojo\..*< /param> 
  19.     < /interceptor-ref> 
  20.     < interceptor-ref name="conversionError"/> 
  21.     < interceptor-ref name="validation"> 
  22.            < param name="excludeMethods">input,back,cancel,browse< /param> 
  23.      < /interceptor-ref> 
  24.      < interceptor-ref name="workflow"> 
  25.             < param name="excludeMethods">input,back,cancel,browse< /param> 
  26.      < /interceptor-ref> 
  27. < /interceptor-stack> 

上面在defaultStack中引用的攔截器都可以在< action>中不經過引用就可以使用(如果在< action>中引用了任何攔截器后,要使用在defaultStack中定義的攔截器,也需要在< action>中重新引用,在后面將詳細講解)。

下面我們來看幾個簡單的攔截器的使用方法。

一、記錄攔截器和execute方法的執行時間(timer)

     timer是Struts2中最簡單的攔截器,這個攔截器對應的類是com.opensymphony.xwork2.interceptor.TimerInterceptor。它的功能是記錄execute方法和其他攔截器(在timer后面定義的攔截器)的intercept方法執行的時間總和。如下面的配置代碼所示:

  1. < action name="first" class="action.FirstAction"> 
  2.     < interceptor-ref name="logger"/> 
  3.     < interceptor-ref name="timer" /> 
  4. < /action> 

由于在timer后面沒有其他的攔截器定義,因此,timer只能記錄execute方法的執行時間,在訪問first動作時,會在控制臺輸出類似下面的一條信息:

信息: Executed action [/test/first!execute] took 16 ms.

在使用timer攔截器時,需要commons-logging.jar的支持。將logger引用放到timer的后面,就可以記錄logger攔截器的intercept方法和Action的execute方法的執行時間總和,代碼如下:

  1. < action name="first" class="action.FirstAction"> 
  2.     < interceptor-ref name="timer" /> 
  3.     < interceptor-ref name="logger"/> 
  4. < /action> 

大家可以使用如下的Action類來測試一下timer攔截器:

  1. package action;  
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.  
  5. public class FirstAction extends ActionSupport            
  6.  
  7. {  
  8.        public String execute() throws Exception  
  9.  
  10.        {  
  11.            Thread.sleep(1000); // 延遲1秒  
  12.            return null;  
  13.        }  
  14.  
  15. }  

如果只記錄execute方法的執行時間,一般會輸出如下的信息:

信息: Executed action [/test/first!execute] took 1000 ms.

二、通過請求調用Action的setter方法(params)

當客戶端的一個form向服務端提交請求時,如有一個textfield,代碼如下:

  1. < s:form action="first" namespace="/test"> 
  2.    < s:textfield name="name"/> 
  3.    < s:submit/> 
  4. < /s:form> 

在提交后,Struts2將會自動調用first動作類中的setName方法,并將name文本框中的值通過setName方法的參數傳入。實際上,這個操作是由params攔截器完成的,params對應的類是com.opensymphony.xwork2.interceptor.ParametersInterceptor。由于params已經在defaultStack中定義,因此,在未引用攔截器的< action>中是會自動引用params的,如下面的配置代碼,在訪問first動作時,Struts2是會自動執行相應的setter方法的。

< action name="first" class="action.FirstAction">

    ... ...

< /action>

但如果在< action>中引用了其他的攔截器,就必須再次引用params攔截器,Struts2才能調用相應的setter方法。如下面的配置代碼所示:

  1. < action name="first" class="action.FirstAction"> 
  2.     < interceptor-ref name="timer" /> 
  3.     < interceptor-ref name="params"/> 
  4. < /action> 

三、通過配置參數調用Action的setter方法(static-params)

static-params攔截器可以通過配置< params>標簽來調用Action類的相應的setter方法,static-params攔截器對應的類是com.opensymphony.xwork2.interceptor.StaticParametersInterceptor。
    下面配置代碼演示了如何使用static-params攔截器:

  1. < action name="first" class="action.FirstAction"> 
  2.     < interceptor-ref name="timer" /> 
  3.     < param name="who">比爾< /param> 
  4.     < interceptor-ref name="params"/> 
  5.     < interceptor-ref name="static-params"/> 
  6. < /action> 

如果first動作使用上面的配置,在訪問first動作時,Struts2會自動調用setWho方法將“比爾”作為參數值傳入setWho方法。

四、使用攔截器棧

為了能在多個動作中方便地引用同一個或幾個攔截器,可以使用攔截器棧將這些攔截器作為一個整體來引用。攔截器棧要在< package>標簽中使用< interceptors>和子標簽< interceptor-stack>來定義。代碼如下:

  1. < package name="demo" extends="struts-default" > 
  2.     < interceptors> 
  3.         < interceptor-stack name="mystack"> 
  4.             < interceptor-ref name="timer" /> 
  5.             < interceptor-ref name="logger" /> 
  6.             < interceptor-ref name="params" /> 
  7.             < interceptor-ref name="static-params" /> 
  8.         < /interceptor-stack> 
  9.     < /interceptors> 
  10.  
  11.     < action name="first" class="action.FirstAction"> 
  12.         < param name="who">比爾< /param> 
  13.         < interceptor-ref name="mystack"/>              
  14.     < /action> 
  15. < /package> 

可以象使用攔截器一樣使用攔截器棧,如上面代碼所示。

【編輯推薦】

  1. Struts2教程:上傳任意多個文件
  2. Struts2教程:在Action類中獲得HttpServletResponse對象
  3. Struts2教程:使用Validation框架驗證數據
  4. Struts2教程:使用validate方法驗證數據
  5. Struts2教程:struts.xml常用配置解析
責任編輯:yangsai 來源: BlogJava
相關推薦

2009-02-04 14:19:38

2009-06-25 15:59:21

Struts2教程攔截器

2009-02-04 14:45:06

2009-06-04 08:01:25

Struts2攔截器原理

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-02-04 10:51:07

2009-06-03 14:19:34

Struts2Guice

2009-06-25 16:04:30

2009-06-25 15:26:25

Struts2教程struts.xml常

2010-05-10 15:06:37

Oracle stru

2009-02-04 15:04:13

2009-06-25 15:50:03

Struts2教程上傳任意多個文件

2009-07-29 09:54:34

struts2和str

2010-01-06 14:36:04

JSON插件

2009-02-04 11:37:15

2009-02-04 14:00:59

2009-06-25 15:37:12

Struts2教程Validation框

2009-06-25 15:33:12

Struts2教程使用validate驗證數據

2009-02-04 13:13:03

2009-06-04 08:53:57

struts2視頻教程
點贊
收藏

51CTO技術棧公眾號

欧美黄色录像| 成人app下载| 亚洲黄色有码视频| 日本中文字幕网址| 成人综合一区| 深夜福利国产精品| 国产黄色免费在线观看| 国产欧美日韩精品在线| 台湾成人av| 亚洲人成免费网站| 57pao国产成人免费| 日韩免费福利视频| 欧美午夜精品一区| 日本按摩中出| 久久久久国产精品人| 亚洲免费视频播放| 99视频一区| 成人精品视频久久久久| 成人动态视频| 久久精品成人动漫| 国产亚洲成av人片在线观看| 欧美亚洲动漫精品| 天海翼一区二区三区四区在线观看| 99视频一区二区| 色涩成人影视在线播放| 欧美一区二区三区久久精品茉莉花| 欧美激情一区二区三区在线视频观看| 国产免费拔擦拔擦8x在线播放 | bbw在线视频| 色视频欧美一区二区三区| www.99re.av| 国产农村妇女毛片精品久久麻豆| 老司机午夜网站| 蜜桃av噜噜一区二区三区小说| 国产精品嫩草在线观看| 亚洲综合五月| 91美女高潮出水| 成人中文视频| 成人免费观看a| 91中文字幕精品永久在线| 国产成人精品在线播放| 西瓜成人精品人成网站| 日韩免费观看网站| 亚洲精品白浆高清| 日本成人免费在线| 欧美禁忌电影| 国产精品永久在线| 久久久久蜜桃| 国产尤物99| 久久免费高清| 日本不卡一区二区三区四区| 国产一区二区三区日韩 | 国产精品白丝jk白祙| 综合久久一区| 国产91亚洲精品一区二区三区| 国产专区一区| 欧洲久久久久久| 精品亚洲porn| 欧美一级爱爱视频| 欧美国产1区2区| 真不卡电影网| 7777精品伊人久久久大香线蕉的| 精品麻豆一区二区三区 | 欧美午夜激情视频| 成年人在线观看网站| 在线成人免费视频| 伊人久久综合一区二区| 欧美日韩高清在线观看| 任你躁在线精品免费| 国产精品久久一区| 亚洲国产mv| 永久免费看av| 亚洲人一二三区| 久久久久久久久免费视频| 亚洲欧美国产va在线影院| 国产欧美三级电影| 国产伦精品一区二区三区照片| 国内欧美视频一区二区| 四虎国产精品成人免费4hu| 日本韩国视频一区二区| 性感女国产在线| 琪琪亚洲精品午夜在线| 亚洲深夜影院| 波多野结衣家庭教师视频| 亚洲h在线观看| av剧情在线观看| 91精品国产一区| 久久久久国产精品一区三寸| 欧美性久久久久| 无吗不卡中文字幕| 中文字幕在线免费观看视频| 日本不卡免费高清视频| 欧美96一区二区免费视频| 人人做人人爽| 日韩av在线免费| 国产精品一区二区三区av麻| 午夜一区二区三视频在线观看| 国产精品麻豆99久久久久久| 最新国产在线拍揄自揄视频| 97色在线观看免费视频| 日韩精品久久久久久| 一区二区xxx| 精品欧美乱码久久久久久1区2区| 欧美三级自拍| 中文字幕人成一区| 在线视频你懂得一区二区三区| 动漫一区二区三区| 日韩av大全| 亚洲国产三级在线| 日本免费成人| 日产中文字幕在线精品一区| 亚洲精品成人a在线观看| 小黄鸭精品aⅴ导航网站入口| 国产精品视频不卡| 久久综合久久综合九色| 免费在线看电影| 国产区亚洲区欧美区| 92国产精品观看| 美女扒开腿让男人桶爽久久软| 亚洲a区在线视频| 一区精品在线播放| 国产91在线精品| 一区二区成人国产精品| 欧美少妇性性性| 97视频精品| 国产福利在线播放| 欧美老肥婆性猛交视频| 国产一级精品在线| 亚洲妇熟xxxx妇色黄| 亚洲va国产va天堂va久久| 国产精品电影一区二区三区| 久久爱.com| 天堂а√在线中文在线| 日韩一级完整毛片| 日韩午夜黄色| 男同在线观看| 国产免费一区二区三区在线观看 | 一本久久综合亚洲鲁鲁五月天| 久久wwww| 亚洲精品无码国产| 国产丝袜一区二区三区| 免费视频一区二区三区在线观看| 宅男宅女性影片资源在线1| 136fldh精品导航福利| 国产日韩欧美不卡在线| 成人做爰免费视频免费看| 亚洲欧美国产精品桃花| 日韩亚洲欧美成人一区| 国产伦理一区| a黄色在线观看| 99电影网电视剧在线观看| 亚洲成人精品一区| 精品在线手机视频| 免费国产视频| 国产精品自拍偷拍| 欧美网站在线观看| 欧美a级在线| 成人综合影院| 国内一区二区三区在线视频| 在线亚洲免费视频| 日韩视频精品在线观看| 色呦呦在线观看视频| 亚洲一区二区免费视频软件合集| 亚洲福利视频网站| 狠狠色丁香久久婷婷综合_中| 久草成色在线| 日韩欧美一区二区在线观看| 亚洲第一视频网| 久久9热精品视频| 高清电影一区| 免费观看成人网| 欧洲永久精品大片ww免费漫画| 一区二区在线观看视频在线观看| 成人免费电影网址| 香蕉视频在线播放| 性欧美videosex高清少妇| 亚洲人成在线电影| 粉嫩久久99精品久久久久久夜| 国模大尺度视频一区二区| 丝袜制服影音先锋| av免费观看久久| 亚洲成avwww人| av电影天堂一区二区在线| 人人网欧美视频| 成人av电影观看| 国产精品国三级国产av| 91av在线播放| 欧美日韩三级一区| 极品少妇xxxx精品少妇| 久久综合偷偷噜噜噜色| 中文字幕在线观看| 日韩妆和欧美的一区二区| 久久精品99久久久香蕉| 亚洲成va人在线观看| 欧美亚洲自偷自偷| 91精品一久久香蕉国产线看观看 | 在线观看国产精品网站| 久88久久88久久久| 国产精品x8x8一区二区| 韩国三级av在线免费观看|