Struts2进阶学习4
自定义拦截器的使用
核心配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="index" namespace="/" extends="struts-default" > <interceptors> <!-- 注册拦截器 --> <interceptor name="myInter3" class="com.struts2.interceptor.MyInterceptor3"/> <!-- 注册拦截器栈 --> <interceptor-stack name="myStack"> <!-- 自定义拦截器在默认之前(方便后面的拦截器对前面的也进行处理) --> <interceptor-ref name="myInter3"> <!-- 指定哪些方法不拦截 --> <!--<param name="excludeMethods">add,delete</param>--> <!-- 指定哪些方法需要拦截 --> <param name="includeMethods">add,delete</param> </interceptor-ref> <!-- 引入struts2自带的20个拦截器 --> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <!-- 指定默认拦截器 --> <default-interceptor-ref name="myStack"/> <action name="IndexAction_*" class="com.struts2.action.IndexAction" method="{1}" > <result name="success" type="dispatcher" >/index.jsp</result> </action> </package> <package name="tag" namespace="/" extends="struts-default"> <action name="DemoAction" class="com.struts2.action.DemoAction" method="page" > <result name="success" type="dispatcher" >/tag.jsp</result> </action> </package> </struts>
自定义拦截器的3种方式
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * @author: 肖德子裕 * @date: 2018/11/21 15:48 * @description: 自定义拦截器1 * 拦截器生命周期:随项目启动而创建,随项目关闭而销毁 */ public class MyInterceptor implements Interceptor { @Override public void init() { } @Override public String intercept(ActionInvocation actionInvocation) throws Exception { return null; } @Override public void destroy() { } }
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.Interceptor; /** * @author: 肖德子裕 * @date: 2018/11/21 15:48 * @description: 自定义拦截器2 */ public class MyInterceptor2 extends AbstractInterceptor { @Override public String intercept(ActionInvocation actionInvocation) throws Exception { return null; } }
package com.struts2.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; /** * @author: 肖德子裕 * @date: 2018/11/21 15:48 * @description: 自定义拦截器3 * MethodFilterInterceptor:方法过滤拦截器 */ public class MyInterceptor3 extends MethodFilterInterceptor { @Override protected String doIntercept(ActionInvocation actionInvocation) throws Exception { //前处理 System.out.println("before>>>"); //放行 actionInvocation.invoke(); //后处理 System.out.println("after>>>"); //跳转到成功页面 return "success"; } }
测试拦截器
package com.struts2.action; import com.opensymphony.xwork2.ActionSupport; /** * @author: 肖德子裕 * @date: 2018/11/21 15:45 * @description: 测试拦截器的使用 */ public class IndexAction extends ActionSupport { public String add(){ System.out.println("添加用户!"); return "success"; } public String delete(){ System.out.println("删除用户!"); return "success"; } public String update(){ System.out.println("修改用户!"); return "success"; } public String find(){ System.out.println("查找用户!"); return "success"; } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h2>I Love China</h2> </body> </html>
测试struts2标签的使用(了解)
package com.struts2.action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; import java.util.List; /** * @author: 肖德子裕 * @date: 2018/11/21 19:34 * @description: 测试struts2标签的使用 */ public class DemoAction extends ActionSupport { public String page(){ List<String> list=new ArrayList<>(); list.add("xdzy"); list.add("xdzy"); list.add("xdzy"); list.add("xdzy"); ActionContext.getContext().put("list",list); return SUCCESS; } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Title</title> </head> <body> <!-- 循环遍历 --> <s:iterator value="#list"> <s:property/><br> </s:iterator> <hr> <s:iterator value="#list" var="name"> <s:property value="#name"/><br> </s:iterator> <hr> <s:iterator begin="1" end="100" step="1"> <s:property/>| </s:iterator> <!-- if,else --> <s:if test="#list.size()==4"> list长度为4 </s:if> <s:elseif test="#list.size()==3"> list长度为3 </s:elseif> <s:else> 默认为0 </s:else> </body> </html>