struts2(5)------文件的上传下载

Struts2(5)


文件的上传下载

-------------

文件上传的步骤:

1、编写页面,页面表单的提交方式必须为post

2、指定表单的enctype="multipart/form-data"

3、上传的控件使用  <s:file name="myfile">

4、在action声明一个属性,名称与s:file标签中的name名称一样,类型为java.io.File,并且生成get,set方法(该属性可以保存上传的文件)--------myfile

5、在action声明一个字符串类型的变量,它的名称必须是s:file标签中的name的名称加上FileName---------------myfileFileName  (用于自动保存要上传的文件名称)

6、在action具体的文件中完成上传:

A、先指定,要传到哪一个文件夹中----要获得上传的文件夹在服务器中的位置
String folder = ServletActionContext.getServletContext().getRealPath(
"upload");
//构建一个要在服务器端生成的新文件
File newFile = new File(folder+"/"+myfileFileName);
//生成文件
FileUtils.copyFile(myfile, newFile);

7、分别配置:web.xml,struts.xml

---struts.multipart.maxSize=2097152         指定文件的最大尺寸,默认2M
---long size = myfile.length();  获得上传的文件大小

--------------------------------------------------------------------------------

文件下载: (步骤)

1、编写页面
2、编写BaseAction,在类中编写一个属性HttpServletResponse  res,并且实现servletResponseAware接口
3、编写ShwAction继承BaseAction,并且编写down方法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1、设置要下的文件名   
String name = "tomcat.txt";
若文件中有中文,需转码 :  
String convName = URLEncoder.encode(name,"UTF-8");
2、通过response设置响应的类型;
res.setContentType("application/x-msdownload");--弹出下载的面板
3、通过response设置下载面板中显示的内容
res.setheader("Content-disposition","attachment;fileName="+name);
4、通过指定文件路径,把文件读入输入流
InputStream in = new FileInputStream("d:/"+name);
5、通过响应对象,产生输出流
OutputStream out = res.getOutputStream();
6、创建一个缓冲区,并创建一个int类型的变量,用于保存每次读入到缓冲区的实际长度
byte[] b = new byte[8192];
int len=0;
7、通过流把信息输出到客户端
while((len =in.read(b,0,8192))!=-1){
out.write(b,0,len);
}
8、关闭流
out.close();
in.close();


-----------------------------------------------------------------------------

Struts2中产生作用域的四种方式


Struts2是一个基于是MVC模式的web框架

在早期的web框架:   struts1 ,webwork


Struts2 = struts1的优点  +  webwork的优点 (主)











四种产生作用域的方式:


大的分类:  

1、与servlet相关的作用域   (HttpServletRequest,HttpSession,ServletContext)

a、IOC方式  (通过实现接口产生的作用域)
b、非IOC方式 (手动构建,不是实现接口)


2、与servlet无关的的作用域 (Map)


a、IOC方式  (通过实现接口产生的作用域)
b、非IOC方式 (手动构建,不是实现接口)





















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值