struts2(二)

1:Stream

<result-type name="stream" class="org.apache.struts2.result.StreamResult"/>

A custom Result type for sending raw data (via an InputStream) directly to the HttpServletResponse. Very useful for allowing users to download content.

This result type takes the following parameters:

  • contentType - the stream mime-type as sent to the web browser (default = text/plain).
  • contentLength - the stream length in bytes (the browser displays a progress bar).
  • contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
  • inputName - the name of the InputStream property from the chained action (default = inputStream).

步1:开发一个action,提供一个getInputStream():InputStream

public class DownAction extends ActionSupport {

@Override

public String execute() throws Exception {

System.err.println("判断用户的积分,判断用户的状态..");

return SUCCESS;

}

public InputStream getInputStream() throws Exception {

String path = ServletActionContext.getServletContext().getRealPath("/files/yy.zip");

InputStream in = new FileInputStream(path);

return in;

}

}

步2:配置到stuts.xml中且返回的<result type=”stream”/>

<action name="down" class="cn.down.DownAction">

<result type="stream"></result>

</action>

<action name="down" class="cn.down.DownAction">

<result type="stream">

<param name="contentType">application/force-download</param>

<param name="contentDisposition">attachment;filename="document.zip"</param>

</result>

</action>

附加:

1:下载时修改名称

String name = "我的文件.zip";

name = URLEncoder.encode(name,"UTF-8");

ActionContext.getContext().put("fileName", name);

在XML中取值:

在XML中使用OGNL取值,是通过${..}

<action name="down" class="cn.struts2.down.DownAction">

<result type="stream">

<param name="contentType">application/force-download</param>

<param name="contentDisposition">attachment;filename="${fileName}"</param>

</result>

</action>

--通过inputName指定方法名:

<action name="down" class="cn.struts2.down.DownAction">

<result type="stream">

<param name="contentType">application/force-download</param>

<param name="contentDisposition">attachment;filename="${fileName}"</param>

<!-- 在DownAction.getDownfile():InputStream -->

<param name="inputName">downfile</param>

</result>

</action>

public InputStream getDownfile() throws Exception {

String path = ServletActionContext.getServletContext().getRealPath("/files/yy.zip");

InputStream in = new FileInputStream(path);

return in;

}

时间: 2024-11-11 00:40:11

struts2(二)的相关文章

深入struts2(二) ---stuts2优点和主要包、类功能

1.1     Struts2 上节已讲,struts2在webwork基础发展起来的mvc框架.MVC框架相信一般码农都比较了解,这里不再重说.在这里仅仅对于一下struts1,struts2做了哪些改进呢?(以下内容从网上汇总) ?  Struct2的action是一个请求对应一个实例(每次请求都会new出一个对象),没有线程安全方面的问题 ?  Action不再依赖servlet api,有利于测试,并且实现tdd ?  选择使用pojo类来封装请求的参数 1.2     Struts2软

Struts2(二)---将页面表单中的数据提交给Action

问题:在struts2框架下,如何将表单数据传递给业务控制器Action. struts2中,表单想Action传递参数的方式有两种,并且这两种传参方式都是struts2默认实现的,他们分别是基本属性注入.域模型注入 .其中: ---基本属性注入,是将表单的数据项分别传入给Action中的一些基本基本类型. ---域模型注入,是将表单的数据项打包传入给Action中的一个实体对象. 我们项目Struts2的实例,在其基础上使用这2中方式完成页面向Action的参数传递.具体的我们可以在项目首页r

浅谈Struts2(二)

一.struts2的跳转 1.action跳转JSP a.默认为forward <action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="dispatcher">/admin/index.jsp</result> </action> <resul

Struts2(二)工作原理

一.概述 1.struts框架本身分为三个部分:核心控制器FilterDispatcher.业务控制器Action和用户实现的企业业务逻辑组件. 2.struts2工作的基本流程: 客户端初始化一个指向Servlet容器的请求 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter被调用,该过滤器询问ActionMaper这个请求是否需要调用某个Action 如果ActionMapper决定需要调用某个Actio

ssh框架-Struts2(二)

上篇文章我们了解了怎么配置struts.xml文件,以及前端控制器配置怎么配置,,Action进阶,Result结果配置,Struts2中的Servlet的API的访问,以及怎么获得请求参数.今天我们在深入讲解一下OGNL表达式,OGNL中的符号,和常用的拦截器,标签库 一,OGNL表达式 1.概述 1.1什么是OGNL ? OGNL是Object-Graph Navigation Language的缩写,俗称对象图导航语言. 它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对

Struts2(二):工作原理

struts可查看源码:https://github.com/apache/struts 在学习struts2之前,我先看了一些比较早版本对struts2的工作原理相关的介绍,顺便抄写过来,用来帮助自己要弄清这个框架的工作原理. struts2.1.3之前使用的FilterDispatcher,之后的版本使用StrutsPrepareAndExecuteFilter,而我这里还是以Dispatcher为例来记录的. 依据: Since Struts 2.1.3, use org.apache.s

struts2 (二)

struts2 配置文件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"> &l

【Struts2二】结果集(result-type)

在jsp/servlet中,结果集通常是指请求转发和重定向这两种! Struts2作为框架,提供了基于这两种的更多的结果集! 在struts-default.xml中定义了一些默认的结果集:          <result-types> <result-type name= "chain" class="com.opensymphony.xwork2.ActionChainResult" /> <result-type name= &

Struts2(二.用户登录模块)

1.编写Javabean /src/myuser/User.java 在strut1中,Javabean需要继承于struts1 api中的ActionForm类.struts2没有此要求 struts2 也没有formbean,通常使用Domain Model的方式向action注入数据 1 package myuser; 2 3 public class User { 4 private int id; 5 private String userName; 6 private String