Annotation对Struts2.x的支持

Annotation对Struts2.x的支持

Struts2.x如要想要使用Annotation,则需要导入asm-3.3.jar、asm-commons-3.3.jar和struts2-convention-plugin-2.3.37.jar。并且修改web.xml文件,使其支持Annotation。
在web.xml文件里的filter元素里加入init-param元素,如下所示:

<init-param>
    <param-name>actionPages</param-name>
        <!--所有需要使用Annotation的Action类都应该放在此包中-->
    <param-value>com.bank.action</param-value>
</init-param>

所有Struts2.x项目的开发都离不开Struts.xml文件,如果使用Annotation进行开发,则需要在Struts.xml文件中设置一些通用配置,示例如下:

<?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>
    <!-- 是否开启动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- 添加包并配置在根目录下,添加全局配置,以供其它包继承 -->
    <package name="root" namespace="/" extends="struts-default">
        <!-- 适用于整个项目的拦截器配置 -->
        <interceptors>
            <interceptor name="MyInterceptor" class="com.bank.interceptor.MyInterceptor" />
            <interceptor-stack name="initInterceptor">
                <interceptor-ref name="MyInterceptor" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <!-- 设置全局跳转路径 -->
        <global-results>
            <result name="input">pages/errors.jsp</result>
            <result name="forward">pages/forward.jsp</result>
        </global-results>
    </package>
</struts>
使用注解配置Action

Struts2提供了四个与Action相关的注解,分别为ParentPackage、Namespace、Result和Action。

  1. ParentPackage注解用于指定Action所在包要继承的父包,该注解只有一个value参数,用于指定要继承的父包。
  2. Namespace注解用于指定Action所在包的命名空间。该注解只有一个value参数,用于指定Action所属于的命名空间。
  3. Result注解用于定义一个Result映射,该注解包含四个参数,如下:
    • name:可选参数,用于指定Result的逻辑名,默认值为success。
    • location:必选参数,用于指定Result对应资源的URL。
    • type:可选参数,用于指定Result的跳转类型,例如:redirect、dispatcher等。
    • params:可选参数,用于为Result指定要传递的参数,格式为:{key1,value1,key2,value2,…}
  4. Action注解对应于struts.xml文件中的action元素。该注解可用于Action类上,也可用于方法上,该注解包含以下属性:
    • value:可选参数,表示Action的名字。
    • results:可选参数,表示Action的多个Result映射,该属性用于定义一组Result映射。也可用@results实现相同的功能。
    • interceptorRefs:可选参数,表示Action的多个拦截器,该属性用于定义一组拦截器。
    • params:可选参数,表示传递给Action的参数,格式为:{key1,value1,key2,value2,…}
    • exceptionMappings:可选参数,用于指定Action的异常处理类。它是一个Exception-Mapping的数组属性。

【范例】: 在web.xml文件中声明的包下定义一个Action,并添加注解:

package com.bank.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.*;

@SuppressWarnings("serial")
@ParentPackage("root")
@Namespace(value="/pages")//定义了自己的命名空间
@Action(value="TestAction")
@Results(value = {
        @Result(name="success",location="/pages/hello.jsp",type="dispatcher"),
        @Result(name="error",location="/pages/error.jsp",type="redirect")
})
public class TestAction extends ActionSupport {
    public String hello(){
        String msg = super.getText("message.gub");
        ServletActionContext.getRequest().setAttribute("msg",msg);
        return ActionSupport.SUCCESS;
    }

    @Actions(value={
            @Action(value="Hello"),@Action(value="Insert")
    })
    public void insert(){
        System.out.println("======insert======");
    }
}
使用注解配置拦截器

Struts2中编写的Action如果想使用Annotation的方式进行拦截器的配置,则可以使用以下两个注解:

  1. InterceptorRef注解用于指定本Action要配置的Interceptor,该注解只有一个value参数,用于指定要配置的Interceptor名称(如果是自己定义的Interceptor,则需要先在Struts.xml文件中注册)
  2. InterceptorRefs注解包含多个InterceptorRef注解,可以为本Action配置多个拦截器。该注解只有一个value参数,用于指定要配置的多个InterceptorRef。
    【范例】:
@InterceptorRef(value="timer")//配置一个Interceptor
@InterceptorRefs(value={//配置多个Interceptor
        @InterceptorRef(value="timer"),
        @InterceptorRef(value="MyInterceptor"),
        @InterceptorRef(value="defaultStack")
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值