Struts其他-使用注解方式进行配置实例

以上的教程都是基于XML进行配置的,除此之外,Struts还能够基于注解进行配置
  • jar

    1. 为了使struts支持注解,需要用到struts2-convention-plugin-2.1.7.jar 这个jar包
    2. 下载好了之后,放在WEB-INF/lib 下
    3. 不仅如此,还要在项目导入jar,以使得eclipse能够编译通过
  • 注释掉struts.xml

    接着就把struts.xml中的配置信息注释掉,以确保最后生效的是注解方式
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
      
    <struts>
      <package name="basicstruts" extends="struts-default">
      
    <!--   <action name="showProduct" class="com.how2java.action.ProductAction" method="show"> -->
    <!--     <result name="show">show.jsp</result> -->
    <!--   </action>     -->
      
    </package>
      
    </struts>
  • 添加注解

    然后就是在ProductAction类上面添加注解
    1. 在类前面添加3个注解
    @Namespace("/")
    表示访问路径,如果是@Namespace("/test"),那么访问的时候,就需要写成http://127.0.0.1:8080/struts/test/showProduct

    @ParentPackage("struts-default")
    与配置文件中的struts-default相同,表示使用默认的一套拦截器

    @Results({
    	@Result(name="show", location="/show.jsp"),
    	@Result(name="home", location="/index.jsp")})
    预先定义多个results, "show" 返回"/show.jsp" , "home" 返回 "/index.jsp". 
    注: 这里并没有用到"home",写出来的目的是为了演示这种定义多个result 的代码风格。

    2. 在show方法前加上注解:
    @Action("showProduct")
    表示当访问路径是showProduct的时候,就会调用show方法

    package com.how2java.action;
     
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Namespace;
    import org.apache.struts2.convention.annotation.ParentPackage;
    import org.apache.struts2.convention.annotation.Result;
    import org.apache.struts2.convention.annotation.Results;
     
    import com.how2java.bean.Product;
     
    @Namespace("/")
    @ParentPackage("struts-default")
    @Results({@Result(name="show", location="/show.jsp"),
            @Result(name="home", location="/index.jsp")})
     
    public class ProductAction {
        private Product product;
        @Action("showProduct")
        public String show() {
            product = new Product();
            product.setName("iphone7");
            return "show";
        }
     
        public Product getProduct() {
            return product;
        }
     
        public void setProduct(Product product) {
            this.product = product;
        }
    }
  • 运行测试

    访问如下路径
    http://127.0.0.1:8080/struts/showProduct
  • 其他常用注解

    Namespace:指定命名空间。
    ParentPackage:指定父包。

    Result:提供了Action结果的映射。(一个结果的映射)
    Results:“Result”注解列表
    ResultPath:指定结果页面的基路径。

    Action:指定Action的访问URL。
    Actions:“Action”注解列表。

    ExceptionMapping:指定异常映射。(映射一个声明异常)
    ExceptionMappings:一级声明异常的数组。

    InterceptorRef:拦截器引用。
    InterceptorRefs:拦截器引用组。

    一般说来,不是所有的注解都会用到,真正用到哪个的时候再来查一下就知道怎么回事了。
  • 总结

    可以看出来,注解方式,就是把本来做在struts.xml里的事情,搬到了Action类里面来做。
    那么到底应该用注解还是配置呢?从个人经验来讲,小项目适合用注解,大项目因为其复杂性,采用注解会导致配置信息难以维护和查询,更适合采用xml配置方式。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值