struts2总结(五)

ruts2的注解配置

使用前提

struts2框架,它不仅支持基于XML的配置方式,同时也支持基于注解配置的方式。接下来,我们就来讲解,struts2框架如何基于注解配置。

首先我们要明确一件事:

注解和XML的配置,都是告知struts2框架,当我们jsp页面发送请求,根据配置执行对应动作类的方法,并根据返回值,前往指定的结果视图(jsp页面或者其他动作)。它们只是配置的形式不一样。

其次要想使用struts2的注解,必须要导入一个新的jar包。该jar包是:

struts2-convention-plugin-2.3.24.jar

 

常用注解

@NameSpace

出现的位置:

它只能出现在package上或者Action类上。一般情况下都是写在Action类上。

作用:

指定当前Action中所有动作方法的名称空间。

属性:

value:指定名称空间的名称。写法和xml配置时一致。不指定的话,默认名称空间是""。

示例:

@Namespace("/customer")

public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {

private Customer customer = new Customer();


@Override

public Customer getModel() {

return customer;

}

}

 

 

@ParentPackage

出现的位置:

它只能出现在package上或者Action类上。一般情况下都是写在Action类上。

作用:

指定当前动作类所在包的父包。由于我们已经是在类中配置了,所以无需在指定包名了。

属性:

value:指定父包的名称。

示例:

@ParentPackage("struts-default")

public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {

private Customer customer = new Customer();


@Override

public Customer getModel() {

return customer;

}

}

 

 

@Action

出现的位置:

它只能出现在Action类上或者动作方法上。一般情况下都是写在动作方法上。

作用:

指定当前动作方法的动作名称。也就是xml配置时action标签的name属性。

属性:

value:指定动作名称。

results[]:它是一个数组,数据类型是注解。用于指定结果视图。此属性可以没有,当没有该属性时,表示不返回任何结果视图。即使用response输出响应正文。

interceptorRefs[]:它是一个数组,数据类型是注解。用于指定引用的拦截器。

示例:

/**

 * 获取添加客户页面

 * @return

 */

@Action(value="addUICustomer",results={

@Result(name="addUICustomer",location="/jsp/customer/add.jsp")

})

public String addUICustomer(){

return "addUICustomer";

}

 

 

@Result

出现的位置:

它可以出现在动作类上,也可以出现在Action注解中。

作用:

出现在类上,表示当前动作类中的所有动作方法都可以用此视图。

出现在Action注解中,表示当前Action可用此视图。

属性:

name:指定逻辑结果视图名称。

type:指定前往视图的方式。例如:请求转发,重定向,重定向到另外的动作。

location:指定前往的地址。可以是一个页面,也可以是一个动作。

示例:

/**

 * 保存客户

 * @return

 */

@Action(value="addCustomer",results={

@Result(name="addCustomer",type="redirect",location="/jsp/success.jsp")

})

public String addCustomer(){

customerService.saveCustomer(customer);

return "addCustomer";

}

 

 

@Results

出现的位置:

它可以出现在动作类上,也可以出现在Action注解中。

作用:

用于配置多个结果视图。

属性:

value:它是一个数组,数据类型是result注解。

示例:

@Results({

@Result(name="login",location="/login.jsp"),

@Result(name="error",location="/error.jsp")

})

public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {


private Customer customer = new Customer();


@Override

public Customer getModel() {

return customer;

}

 

 

 

@InterceptorRef

出现的位置:

它可以出现在动作类上或者Action注解中。

作用:

用于配置要引用的拦截器或者拦截器栈

属性:

value:用于指定拦截器或者拦截器栈

示例:

出现在动作方法上:

/**

 * 查询所有客户

 * @return

 */

@Action(value="findAllCustomer",results={

@Result(name="findAllCustomer",location="/jsp/customer/list.jsp")

},interceptorRefs={

@InterceptorRef("myDefaultStack")

})

public String findAllCustomer(){

customers = customerService.findAllCustomer();

return "findAllCustomer";

}

 

出现在动作类上:

@InterceptorRef("myDefaultStack")

public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {

private Customer customer = new Customer();


@Override

public Customer getModel() {

return customer;

}

}

 

myDefaultInterceptor的定义需要写在配置文件中,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.devMode" value="true"></constant>


<!-- 修改默认拦截后缀 -->

<constant name="struts.action.extension" value="action"></constant>


<!-- 修改struts2的主题 -->

<constant name="struts.ui.theme" value="simple"></constant>


<!-- 定义一个公共包,继承struts2的核心包struts-default,并且声明为抽象包 -->

<package name="myDefault" extends="struts-default" abstract="true">

<interceptors>

<!-- 声明拦截器 -->

<interceptor name="checkLogin" 

class="cn.itcast.web.interceptors.CheckLoginInterceptor"/>

<!-- 声明拦截器栈,把检查登录拦截器和默认拦截器栈组合成一个新的拦截器栈 -->

<interceptor-stack name="myDefaultStack">

<interceptor-ref name="checkLogin"></interceptor-ref>

<interceptor-ref name="defaultStack"></interceptor-ref>

</interceptor-stack>

</interceptors>

<!-- 把声明的拦截器栈设置为当前项目的默认拦截器栈 -->

<default-interceptor-ref name="myDefaultStack"/>

</package>

</struts>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值