更新時間:2022-10-20 09:22:50 來源:動力節點 瀏覽1037次
Struts2 配置過濾器,他跟Result是一個地位,也是在action里面可以配置的
<struts>
<package name="test" extends="struts-default">
<interceptors>
這是自定義的過濾器
<interceptor name="myInter" class="com.interceptor.myInterceptor">
</interceptor>
<interceptor-stack name="defaultStack">
<interceptor-ref name="token" />
<interceptor-ref name="defaultStack"></interceptor-ref>
將自定的過濾器添加到棧里面,不將這個加到棧里面,會出現前段的參數傳遞不過來
<interceptor-ref name="myInter"></interceptor-ref>
</interceptor-stack>
<!--
這個是我自己定義一個棧,將默認的棧放到我自己定義的棧中
<interceptor-stack name="myStack">
<interceptor-ref name="token" />
<interceptor-ref name="defaultStack" />
<interceptor-ref name="myInter" />
</interceptor-stack> -->
</interceptors>
</package>
</struts>
接受請求的ACtion類
package com.act;
import javax.interceptor.Interceptor;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("test")
public class FilterTestAct extends ActionSupport{
private String msg;
private Integer id;
private String money;
private String msg1;
@Override
//我是用的是默認的defaultStack這個所以我注釋了/*,interceptorRefs={@InterceptorRef("myStack")}*/這句代碼
@Action(value="test",results={@Result(location="index.jsp")}/*,interceptorRefs={@InterceptorRef("myStack")}*/)
public String execute() throws Exception {
// TODO Auto-generated method stub
msg="Action+done!"+id;
return SUCCESS;
}
@Action(value="pay",results={@Result(location="index.jsp"),@Result(name="invalid.token" ,location="err.jsp")}/*,interceptorRefs={@InterceptorRef("myStack")}*/)
public String pay(){
msg1=money;
return SUCCESS;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
public String getMsg1() {
return msg1;
}
public void setMsg1(String msg1) {
this.msg1 = msg1;
}
}
package com.interceptor;
import java.util.Random;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class myInterceptor extends AbstractInterceptor{
private Random random=new Random();
private int ss=5000;
@Override
public String intercept(ActionInvocation arg0) throws Exception {
long beginTimer=System.currentTimeMillis();
Thread.currentThread().sleep(random.nextInt(5)*1000);
//攔截通過
String relcode=arg0.invoke();
System.out.println("處理時間"+(System.currentTimeMillis()-beginTimer));
//用來判斷攔截是否給通過
return relcode;
}
}
然后是傳到過濾器里面:
在invoke上面的打印會在action之前處理
在invoke下面的打印會在action之后處理
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習