gpt4 book ai didi

JavaWeb Struts文件上传功能实现详解

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章JavaWeb Struts文件上传功能实现详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

一.Struts文件上传的思路 之前也讲过了FileUpload这个组件,功能很强大,但是操作繁琐复杂。这次,在Strust中也对文件上传有所支持,并FileUpload进行了包装,用起来方便了许多。 这里涉及到了一个标签和一个类: <html:file property="对应ActionForm中的属性名称"> 用这个标签可以上传文件,但是要接收次内容必须依靠org.apache.struts.upload.FormFile 接口完成.

JavaWeb Struts文件上传功能实现详解

二.实现 sh.jsp:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
  prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
  prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
  prefix="logic"%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
< head >
 
< title >sh.jsp</ title >
 
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
 
</ head >
 
< body >
  < html:form action = "/jsp/upload.do" method = "post" enctype = "multipart/form-data" >
 
  < html:file property = "photo" ></ html:file >
  < html:submit value = "上传" ></ html:submit >
 
  </ html:form >
 
</ body >
</ html >

UploadForm.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.zyy.struts.form;
 
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
 
public class UploadForm extends ActionForm {
 
  private FormFile photo;
 
  public FormFile getPhoto() {
  return photo;
  }
 
  public void setPhoto(FormFile photo) {
  this .photo = photo;
  }
 
}

IPTimeStamp.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.zyy.util;
 
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
 
public class IPTimeStamp {
  private SimpleDateFormat sdf = null ;
  private String ip = null ;
 
  public IPTimeStamp() {
  }
 
  public IPTimeStamp(String ip) {
  this .ip = ip;
  }
 
  public String getIPTimeRand() {
  StringBuffer buf = new StringBuffer();
  if ( this .ip != null ) {
   String s[] = this .ip.split( "\\." );
   for ( int i = 0 ; i < s.length; i++) {
   buf.append( this .addZero(s[i], 3 ));
   }
  }
  buf.append( this .getTimeStamp());
  Random r = new Random();
  for ( int i = 0 ; i < 3 ; i++) {
   buf.append(r.nextInt( 10 ));
  }
  return buf.toString();
  }
 
  public String getDate() {
  this .sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSS" );
  return this .sdf.format( new Date());
  }
 
  public String getTimeStamp() {
  this .sdf = new SimpleDateFormat( "yyyyMMddHHmmssSSS" );
  return this .sdf.format( new Date());
  }
 
  private String addZero(String str, int len) {
  StringBuffer s = new StringBuffer();
  s.append(str);
  while (s.length() < len) {
   s.insert( 0 , "0" );
  }
  return s.toString();
  }
 
  public static void main(String args[]) {
  System.out.println( new IPTimeStamp( "192.168.1.1" ).getIPTimeRand());
  }
}

UploadAction.java:

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.zyy.struts.action;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
import com.zyy.struts.form.UploadForm;
import com.zyy.util.IPTimeStamp;
 
public class UploadAction extends Action {
 
  public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
 
  UploadForm uploadForm = (UploadForm) form;
 
  IPTimeStamp ips = new IPTimeStamp(request.getRemoteAddr());
 
  // 文件名
  String fileName = ips.getIPTimeRand()
   + "."
   + uploadForm.getPhoto().getFileName().split( "\\." )[uploadForm
    .getPhoto().getFileName().split( "\\." ).length - 1 ];
 
  // 输出路径
  File outFile = new File( super .getServlet().getServletContext()
   .getRealPath( "/" )
   + "upload" + File.separator + fileName);
 
  // 存放图片的文件夹
  File file = new File( super .getServlet().getServletContext()
   .getRealPath( "/" )
   + "upload" );
  if (!file.exists()) {
 
   file.mkdir();
 
  }
 
  InputStream input = uploadForm.getPhoto().getInputStream();
 
  OutputStream output = new FileOutputStream(outFile);
 
  byte data[] = new byte [ 1024 ];
 
  int temp = 0 ;
 
  while ((temp = input.read(data, 0 , 1024 )) != - 1 ) {
 
   output.write(data);
 
  }
 
  output.close();
  input.close();
 
  return null ;
  }
 
}

struts-config.xml:

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<? xml version = "1.0" encoding = "ISO-8859-1" ?>
 
 
<!DOCTYPE struts-config PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
      "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
 
 
< struts-config >
  < form-beans >
 
  < form-bean name = "uploadForm" type = "com.zyy.struts.form.UploadForm" ></ form-bean >
 
  </ form-beans >
 
  < global-exceptions >
  </ global-exceptions >
 
  < global-forwards >
  </ global-forwards >
 
  < action-mappings >
 
  < action path = "/jsp/upload" attribute = "uploadForm" input = "/jsp/sh.jsp"
   name = "uploadForm" scope = "request" type = "com.zyy.struts.action.UploadAction" >
  
  </ action >
 
  </ action-mappings >
 
  < message-resources parameter = "resource.MessageResources" />
</ struts-config >

JavaWeb Struts文件上传功能实现详解

由于我保存在的是super.getServlet().getServletContext().getRealPath("/")+ "upload" 这是虚拟目录的真实路径的upload文件夹下。  。

JavaWeb Struts文件上传功能实现详解

由此可见,在Struts中的文件上传原理和FileUpload一样,但是Struts进行了包装,所以用起来明显比单独用FileUpload组件方便了许多.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

最后此篇关于JavaWeb Struts文件上传功能实现详解的文章就讲到这里了,如果你想了解更多关于JavaWeb Struts文件上传功能实现详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com