欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Struts2中的攔截器與過濾器學習

      時間:2019-05-12 02:51:43下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《Struts2中的攔截器與過濾器學習》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Struts2中的攔截器與過濾器學習》。

      第一篇:Struts2中的攔截器與過濾器學習

      攔截器是在面向切面編程的就是在你的service或者一個方法,前調(diào)用一個方法,或者在方法后調(diào)用一個方法,比如動態(tài)代理就是攔截器的簡單實現(xiàn),過濾器是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數(shù),然后再傳入servlet或者struts的 action進行業(yè)務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統(tǒng)一設置字符集,或者去除掉一些非法字符。

      攔截器與過濾器的區(qū)別:

      1、攔截器是基于java的反射機制的,而過濾器是基于函數(shù)回調(diào)

      2、過濾器依賴與servlet容器,而攔截器不依賴與servlet容器

      3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用

      4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能

      5、在action的生命周期中,攔截器可以多次被調(diào)用,而過濾器只能在容器初始化時被調(diào)用一次

      過濾器

      也就是寫一個自己的類,讓這個類實現(xiàn)于Filter這個接口,這個接口里有三個方法。

      init(),doFilter(),destroy();主要是對doFilter()進行操作,你可以在這個方法里寫你想進行的操作.寫完這些之后,就是在web.xml里的配置了

      myFilter 包名+實現(xiàn)Filter接口的類 myFilter /*

      里面設置了/*之后,也就是說在進行每一個操作時都會自動去執(zhí)行自定義的filter里的doFilter方法里的代碼.這樣就可以進行相應的過濾操作了。攔截器

      1、定義攔截器

      a.方法一:實現(xiàn)Interceptor接口

      public class MyInterceptor implements Interceptor { private String hello;//定義帶參數(shù)的攔截器 public String getHello(){ return hello;} public void setHello(String hello){ this.hello = hello;} public void destroy(){ // TODO Auto-generated method stub System.out.println(“destroy”);} @Override public void init(){ //服務器啟動時自動加載一次 System.out.println(“init”);System.out.println(“hello”);} @Override public String intercept(ActionInvocation arg0)throws Exception { System.out.println(“inercept”);String result=arg0.invoke();System.out.println(“finish”);return result;} } b.方法二:繼承AbstractInterceptor類

      public class MyInterceptor2 extends AbstractInterceptor { @Override public String intercept(ActionInvocation arg0)throws Exception { System.out.println(“intercept2”);String result=arg0.invoke();System.out.println(“finish2”);return result;} } c.方法三:繼承MethodFilterInterceptor類,定義過濾方法的攔截器 public class MyInterceptor3 extends MethodFilterInterceptor { //過濾方法的攔截器 @Override protected String doIntercept(ActionInvocation arg0)throws Exception { arg0.addPreResultListener(new MyListener());//將監(jiān)聽器注冊到里面

      System.out.println(“myinterceptor3”);String result=arg0.invoke();System.out.println(“after myinterceptor3 ”);return result;} }

      2、配置攔截器

      一旦實現(xiàn)了上面的攔截器,就可以在所有需要實現(xiàn)控制的Action中復用上面的攔截器。為了使用該攔截器,首先在struts.xml文件中定義該攔截器,定義攔截器的配置片段如下:

      world -->

      3、應用攔截器

      /success.jsp /register2.jsp

      第二篇:Struts2核心攔截器---學習筆記

      Struts2的核心——攔截器

      在struts2中,攔截器(Interceptor)是其核心的組件,當我們訪問一個action時,我們可以通過攔截器的配置,做一些需要的操作。

      我們可以寫我們自己的攔截器,但是要實現(xiàn)或繼承struts2給我們提供的接口或類。

      ①.我們實現(xiàn)Interceptor接口,該接口是struts2提供的攔截器接口,位于com.opensymphony.xwork2.interceptor包下,其提供了類似與filter的一些方法,我們必須實現(xiàn)它的方法:destroy()、init()、intercept(ActionInvocation)。

      public class MyInterceptor implements Interceptor {

      public void destroy(){

      System.out.println(“destroy”);} public void init(){ } public String intercept(ActionInvocation invocation)throws System.out.println(“init”);Exception {

      System.out.println(“intercept”);

      String resultString= invocation.invoke();System.out.println(“finish”);return resultString;}

      ②.我們可以繼承AbstractInterceptor類,該類是一個抽象類,它位于com.opensymphony.xwork2.interceptor包下,它實現(xiàn)了Interceptor接口,并完成了對destroy()方法和init()方法的實現(xiàn),但保留了抽象方法interceptor(),以供自定義的攔截器來重寫其方法,完成特定的需求。

      public class MyInterceptor1 extends AbstractInterceptor {

      } @Override

      public String intercept(ActionInvocation invocation)throws

      System.out.println(“intercept1”);

      String result=invocation.invoke();

      System.out.println(“finish1”);Exception { return result;}

      ③.上面兩個是對action進行的攔截,粒度比較粗,當然struts2也給我們提供了對action中方法的攔截。這時,我們自己寫的類就要繼承struts

      2給我們提供的方法過濾類,該

      于MethodFilterInterceptor com.opensymphony.xwork2.interceptor包下,但該類已經(jīng)完成了對interceptor()方法的簡單實現(xiàn),而提供了一個doIntercept()方法。

      public class MyInterceptor2 extends MethodFilterInterceptor { @Override

      protected String doIntercept(ActionInvocation invocation)throws Exception {

      System.out.println(“methodFilterInterceptor2”);String result=invocation.invoke();System.out.println(“finish2”);

      return result;} }

      寫好了我們自己的攔截器類,還需要在struts.xml文件進行配置來告訴struts2框架,我們的攔截器要攔截的action、方法。

      首先,我們要在package包下增加一個新的元素標簽 ,在該標簽下,我們就可以定義我們自己寫的攔截器,如:

      class=“com.test.interceptor.MyInterceptor”>

      定義了一個name是myInterceptor的攔截器(即實現(xiàn)了Interceptor接口的那個攔截器),類似的,我們定義了上面我們已寫的3個攔截器。

      name=“myInterceptor”

      class=“com.test.interceptor.MyInterceptor”>

      請注意下面代碼,我們定義了(攔截器棧),在struts2中還有攔截器棧,一個攔截器棧中可以包含多個攔截器,當我們要在某一個action上進行多個攔截時,我們可以將其放入一個攔截器棧中,這樣在action中配置的時候,只需配置攔截器棧就可以了。

      name=“myInterceptor”>

      name=“myInterceptor1”>

      defaultStack這個攔截器棧是struts2,提供的一個默認攔截器棧,其中實現(xiàn)了一些常用功能,如:struts2的檢驗框架,當我們在聲明package時候會有extends屬性,其值為struts-default,而defaultStack就定義在struts-default包類,進而就被我們的package所繼承。

      name=“defaultStack”>

      在攔截器的配置中,我們可以為package配置一個默認的攔截器或攔截器棧,如果我們不指定,其值就為父包繼承下來的defaultStack。

      name=“myStack”>

      /result.jsp

      /login2.jsp /login2.jsp

      /output.jsp

      /success.jsp

      /register4.jsp

      /success.jsp /register2.jsp 我們在action中,對我們寫的攔截器進行配置,這里要注意,我們在配置自己寫的攔截器后,默認的攔截器,就不起作用了,如果還需要struts2默認的攔截器提供的功能,我們就要手動配置下了。另外,在攔截器中有

      標簽,可以對攔截器類中定義的屬性賦值,這里是告訴攔截器,只攔截abc()方法。

      abc

      第三篇:struts2攔截器--將用戶操作日志存入數(shù)據(jù)庫

      struts2攔截器--將用戶操作日志存入數(shù)據(jù)庫

      1.建表,如下所示:

      2.新建OperationLogModel.java,其具有上述屬性。3.自動生成PO 4.在struts.xml中配置攔截器:

      5.如下例子中的用戶登錄和修改密碼,要在相應xml文件中加入,即:

      index

      changePasswordPre

      6.在項目中新建文件夾log,在其下新建類LogInterceptor.java,如下: package com.bfw.crms.log;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import org.apache.struts2.ServletActionContext;import com.bfw.crms.action.BulletinAction;import com.bfw.crms.action.SystemAction;import com.bfw.crms.model.EmployeeModel;import com.bfw.crms.model.OperationLogModel;import com.bfw.crms.po.OperationLog;import com.bfw.crms.util.BeanUtil;import com.bfw.crms.util.DateTimeUtil;import com.ninetowns.framework.dao.ObjectDao;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;@SuppressWarnings(“serial”)

      public class LogInterceptor extends AbstractInterceptor{

      private String logName;

      private String logContent;

      protected Logger log = Logger.getLogger(getClass());

      protected HttpSession getSession()

      {

      return getRequest().getSession();

      }

      protected HttpServletRequest getRequest()

      {

      return ServletActionContext.getRequest();

      }

      public void init(){

      }

      private ObjectDao objectDao = null;

      public ObjectDao getObjectDao()

      {

      return objectDao;

      }

      public void setObjectDao(ObjectDao objectDao)

      {

      this.objectDao = objectDao;

      }

      @Override

      public String intercept(ActionInvocation ai)throws Exception

      {

      Object action= ai.getAction();

      String method= ai.getProxy().getMethod();

      try{

      if(StringUtils.isBlank(method))method = “method”;

      EmployeeModel sysUser(EmployeeModel)this.getSession().getAttribute(“employee”);

      String userName = “";

      if(sysUser!=null)userName = sysUser.getName();

      =

      String currentTime = DateTimeUtil.getDateTime();

      String logContentHead = ”用戶“+userName+currentTime;

      ai.invoke();//執(zhí)行被攔截action

      if(action instanceof BulletinAction){

      if(method.equals(”save“)){

      logName = ”保存部門“;

      logContent = logContentHead

      +”保存部門:“+ai.getStack().findValue(”sysOrg.orgName“);

      log.info(logContent);

      addSysLog(logName,logContent);

      }

      if(method.equals(”delete“)){

      logName = ”刪除部門“;

      logContent = logContentHead +”“+((String[])(ai.getStack().findValue(”flag_id“))).length+”條部門信息“;

      log.info(logContent);

      addSysLog(logName,logContent);

      }

      }

      if(actioninstanceof SystemAction){

      if(method.equals(”login“)){

      logName = ”登錄系統(tǒng)“;

      logContent = logContentHead;

      log.info(logContent);

      addSysLog(logName,logContent);

      }

      if(method.equals(”changePassword“)){

      logName = ”修改密碼“;

      logContent = logContentHead +”刪除1條單位信息";

      log.info(logContent);

      addSysLog(logName,logContent);

      }

      }

      }catch(Exception e){

      e.printStackTrace();

      }

      return Action.SUCCESS;

      }

      /**

      * 插入系統(tǒng)日志 model2po()

      * @param logName

      * @param logContent

      */

      刪除

      private void addSysLog(String logName,String logContent){

      OperationLogModel operationModel = new OperationLogModel();

      OperationLog operationPO = new OperationLog();

      operationModel.setOperation(logContent);

      BeanUtil.model2po(operationModel, operationPO);

      this.getObjectDao().saveObject(operationPO);

      }

      } OK

      第四篇:經(jīng)典文章學習——“過濾器理論”

      經(jīng)典文章學習——“過濾器理論”

      本公眾號將會陸續(xù)推出郝胖老師一系列經(jīng)典專欄(原文),希望大家能從中受益。本期推出交易的理想模型系列?!斑^濾器理論”(2012.10.18)1—————上周筆者提示了中期風險,并沒有明確提出反彈何時終結,本周走勢先抑后揚,關鍵看周五走勢能否放量突破2164,一旦突破2164,短期可看2234點。至于股票可以選擇江泉實業(yè)、星湖科技等這種底部扎實,向上突破有河寬的股票少量參與。

      2—————接下來繼續(xù)理想模型系列,本系列一發(fā)不可收拾,既是給大家講解技術分析,也是對自己多年交易經(jīng)驗的總結。今天講的是交易中的“過濾器”,這是關于選擇入場時機的理論?!缎率袌銎娌拧纷钕忍岢觥斑^濾器理論”,他認為任何技術分析方法都是根據(jù)價格來的,所有交易方法對價格的過濾相當于不同顏色的玻璃對價格的過濾。加里.斯密斯則在此基礎上提出“知覺過濾器”是各種情緒指標和技術指標,然而他沒有公布自己所鐘愛的指標。今天我將重點談談我所知道的那些“過濾器”。3—————技術分析者并非一介武夫,成功的技術分析大師多為具有哲學底蘊的藝術家,他們只是恰巧以交易謀生而已。索羅斯自創(chuàng)反身性理論,能夠洞悉人性的偏執(zhí),盡管他自稱為失敗的哲學家;江恩大師博學多才,試圖寫出價格走勢的數(shù)學原理,盡管他后來誤入神秘時空的怪圈?!傲績r時空”是技術分析的基本要素,很多過濾器也均以此展開。最常用的防范假突的過濾器就是時間過濾器和價格過濾器,“突破關鍵點位2到3個百分點”、“2到3天不回到關鍵點一下”則認確突破的有效性。當然今天要說的并非這些簡單的小技巧,而是一些交易大師的過濾器系統(tǒng)。

      4—————馬?。嫒A茲被認為是當代的杰西.利佛莫爾,這個天才的操盤手在9年的失敗交易生涯之后明白了交易的本質(zhì)。在認識到自己短線交易的性格之后,他選擇了以7個指標為組合的過濾器系統(tǒng),其中“騰落線”也是史丹溫斯坦常用的指標。當所有這些指標都健康時則入場交易,當其中一個與其它發(fā)生背離,則時刻警惕可能發(fā)生的不利情況,做好出場準備。你可能認為7個指標太多了,但據(jù)我了解還有用40個的。

      5—————馬丁的方法是由上而下,他更多是一個帽客,依靠手動計算每30分鐘重新評估一次市場的短線趨勢,他使用的指標大多是道瓊斯工業(yè)平均指數(shù)、紐約證券交易所股價凈變動、標普500等等宏觀指數(shù)。與此不同,亞歷山大·埃爾德的《以交易為生》(Trading for a living)則明確提出簡單易行的“三層過濾網(wǎng)”交易系統(tǒng),三重濾網(wǎng)的第一層是利用趨勢跟蹤指標來判斷長期趨勢。他最初設計的系統(tǒng)是用周線MACD柱來判斷趨勢,這個我不表態(tài),因為我個人就是依靠“123”法則來判斷趨勢,Macd不是可靠的技術。三重濾網(wǎng)的第二層濾網(wǎng)——市場波浪,利用震蕩指標來觀察日線圖。當周線趨勢向上時,利用日線下跌來尋找買點;當周線趨勢向下時,利用日線上漲來尋找放空點。三重濾網(wǎng)的第三層濾網(wǎng)——盤中突破,當周線趨勢上升而日線震蕩指標下降時,運用追蹤型買進技術。當周線趨勢下跌而日線振蕩指標上升時運用追蹤型賣出技術。說直白一點,他的思考來源于對周期與級別的思考,周線級別決定日線級別,日線級別決定30分鐘級別。國內(nèi)的朋友如果讀過纏師的遺著,對此不會陌生,纏師的《市場哲學的數(shù)學原理》濃墨重彩地描寫了如何通過級別來尋找安全買點。筆者在此提醒各位,沒有一定的市場經(jīng)驗不要看,因為對市場的判斷不是光靠技術就可以掌握的。

      6—————筆者曾經(jīng)根據(jù)史丹.溫斯坦和威廉.歐尼爾共同鐘愛的相對強度指標設計出“五級買賣點”理論,并根據(jù)它來就行交易。直到我以期貨交易為主才慢慢放棄這些市場跟蹤指標,因為期貨要求更加主動和積極,根據(jù)價格走勢直觀判斷即可。當然在文章的結尾我依然沒有透露自己的過濾器,因為我深深知道,交易沒有圣杯,它是不確定性的游戲。當你在心理上把它變?yōu)榇_定性,并且試圖通過學習來避免發(fā)生錯誤的時候,你已經(jīng)犯了一個最大的錯誤。切記法家集大成者韓非子所言“人主之患,莫與信人;信與人,則制與人?!痹诖讼M魑粚ふ疫m合自己性格的過濾器。

      第五篇:struts2配置文件中參數(shù)的傳遞

      struts2配置文件中參數(shù)的傳遞

      在Action中我們經(jīng)常會從這個Action跳轉(zhuǎn)到另一個Action中,如果只是簡單的跳轉(zhuǎn)那么很容易,只需在struts配置文件中添加一個result,如:/manager/managerInfo/account.jsp.result有一個type屬性,這里的type默認是dispatcher,但這種情況下action之間是不能發(fā)送請求的,這時我們就要用到redirect、redirect-action、chain,當要請求一個action時,可設定type的值為以上三個中的一個(他們的區(qū)別請參見blog.sina.com.cn/s/blog_56b7aaa10100eqs4.html),如:/manager/managerInfo/account.action.如果想在請求的過程中添加參數(shù)可以像超鏈接傳值一樣在最后用“xx?xx=xx”的形式來傳遞參數(shù).如:/manager/ managerInfo/account.action?參數(shù)名=參數(shù)值,如果這里的參數(shù)值不是一個固定值可以用“${參數(shù)值}”這種形式,需要注意的是這里的“參數(shù)值”在相應的Action中一定要提供get/set方法,否則將無法獲得參數(shù)值,當然這里也同樣可以取一個對象的某個屬性值即:${對象名.屬性名},假如我想取得一個帳戶的帳號:/manager/managerInfo/account.action?account.accountNO=${account.accountNO}.如果想傳遞多個參數(shù)用“&”符號來連接嗎?NO,因為用“&”會在XML語法檢查中報錯,所以將“&”用“&”來替換就行了!如:/manager/managerInfo/account.action?account.accountNO=${account.accountNO}&account.balance=${account.balance}.注:當使用type=“redirectAction”時,result中的.action(上面紅色標注的地方)可要可不要,但是當你要傳遞參數(shù)里,而且參數(shù)中含有中文字符時一定不要加.action,否則你的參數(shù)值是無法傳遞的,這是自己后來才發(fā)現(xiàn)的,大家有興趣的可以去試試...

      下載Struts2中的攔截器與過濾器學習word格式文檔
      下載Struts2中的攔截器與過濾器學習.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        struts2根據(jù)struts2完全學習手冊 自己總結

        一、struts2簡介 1 struts2的配置文件: (1)struts.xml 配置示例: HelloWorld /example (2)struts.properties配置文件 # # $Id: struts.properties 722328 2008-......

        struts2核心工作流程與原理(推薦閱讀)

        struts2核心工作流程與原理 收藏 這是Struts2官方站點提供的Struts 2 的整體結構。 一個請求在Struts2框架中的處理大概分為以下幾個步驟: 1. 客戶端提起一個(HttpServletR......

        Struts2國際化與亂碼不同的方法處理

        Struts2國際化 開發(fā)工具:MyEclipse 首先當然是建項目啦~ 我來說明一下文件的用處:Messages_en.properties 是存放的是英文屬性的 Messages_zh.properties 是存放的是中文屬性......

        CAD高梯度磁過濾器使用報告(中粵CAD-219)5篇

        CAD高梯度磁過濾器使用報告 隨著市場對軋制鋼板的需求與日俱增,對其質(zhì)量要求不斷提高,進而對軋機用乳化液的要求也越來越高,對乳化液的鐵粉含量的控制要求越來越精確,這就對凈化......

        學習中的苦與樂

        學習中的苦與樂 同學們常說:“學生時代是人生最痛苦的階段?!贝_實在理。清晨聞雞起舞,迎著晨風操練,伴著晨曦誦讀的是學生;晚上,更深夜靜,挑燈苦戰(zhàn)的也是學生。 伴隨著一年年的升......

        《在QC中學習與成長》

        在QC中學習與成長 5月31日,當我二次站在中國航天科技集團第九研究院2010~2011年度QC成果發(fā)表會頒獎臺上代表公司二項QC成果領取一等獎和二等獎時,之前大家完成QC報告的種種艱......

        學習中的成功與失敗

        學習中的成功與失敗 成功對于企業(yè)家來說財富;成功對于醫(yī)生來說是救死扶傷;而對我來說成績好就是成功。 剛升入這個陌生的學校時,我就面臨了一場考試,由于基礎知識不牢,我的成績有......

        學習中的苦與樂

        學習中的苦與樂 1.眾所周知,學習是一個磨練的過程,就必然是一個痛苦的過程,只有在痛苦中探索,在探索中前行,才能在前行中收獲成功的喜悅。中學生的學習目標往小了說是為了擴充知......