• Struts2入门04


    四、Struts2拦截器

    1、创建拦截器类的3中方式

    方式一、实现Interceptor接口(不推荐)

    public class InterceptorD1 implements Interceptor {
    
        @Override
        public void destroy() {        
        }
    
        //拦截器第一种创建方式:实现Interceptor接口
        //拦截器生命周期:随项目的创建而创建,随项目关闭而关闭
        @Override
        public void init() {        
        }
    
        @Override
        public String intercept(ActionInvocation invocation) throws Exception {
            return null;
        }
    
    }

    方式二、继承AbstractInterceptor(不推荐)

    //创建方式2:继承AbstractInterceptor
        @Override
        public String intercept(ActionInvocation invocation) throws Exception 
        {
            
            return null;
        }

    方式三、继承MethodFilterInterceptor

    public class InterceptorD3 extends MethodFilterInterceptor {
    
        //创建方式3:继承MethodFilterInterceptor
        //功能:定制拦截的方法。
        //定制哪些方法需要拦截
        //定制哪些方法不需要拦截
        @Override
        protected String doIntercept(ActionInvocation invocation) throws Exception 
        {
            
            return null;
        }
    
    }

    2、拦截器放行与不放行

    放行:

    在拦截器类中调用:invocation.invoke()继续调用递归链实现放行

    invocation.invoke()最终会返回Action中的result结果字符,

    故在放行的时候需要将结果字符放回:return invocation.invoke();

    不放行:

    不放行的话就不执行invocation.invoke()

    并返回一个自定义结果字符用于提示为什么不放行

     

    3、注册配置拦截器,自定义需要被拦截的方法或者不需要被拦截的方法

    如果忘记如何配置,可以在struts2核心包下的struts-default.xml中找到struts-default这个package进行查看如何配置

    配置拦截器步骤:

      1、注册拦截器

      2、配置拦截器栈

      3、设置包中的默认拦截器栈

    在将自定义拦截器加入拦截器栈后,可以配置拦截方法

    excludeMehods:不需要被拦截的方法

    includeMethods:需要被拦截的方法

    <?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="inter" extends="struts-default" namespace="/">
        
            <interceptors>
            <!-- 注册拦截器 -->
                <interceptor name="MInter" class="InterceptorD.MyInterceptor"></interceptor>
                
                <!-- 配置拦截器栈 -->
                <interceptor-stack name="MyInter">                
                    <interceptor-ref name="MInter">
                        <param name="excludeMethods">add,update</param>
                        <!--自定义的方法拦截<param name="includeMethods"></param>-->
                    </interceptor-ref>
                    <!-- 建议是将自定义拦截器放在默认拦截器之前 -->
                    <interceptor-ref name="defaultStack"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <!-- 配置默认拦截器栈 -->
            <default-interceptor-ref name="MyInter"></default-interceptor-ref>
            
            <!-- 配置全局结果集 -->
            <global-results>
                <result name="error">/error.jsp</result>
            </global-results>
            
            <action name="Inet_*" class="InterceptorD.ITestAction" method="{1}">
                <result name="success" type="redirect">/InterceptorD.jsp</result>
            </action>
        </package>
    
    </struts>

    4、Struts2常用页面标签

    需要在JSP页面引入Struts2标签库

     <%@taglib prefix="s" uri="/struts-tags" %>

    s:iterator 遍历标签

    <s:iterator value="#list">
        <s:property/>
    </s:iterator>
    
    <s:iterator value="#list" var="user">
        <s:property value="#user.name"/>
        <s:property value="#user.age"/>
    </s:iterator>
    
    <s:iterator begin="1" end="100" step="2">
        <s:property/>
    </s:iterator>

    s:property 数据标签

    <s:property value="#lsit.size()"/>
    <s:property value="#session.user.name"/>

    s:if/else if /else

    <s:if test="#session.user.name=zhangsan" >
        <h2>hello zhangsan</h2>
    </s:if>
    <s:elseif test="#session.user.name.length>3">
        <h2>hello >3</h2>
    </s:elseif>
    <s:else>
        hello 
    </s:else>
  • 相关阅读:
    Asp.Net中virtual、override理解
    SQL 知道字段名 全表搜索此字段属于哪个表
    C#中(int)a和Convert.ToInt32(a)的区别
    sql 查询表共多少列
    理解字节和字符
    C# IIS7.0+ Web.Config 配置Session过期时间
    Java版的扫雷游戏源码
    Activiti6.0教程 28张表解析 (三)
    Activiti6.0教程 Service用途剖析 (二)
    Activiti6.0教程 Eclipse安装Activiti Diagram插件(一)
  • 原文地址:https://www.cnblogs.com/harriets-zhang/p/13450866.html
Copyright © 2020-2023  润新知