- 浏览: 86973 次
- 性别:
- 来自: 苏州
最新评论
-
javazeke:
自己支持一下,,,希望下周有help
求oracle11g和10g 双机热备文档 -
javazeke:
kimmking 写道mr_kairy 写道看你的结构 就是 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
yangdefeng95802 写道LZ的图是什么软件画的?真 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
mr_kairy 写道看你的结构 就是 SOA 解决方案。。 ...
江湖求方案,类似SSO系统的需求 -
javazeke:
threestone1026 写道使用cas了
感谢thre ...
江湖求方案,类似SSO系统的需求
Struts文件上传
写的还可以,eclipse写的,解压部署后就能跑。
绝对整个项目,欢迎大家拍砖!晕死。。。。居然上传不了
贴一下关键代码
页面
<html:form action="userAction_fileUpload" method="post" enctype="multipart/form-data"> <html:text property="user.userName" value="${userForm.user.userName}"></html:text><br/> <html:text property="user.userPass" value="${userForm.user.userPass}"></html:text><br/> <html:file property="file" ></html:file><br/> <html:submit> 提交 </html:submit> </html:form>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>GBKFilter</filter-name> <filter-class>org.zeke.action.biz.GBKFilter</filter-class> </filter> <filter-mapping> <filter-name>GBKFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="userForm" type="org.zeke.actionform.UserForm" ></form-bean> </form-beans> <action-mappings> <action path="/userAction_*" name="userForm" type="org.zeke.action.UserAction" input="/index.jsp" scope="request" parameter="{1}" validate="true"> <forward name="success" path="/index.jsp"></forward> </action> </action-mappings> </struts-config>
包org.zeke.action.UserAction下
package org.zeke.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.MappingDispatchAction; import org.apache.struts.upload.FormFile; import org.zeke.action.biz.SaveUserInfo; import org.zeke.action.biz.ValidateFormFile; import org.zeke.actionform.UserForm; import org.zeke.entity.User; public class UserAction extends MappingDispatchAction { public ActionForward fileUpload(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm) form; User user = userForm.getUser(); FormFile formFile = userForm.getFile(); String path = this.getServlet().getServletContext().getRealPath("/"); ValidateFormFile vff = new ValidateFormFile(); if (vff.validate(formFile)) { SaveUserInfo saveUserInfo = new SaveUserInfo(); boolean b = saveUserInfo.save(user, path); if (b) { saveUserInfo.saveFile(formFile, path, user.getUserName()); } }else{ response.setCharacterEncoding("gbk"); response.getWriter().write("你上传的文件不符合规格!"); return null; } return mapping.findForward("success"); } }
包org.zeke.action.biz下
GBKFilter.java
package org.zeke.action.biz; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class GBKFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("gbk"); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } }
SaveUserInfo .java
package org.zeke.action.biz; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Writer; import java.util.Map; import org.apache.struts.upload.FormFile; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.zeke.entity.User; public class SaveUserInfo { public boolean saveFile(FormFile formFile,String path,String userNamePath) { boolean bl=false; String realPath = path + "\\WEB-INF\\userInfo\\"+userNamePath+"\\"+formFile.getFileName(); try { InputStream ins=formFile.getInputStream(); OutputStream outs=new FileOutputStream(realPath); int len=0; byte[] b=new byte[512]; while((len=ins.read(b))!=-1){ outs.write(b, 0, len); } outs.close(); ins.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bl; } public boolean save(User user, String path) { Element root = creatElement("user", null, null); Document document = DocumentHelper.createDocument(root); Element userName = creatElement("userName", user.getUserName(), null); root.add(userName); Element userPass = creatElement("userPass", user.getUserPass(), null); root.add(userPass); String realPath = path + "\\WEB-INF\\userInfo\\" + user.getUserName(); boolean b = saveToXML(document, realPath); return b; } private boolean saveToXML(Document e, String path) { boolean b = false; try { File f = new File(path); if (!f.exists()) { f.mkdir(); } File f1 = new File(f, "user.xml"); Writer writePath = new PrintWriter(f1); OutputFormat outformat = new OutputFormat(" ", true); outformat.setEncoding("gbk"); XMLWriter write = new XMLWriter(writePath, outformat); write.write(e); write.close(); writePath.close(); b = true; } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } return b; } private Element creatElement(String nodeName, String textValue, Attribute[] attributes) { Element e = DocumentHelper.createElement(nodeName); if (textValue != null) { e.setText(textValue); } if (attributes != null) { if (attributes.length != 0) { for (Attribute a : attributes) { e.add(a); } } } return e; } @SuppressWarnings("unused") private Attribute[] createAttribute(Map<String, String> map) { // 现在用不着 return null; } }
ValidateFormFile .java
package org.zeke.action.biz; import org.apache.struts.upload.FormFile; public class ValidateFormFile { public boolean validate(FormFile f){ boolean b=false; if(validateName(f)&&validateSize(f)){ b=true; } return b; } private boolean validateName(FormFile f){ boolean b=false; String fileName=f.getFileName(); fileName=fileName.substring(fileName.lastIndexOf('.')+1, fileName.length()); String[] extension=new String[]{"pdf","doc","txt","rar"}; int i=0; for(i=0;i<extension.length;i++){ if(fileName.equalsIgnoreCase(extension[i])){ break; } } if(i<extension.length){ b=true; } return b; } private boolean validateSize(FormFile f){ boolean b=false; int size=f.getFileSize(); int maxSize=1024*1024*5; if(size>0&&size<=maxSize){ b=true; } return b; } }
package org.zeke.actionform.UserForm .java
package org.zeke.actionform; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.zeke.entity.User; public class UserForm extends ActionForm { private static final long serialVersionUID = -863536723372815788L; private User user=new User(); private FormFile file; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public FormFile getFile() { return file; } public void setFile(FormFile file) { this.file = file; } @Override public void reset(ActionMapping mapping, HttpServletRequest request) { user.setUserName("zeke"); user.setUserPass("root"); this.setUser(user); } @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return super.validate(mapping, request); } }
package org.zeke.entity.User.java
package org.zeke.entity; public class User { private String userName; private String userPass; public User() { } public User(String userName, String userPass) { this.userName = userName; this.userPass = userPass; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPass() { return userPass; } public void setUserPass(String userPass) { this.userPass = userPass; } }
至此所有代码都贴上了。。。。
如果有需要,可以在评论里和我说下,我会将整个项目发给你.......共同进步!
发表评论
-
求oracle11g和10g 双机热备文档
2010-12-17 22:13 1564项目来了,,需求下来,,怕赔不起,,决定用热备 可怜的我,, ... -
江湖求方案,类似SSO系统的需求
2010-10-16 10:59 1482现有资料,大Boss交代我来弄,说实话,这东东我也不知道怎么 ... -
js array
2010-07-04 11:18 1023zhuan zi http://renxiangzyq.i ... -
Ldap之活动目录之userAccountControl
2010-04-22 10:27 3891When you open the properties fo ... -
Ldap之活动目录之属性
2010-04-22 10:19 1950“常规”标签 姓 Sn 名 Givename ... -
Ldap之活动目录介绍三
2010-04-22 10:12 1257安装第二台域控制器 在安装完第一台域控制器后其域名为 n ... -
Ldap之活动目录介绍二
2010-04-22 10:10 1316运行 Active Directory 安 ... -
Ldap之活动目录介绍一
2010-04-22 09:43 2682最近一直在做java通过Ldap去操作活动目录数据的东东,过程 ... -
我迷茫,我应该怎么走。望各位JE大哥指点!
2010-03-26 09:56 1706小弟六月毕业,在学校还算好学生,从大二起接触编程,,那时的编程 ... -
xp桌面回收站恢复
2010-02-21 19:14 868开始-运行gpedit.msc-本地计算机策略-用户配 ... -
MyEclipse7.5注册机
2010-01-25 17:29 961首先感谢提供源码的那位大牛,我只是做成了exe执行文件而已 -
DSA和RSA算法的差异
2009-11-20 19:13 15981978年就出现了这种算法 ... -
仿Google自动补全 jquery
2009-11-20 16:40 2880应大家要求,发一个包,方便大家使用,有问题欢迎e-mail : ... -
对称加密的两种方式
2009-11-18 22:33 1889对称加密,这东东现在 ... -
java简单对象池
2009-11-10 20:53 3980在项目中用到,自己写了个对象池的管理(创建、保留、获取),那种 ... -
仿Google自动补全 jQuery 不含索引处理 2
2009-11-08 14:39 1082Servlet。。。。。。。。。。。。。。。。。 pu ... -
仿Google自动补全 jQuery 不含索引处理
2009-11-08 14:29 1351自动补全 1. 页面有一个文本框,一个自动提示层,一个按 ... -
Java数据库通用查询及封装
2009-11-08 13:54 6285Java数据库通用查询及封装 时常在网上看到,有关Java数据 ... -
Java实现快排的算法
2009-10-14 22:28 2955Java实现快排的算法 public class Quick ... -
Collection List Set Map 区别记忆
2009-10-13 20:15 934一篇对Java集合讲解不错的文档,不是我写的,转过来和大家分享 ...
相关推荐
- Struts 2提供了一个名为`Struts2-FileUpload-plugin`的插件,它可以方便地处理文件上传,并且支持自定义文件大小限制。 5. **安全考虑**: - 不限制文件大小可能会导致DoS攻击,因此,即使服务器和容器未设定...
JavaEE Struts 文件上传是Web开发中的...在实际应用中,确保文件上传的健壮性和安全性是至关重要的,比如防止文件覆盖、大小限制、非法文件类型上传等问题。通过实践和不断学习,开发者可以更好地理解和运用这一功能。
总结,Struts2提供了方便的文件上传功能,但需要注意过滤文件类型和大小以确保系统安全和性能。通过配置、校验和处理逻辑,我们可以实现一个完整的文件上传功能,同时确保上传的文件既符合格式要求,又不超过设定的...
对于文件上传,还需要配置文件上传的最大大小、允许的文件类型等。 6. **异常处理**:在处理文件上传时,可能会遇到各种问题,如文件过大、文件类型不被允许等。因此,合理的异常处理是必要的,你可以定义特定的...
在`struts.xml`配置文件中,为需要支持文件上传的Action添加`params`和`fileUpload`拦截器,并设置允许的最大上传大小。例如: ```xml <package name="default" namespace="/" extends="struts-default"> ...
2. **设置Struts2配置**:配置文件需要指定允许上传的文件大小、类型等。例如,使用`<constant>`标签设置`struts.multipart.parser`为`jakarta`,以启用`Commons FileUpload`。 3. **编写Action类**:在Action类中...
在这个"struts2实现的文件上传(带文件类型和大小验证的)"示例中,我们将深入探讨如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件(struts.xml)中添加一个或多个action配置,用于处理文件上传...
- `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`<form-beans>`部分,指定文件上传的临时存储...
文件上传后,你可能需要对文件进行一些验证,比如检查文件类型、大小等,然后将其保存到服务器的某个目录。在`UploadAction`的`execute`方法中完成这些操作: ```java File uploadDir = new File("/path/to/upload/...
2. **配置文件上传**:在`struts-config.xml`配置文件中指定允许上传的文件类型和大小限制。 3. **编写Action**:在Action类中处理文件上传的具体逻辑,包括文件的保存路径、文件名的生成等。 #### 文件处理逻辑...
在Struts2的配置文件中,我们可以定义这些规则,例如限制上传文件的大小,只接受特定类型的文件(如图片、文档等)。此外,我们还需要关注安全问题,防止恶意文件上传。 文件上传的实现通常包括以下几个步骤: 1. ...
在Struts中处理文件上传功能时,有时我们需要对上传的文件大小进行限制,以防止恶意用户上传过大的文件导致服务器资源耗尽或者内存溢出等问题。本文将深入探讨Struts中文件上传大小限制的设置及其常见错误处理。 一...
此外,除了`maximumSize`,还可以配置`allowedTypes`来限制上传文件的类型,以及`headerNames`来检查HTTP头信息等。 4. **异常处理**: 当文件大小超过限制时,Struts2会抛出异常。我们可以通过配置全局结果或者在...
6. **异常处理**:文件上传过程中可能会遇到各种异常,如文件大小超出限制、文件类型不合法等。因此,需要捕获并处理这些异常,给出适当的反馈给用户。 7. **结果展示**:文件上传成功后,可以返回一个结果页面,...
Struts2会自动将文件内容封装到`Action`的`File`属性中,同时,文件的基本信息(如原始名称、大小等)会存储在`String`类型的`FileName`和`contentType`属性中。以下是一个简单的Action示例: ```java public class...
这包括检查文件大小、文件类型、文件内容等,以防止恶意文件上传。 7. **异常处理** 文件上传可能会出现各种问题,如文件过大、文件类型不正确或磁盘空间不足等。Struts2提供了处理这些异常的能力,可以通过自定义...
`<s:form>`标签是Struts2的表单标签,它支持文件上传,通过`<s:file>`标签让用户选择要上传的文件。表单提交时,会调用我们在Action中定义的方法。 在处理文件上传时,Struts2会使用`Commons FileUpload`库,这个库...
#### 三、配置Struts项目以支持文件上传 1. **创建Struts项目并添加依赖** 首先,在开发环境中创建一个新的Struts项目。然后,确保项目中包含了Struts框架所需的库文件,特别是用于文件上传的`commons-fileupload...
Struts AJAX 文件上传是一种在Java Web开发中实现异步数据传输的技术,它结合了Struts框架和AJAX(Asynchronous JavaScript and XML)的优势,提供了一种用户友好的、无刷新的文件上传方式。这种方式可以显著提升...
Struts2是一个流行的Java web开发框架,用于构建企业级应用程序。在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。...了解并掌握这一特性,对于开发支持文件上传功能的web应用至关重要。