Struts2文件下载<*>servlet-api的方式文件下载

Struts2文件下载

 1 public class DownLoadAction extends ActionSupport{
 2
 3     private static final long serialVersionUID = 1L;
 4     //要下载的文件名
 5     private String filename;
 6     public String getFilename() {
 7         return filename;
 8     }
 9     public void setFilename(String filename) {
10         this.filename = filename;
11     }
12
13     /**
14      * 这个方法的方法名称是由result的type的属性值对应的类的属性决定的
15      * (inputName)
16      * @throws FileNotFoundException
17      */
18     public InputStream getInputStream() throws FileNotFoundException {
19         String path = ServletActionContext.getRequest().getRealPath("/download/");
20         return new FileInputStream(new File(path, filename));
21     }
22
23     /**
24      * struts2里面的下载
25      * 我们实际被访问的页面只是做了一个页面跳转
26      */
27     public String stream() {
28         return SUCCESS;
29     }
30 }

struts.xml

 1 <!DOCTYPE struts PUBLIC
 2     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 3     "http://struts.apache.org/dtds/struts-2.3.dtd">
 4 <struts>
 5     <!-- 配置常量-->
 6     <!-- 配置struts2编码常量只针对post提交方式
 7          get提交方式的乱码问题需要我们手动解决
 8     -->
 9     <constant name="struts.i18n.encoding" value="UTF-8"/>
10     <!-- 配置访问action的后缀名 -->
11     <constant name="struts.action.extension" value="action,,"/>
12     <!--
13         struts.devMode:struts2的开发者模式
14         在开发阶段:我们一般都会设置为true,这样我们在修改struts.xml的时候,就不用重启服务器了
15         生产环境,设置为false
16      -->
17     <constant name="struts.devMode" value="true"/>
18     <!-- 引入关联配置文件 -->
19     <include file="struts-json.xml"/>
20     <include file="struts-upload.xml"/>
21     <include file="struts-download.xml"/>
22 </struts>

struts-download.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts.multipart.maxSize" value="1000000000"/>
 7     <package name="bamaw_download" namespace="/" extends="struts-default">
 8         <action name="stream" class="com.tbamaw.web.action.DownLoadAction">
 9             <result type="stream" name="success">
10                 <param name="contentDisposition">attachment;filename=${filename}</param>
11             </result>
12         </action>
13     </package>
14 </struts>
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <a href="${pageContext.request.contextPath }/stream.action?filename=baba.jpg">下载</a>
11 </body>
12 </html>

servlet-api的方式文件下载

1.建立DownLoadAction

2.配置struts.xml

3.发送文件下载请求

时间: 2024-10-24 13:49:48

Struts2文件下载<*>servlet-api的方式文件下载的相关文章

Struts2 -- 获取Servlet API

在struts2中获取Servlet API有三种方式: 1.通过ActionContext来获取       1.获取一个ActionContext对象.                ActionContext context=ActionContext.getContext();            2.获取servlet api                注意:通过ActionContext获取的不是真正的Servlet API,而是一个Map集合.                

Struts2 与Servlet API解耦,耦合的访问方式

一.与Servlet API解耦的访问方式 1.为了避免与Servlet API耦合在一起,方便Action类做单元测试,  Struts2对HttpServletRequest.HttpSession和ServletContext进行了封装,  构造了三个Map对象来替代这三种对象,在Action中,  直接使用HttpServletRequest.HttpSession.ServletContext对应的Map对象来保存和读取数据.  要获得这三个Map对象,可以使用com.opensymp

Struts2访问Servlet API的几种方式

struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前Action的ActionContext实例. public Object get(Object key) :此方法类似于调用HttpServletRequest的getAttribute(String name)方法. public void put(Object key, Object value

Struts 2 访问Servlet API的方式

与Servlet API解耦的访问方式 与Servlet API耦合的访问方式 (tips:耦合既依赖) 1.    与Servlet API解耦的访问方式 2.     与Servlet API耦合的访问方式

Struts2之Servlet API及单元测试初识

可以无视的声明:对于博文中出现的错别字,以及语义不对给大家造成的困扰向大家致歉,同时也希望朋友给予包容和谅解.鄙人现在真的忙的快要疯了,早晨一起床就是赶快发博文,然后就是维护自己网站.上午基本就这几样就没了,下午就是写软文,找友链.晚上就是给大家写博文了.有时碰到有课,都得一样一样往后推,但我不想推掉每日一篇的博文.所以博文出现的个别可以忽视的错误,大家就别计较了.当然我并不是说大家就不用联系我了,关于学习交流的问题,还是希望大家积极交流的.So 奋斗吧,骚年!!! 一.学习案例:通过在Logi

struts2 servlet api 访问方式

Action中访问ServletAPI. 主要就是接收表单参数及向域对象中存取值. 关于SevletAPI的方法在Action中有三种方式: 1.完全解耦合的形式: * 使用一个类:ActionContext. * static ActionContext getContext(); --- 获得ActionContext对象 * Map getParameters();                   --- 接收提交到Action中的参数. * Map getSession();    

【Java EE 学习第35天】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】

一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 1 package com.kdyzm.convert; 2 3 4 import com.opensymphony.xwork2.ActionSupport; 5 6 public class TypeConvertAction extends ActionSupport{ 7 private static final long

3.struts2访问Servlet API,并和mybaits实现全套增删改查

1.创建数据库脚本userinfo.sql 1 prompt PL/SQL Developer import file 2 prompt Created on 2016年5月19日 by pc 3 set feedback off 4 set define off 5 6 create table USERINFO 7 ( 8 id NUMBER not null, 9 uname VARCHAR2(20), 10 password VARCHAR2(20), 11 age NUMBER 12

Struts2中获取servlet API的几种方式

struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要框架的.通常功能模块和系统架构复杂的时候会少不了框架的,如果没有框架,我们写的项目和代码会复杂很多,而且扩展性也会大大降低,代码审查效率也会降低.如下代码供大家参考,主要是说明在使用struts2的时候如何获取servlet API,大家可以试着对比一下不用struts2的时候的所写的servelt

Struts2中使用Servlet API步骤

Struts2中使用Servlet API步骤 Action类中声明request等对象 Map<String, Object> request; 获得ActionContext实例 ActionContext ac=ActionContext.getContext(); 获取request等对象   request=(Map<String, Object>)ac.get("request"); 在request等对象中保存数据  request.put(&qu