struts2注解开发,运行原理

1.     注解开发

1.1使用注解开发必须要导入jar包。struts2-convention-plugin-2.3.24.jar,企业开发少用!

1.2 添加注解

/**

 * @ClassName:DownLoadAction

 * @Description:

 * @Namespace : 相当于struts.xmlnamespace

 * @ParentPackage : 相当于struts.xmlextends="struts-default"

  * @author mengqx

 * @date 2017830

 */

@Namespace("/")

@ParentPackage("struts-default")

public class DownLoadAction extends ActionSupport {

    // 定义一个变量来获取文件名称

    private String fileName;

    // 定义一个FileInputStream对象

    private InputStream inputStream;

    // 定义一个下载路径

    private String address;

 

    public String getAddress() {

       return address;

    }

 

    public void setAddress(String address) {

       this.address = address;

    }

 

    public InputStream getInputStream() {

       return inputStream;

    }

 

    public void setInputStream(InputStream inputStream) {

       this.inputStream = inputStream;

    }

 

    public String getFileName() {

       return fileName;

    }

 

    public void setFileName(String fileName) {

       this.fileName = fileName;

    }

    /**

     *

     * @Description

     * Action :控制器 vlaue=控制器的名称,params=参数数组,数组中存放的数据都是以key,value

     * 形式存在的。results=表示返回的结果集@Result=表示返回的一个结果集 type=指的是转换类型,

     * params=result中参数设置,同样存值也是以keyvalue形式存在的!

     * @return

     * @throws FileNotFoundException

     * @author mengqx

     * @date   2017830

     */

    @Action(value="download",params={"address","E:/temp/"},

           results={

                  @Result(type="stream",params={"contentDisposition","attachment;fileName=${fileName}"})

           })

    public String download() throws FileNotFoundException {

       System.out.println("文件名称" + fileName);

       // 利用io流方式进行下载

       inputStream = new FileInputStream(new File(address + fileName));

       return SUCCESS;

    }

}

1.3 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>

</struts>

 

2.     运行原理



2.1 客户端发起请求到Filter.

2.2 Filter 过滤完成 之后,交个ActionMapper。

2.3 ActionMapper类会相应的产生一个代理类。

2.4 产生代理类之后,会走拦截器,有可能是一个,或者多个。

2.5 走完拦截器之后,走真正的Action。

2.6 返回Result,会产生一个Template模板。

2.7 就行走拦截器。

2.8 最终返回客户端显示。

同时也说明了struts2 多个拦截器的执行顺序:先进后出!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值