struts2学习2

拦截器

//拦截器:第一种创建方式
//拦截器生命周期:随项目的启动而创建,随项目关闭而销毁
public class MyInterceptor implements Interceptor {
    @Override
    //初始化方法
    public void init() {
        
    }
    @Override
    //拦截方法
    public String intercept(ActionInvocation arg0) throws Exception {
        return null;
    }

    @Override
    //销毁方法
    public void destroy() {
        
    }
}
//创建方式2: 继承AbstractInterceptor -> struts2的体贴
//帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法
public class MyInterceptor2 extends AbstractInterceptor {

    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        
        return null;
    }
}
//继承:MethodFilterInterceptor 方法过滤拦截器
//功能: 定制拦截器拦截的方法.
//    定制哪些方法需要拦截.
//    定制哪些方法不需要拦截
public class MyInterceptor3 extends MethodFilterInterceptor{

    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        //前处理
        System.out.println("MyInterceptor3 的前处理!");
        //放行
        String result = invocation.invoke();
        //后处理
        System.out.println("MyInterceptor3 的后处理!");
        
        return result;
    }

}
<package name="inter" namespace="/" extends="struts-default" >
    <interceptors>
    <!-- 1.注册拦截器 -->
        <interceptor name="myInter3" class="cn.itcast.a_interceptor.MyInterceptor3"></interceptor>
    <!-- 2.注册拦截器栈 -->
        <interceptor-stack name="myStack">
            <!-- 自定义拦截器引入(建议放在20个拦截器之前) -->
            <interceptor-ref name="myInter3">
                <!-- 指定哪些方法不拦截
                 <param name="excludeMethods">add,delete</param> -->
                 <!-- 指定哪些方法需要拦截 -->
                 <param name="includeMethods">add,delete</param>
            </interceptor-ref>
            <!-- 引用默认的拦截器栈(20个) -->
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </interceptor-stack>    
    </interceptors>
    <!-- 3.指定包中的默认拦截器栈 -->
        <default-interceptor-ref name="myStack"></default-interceptor-ref>
        <action name="Demo1Action_*" class="cn.itcast.a_interceptor.Demo1Action" method="{1}" >
            <!-- 为Action单独指定走哪个拦截器(栈) 
            <interceptor-ref name="myStack"></interceptor-ref>-->
            <result name="success" type="dispatcher" >/index.jsp</result>
        </action>
    </package>
    <package name="tag" namespace="/" extends="struts-default" >
        <action name="Demo2Action" class="cn.itcast.b_tag.Demo2Action" method="execute" >
            <result name="success" type="dispatcher" >/tag1.jsp</result>
        </action>
        <action name="Demo3Action" class="cn.itcast.b_tag.Demo3Action" method="execute" >
            <result name="success" type="dispatcher" >/tag2.jsp</result>
        </action>
    </package>

标签

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

<!-- 遍历标签 iterator -->
<!-- ------------------------------------- -->
<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 elseif------------------- --><hr>

<s:if test="#list.size()==4">
    list长度为4!
</s:if>
<s:elseif test="#list.size()==3">
    list长度为3!
</s:elseif>
<s:else>
    list不3不4!
</s:else>

<!-- ------------------property 配合ognl表达式页面取值 ------------------- --><hr>

<s:property value="#list.size()" />
<s:property value="#session.user.name" />
<!-- struts2表单标签 -->
    <!-- 好处1: 内置了一套样式.  -->
    <!-- 好处2: 自动回显,根据栈中的属性  -->
    <!-- theme:指定表单的主题
            xhtml:默认
            simple:没有主题
     -->
    <s:form action="Demo3Action" namespace="/" theme="xhtml" >
        <s:textfield name="name" label="用户名"  ></s:textfield>
        <s:password name="password" label="密码" ></s:password>
        <s:radio list="{'男','女'}" name="gender" label="性别" ></s:radio>
        <s:radio list="#{1:'男',0:'女'}" name="gender" label="性别" ></s:radio>
        <s:checkboxlist list="#{2:'抽烟',1:'喝酒',0:'烫头'}" name="habits" label="爱好" ></s:checkboxlist>
        <s:select list="#{2:'大专',1:'本科',0:'硕士'}" headerKey="" headerValue="---请选择---" name="edu" label="学历" >
        </s:select>
        <s:file name="photo" label="近照" ></s:file>
        <s:textarea name="desc" label="个人简介" ></s:textarea>
        <s:submit value="提交" ></s:submit>
    </s:form>
    
    <s:actionerror/>

猜你喜欢

转载自www.cnblogs.com/escapist/p/9060605.html
今日推荐