在 Struts2 中,通配符規則主要用于攔截 URL 并根據規則執行相應的操作。要自定義通配符規則,你需要遵循以下步驟:
com.opensymphony.xwork2.interceptor.Interceptor
接口的自定義攔截器類。在這個類中,你可以實現你需要的方法,例如 init()
, destroy()
和 intercept()
。import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class CustomInterceptor implements Interceptor {
@Override
public void init() {
// 初始化攔截器
}
@Override
public void destroy() {
// 銷毀攔截器
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// 在這里編寫你的攔截邏輯
return invocation.invoke();
}
}
struts.xml
)中配置你的自定義攔截器。在 <struts>
標簽內,添加一個 <package>
標簽來定義你的攔截器。然后,在 <package>
標簽內,添加一個 <interceptors>
標簽來定義你的自定義攔截器。最后,在 <interceptors>
標簽內,添加一個 <interceptor>
標簽來定義你的自定義攔截器類,并使用 name
屬性為其指定一個名稱。<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="customInterceptor" class="com.example.CustomInterceptor" />
</interceptors>
</package>
<action name="yourAction" class="com.example.YourAction">
<interceptor-ref name="customInterceptor" />
<result name="success">/success.jsp</result>
</action>
</struts>
struts.xml
文件中使用自定義攔截器來定義通配符規則。在 <action>
標簽內,使用 <interceptor-ref>
標簽引用你的自定義攔截器,并使用 name
屬性為其指定一個名稱。然后,使用 <result>
標簽定義成功時的結果頁面。例如,以下代碼展示了如何使用自定義攔截器來攔截 /custom/*
路徑下的所有請求:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="customInterceptor" class="com.example.CustomInterceptor" />
</interceptors>
<action name="customAction" class="com.example.CustomAction">
<interceptor-ref name="customInterceptor" />
<result name="success">/custom/success.jsp</result>
</action>
</package>
</struts>
這樣,當用戶訪問 /custom/*
路徑下的任何請求時,Struts2 會使用你的自定義攔截器來處理這些請求。在攔截器的 intercept()
方法中,你可以編寫自己的邏輯來處理這些請求。