struts高级技术——解决重复提交和上传文件

 ·解决重复提交的工具——Token令牌

三个关键操作:

1.saveToken(Request):在第一次提交时,在网页中,设置一个令牌

2.this.resetToken(request) :在提交处理完成后,将重置网页中的令牌,使其失效

3.this.isTokenValid(request):在提交后,判断网页中的令牌是否有效

·上传文件

Struts中提供了一个SmartUpload组件,可以实现上传文件:

1.在表单中添加一个文件选择框,<html:file propertity="pic"></html:file>

2.ActionForm中可以通过一个org.apache.struts.upload.FormFile类型去接受这个文件

3.如果要使用用户自定的文件名来命名文件,则可以先提取出文件后缀,然后重新定义文件存储的绝对路径,绝对路径的获取方法是:String uploadPath = this.getServlet().getServletContext().getRealPath("/")+目标文件夹名+文件名

4.用户必须自己写IO流来实现文件在网络上的传输

  1. public class UploadAction extends Action {
  2.  public ActionForward execute(ActionMapping mapping, ActionForm form,
  3.    HttpServletRequest request, HttpServletResponse response) {
  4.   UploadForm uploadForm = (UploadForm) form;// TODO Auto-generated method stub
  5.   // 在编写IO流的时候必须有一个明确的绝对路径
  6.   // 可是对于WEB程序而言,绝对路径不是固定的
  7.   
  8.   String uploadPath = this.getServlet().getServletContext().getRealPath("/")+"upload//"+uploadForm.getName()+"."+(uploadForm.getPic().getFileName().split("//.")[1]) ;
  9.   System.out.println("** "+uploadPath) ;
  10.   try {
  11.    OutputStream out = new FileOutputStream(new File(uploadPath)) ;
  12.    FormFile ff = uploadForm.getPic() ;
  13.    byte b[] = ff.getFileData() ;
  14.    out.write(b) ;
  15.    out.close() ;
  16.   } catch (FileNotFoundException e) {
  17.    // TODO Auto-generated catch block
  18.    e.printStackTrace();
  19.   } catch (IOException e) {
  20.    // TODO Auto-generated catch block
  21.    e.printStackTrace();
  22.   }
  23.   return null;
  24.  }
  25. }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值