`
willvvv
  • 浏览: 331559 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2.0上传练习

阅读更多

终于上次的项目告一段落了,可以重新学习Struts了,于是终于吃过饭就开始捣鼓了,因为早就从网上把MAX先生的教程下来了,就看了看教程,着手进行吧

代码都是Max先生的,但是中间却出现了不少的错误,

主要文件有:FileUpload.jsp上传页面

xml 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3. <!---->>    
  4. <html xmlns ="http://www.w3.org/1999/xhtml">    
  5. <head>    
  6.     <title> Struts 2 File Upload title>    
  7. head >    
  8. <body >    
  9.     <s:form action ="fileUpload" method ="POST" enctype ="multipart/form-data" >    
  10.         <s:file name ="myFile" label ="Image File"/>    
  11.         <s:textfield name ="caption" label ="Caption"/>           
  12.         <s:submit/>    
  13.     s:form >    
  14. body >    
  15. html >   

action处理页面FileUploadAction.java

java 代码
  1. package tutorial;   
  2.   
  3. import java.io.BufferedInputStream;   
  4. import java.io.BufferedOutputStream;   
  5. import java.io.File;   
  6. import java.io.FileInputStream;   
  7. import java.io.FileOutputStream;   
  8. import java.io.InputStream;   
  9. import java.io.OutputStream;   
  10. import java.util.Date;   
  11.   
  12. import org.apache.struts2.ServletActionContext;   
  13.   
  14. import com.opensymphony.xwork2.ActionSupport;   
  15.   
  16. public class FileUploadAction extends ActionSupport {   
  17.     private static final long serialVersionUID = 572146812454l;   
  18.     private static final int BUFFER_SIZE = 16 * 1024;   
  19.   
  20.     private File myFile;   
  21.     private String contentType;   
  22.     private String fileName;   
  23.     private String imageFileName;   
  24.     private String caption;   
  25.   
  26.     public void setMyFileContentType(String contentType) {   
  27.         this.contentType = contentType;   
  28.     }   
  29.   
  30.     public void setMyFileFileName(String fileName) {   
  31.         this.fileName = fileName;   
  32.     }   
  33.   
  34.     public void setMyFile(File myFile) {   
  35.         this.myFile = myFile;   
  36.     }   
  37.   
  38.     public String getImageFileName() {   
  39.         return imageFileName;   
  40.     }   
  41.   
  42.     public String getCaption() {   
  43.         return caption;   
  44.     }   
  45.   
  46.     public void setCaption(String caption) {   
  47.         this.caption = caption;   
  48.     }   
  49.   
  50.     private static void copy(File src, File dst) {   
  51.         try {   
  52.             InputStream in = null;   
  53.             OutputStream out = null;   
  54.             try {   
  55.                 in = new BufferedInputStream(new FileInputStream(src),   
  56.                         BUFFER_SIZE);   
  57.                 out = new BufferedOutputStream(new FileOutputStream(dst),   
  58.                         BUFFER_SIZE);   
  59.                 byte[] buffer = new byte[BUFFER_SIZE];   
  60.                 while (in.read(buffer) > 0) {   
  61.                     out.write(buffer);   
  62.                 }   
  63.             } finally {   
  64.                 if (null != in) {   
  65.                     in.close();   
  66.                 }   
  67.                 if (null != out) {   
  68.                     out.close();   
  69.                 }   
  70.             }   
  71.         } catch (Exception e) {   
  72.             e.printStackTrace();   
  73.         }   
  74.     }   
  75.   
  76.     private static String getExtention(String fileName) {   
  77.         int pos = fileName.lastIndexOf(".");   
  78.         return fileName.substring(pos);   
  79.     }   
  80.   
  81.     @Override  
  82.     public String execute() {   
  83.         imageFileName = new Date().getTime() + getExtention(fileName);   
  84.         File imageFile = new File(ServletActionContext.getServletContext()   
  85.                 .getRealPath("/UploadImages")   
  86.                 + "/" + imageFileName);   
  87.         copy(myFile, imageFile);   
  88.         return SUCCESS;   
  89.     }   
  90.   
  91. }  

 

ShowUpload.jsp上传成功显示页面

xml 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3. <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >    
  4. <html xmlns ="http://www.w3.org/1999/xhtml" >    
  5. <head>    
  6.     <title> Struts 2 File Upload </title >    
  7. </head>    
  8. <body>    
  9.     <div style="padding: 3px; border: solid 1px #cccccc; text-align: center" >    
  10.         <img src='UploadImages/<s:property value ="imageFileName" />'/>  
  11.         <br/>    
  12.         <s:property value ="caption"/>    
  13.     </div>    
  14. </body>    
  15. </html>  

 

struts.xml配置文件

xml 代码
  1. <?xml version="1.0" encoding="UTF-8" ?>    
  2.   
  3. <!DOCTYPE struts PUBLIC   
  4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  5.     "http://struts.apache.org/dtds/struts-2.0.dtd" >    
  6.   
  7. <struts >    
  8.     <package name ="fileUploadDemo" extends ="struts-default" >    
  9.         <action name ="fileUpload" class ="tutorial.FileUploadAction" >    
  10.             <interceptor-ref name ="fileUploadStack" />    
  11.             <result name ="success" >/ShowUpload.jsp</result >    
  12.         </action>    
  13.     </package >    
  14. </struts >   

web.xml

xml 代码
  1. <?xml version="1.0" encoding="UTF-8" ?>    
  2. <web-app id ="WebApp_9" version ="2.4"    
  3.     xmlns ="http://java.sun.com/xml/ns/j2ee"    
  4.     xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"    
  5.     xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >    
  6.   
  7.     <display-name > Struts 2 Fileupload </display-name >    
  8.   
  9.     <filter >    
  10.         <filter-name > struts-cleanup </filter-name >    
  11.         <filter-class >    
  12.             org.apache.struts2.dispatcher.ActionContextCleanUp   
  13.         </filter-class >    
  14.     </filter >    
  15.        
  16.     <filter >    
  17.         <filter-name > struts2 </filter-name >    
  18.         <filter-class >    
  19.             org.apache.struts2.dispatcher.FilterDispatcher   
  20.         </filter-class >    
  21.     </filter >    
  22.        
  23.     <filter-mapping >    
  24.         <filter-name > struts-cleanup </filter-name >    
  25.         <url-pattern > /* </url-pattern >    
  26.     </filter-mapping >    
  27.   
  28.     <filter-mapping >    
  29.         <filter-name > struts2 </filter-name >    
  30.         <url-pattern > /* </url-pattern >    
  31.     </filter-mapping >    
  32.   
  33.     <welcome-file-list >    
  34.         <welcome-file > index.html </welcome-file >    
  35.     </welcome-file-list >    
  36.   
  37. </web-app >   

 

在进行调试的时候发现我的运气是相当的好 啊,因为别人提出的错误我都遇到了,比如如下:

java 代码
  1. Servlet.service() for servlet SimpleUploader threw exception    
  2. java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]    

我在网上搜了下,发现有人这样解决的:

xml 代码
  1. 只要不让struts2拦截处理上传事件,就应该没问题了。   
  2. 修改web.xml,把原来的   
  3. <filter-mapping>  
  4.   <filter-name>struts</filter-name>  
  5.   <url-pattern>/*</url-pattern>  
  6.  </filter-mapping>  
  7. 改为   
  8. <filter-mapping>  
  9.   <filter-name>struts</filter-name>  
  10.   <url-pattern>*.action</url-pattern>  
  11.  </filter-mapping>  
  12. 而上传页面调用时直接用文件名调用(如upload.jsp)。struts2只处理 *.action 的请求。   

但是我用了一下出现了更麻烦的错误,于是又找了下是因为我的包所用版本太低的原因于是到Apache上下载了最新的包删除旧的导入新的刷新,打开tomcat服务,输入地址,又出现了一个错误

java 代码
  1. javax.servlet.ServletException: String index out of range: -1    
  2. org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)    
  3. org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)    
  4. org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)    

因为我的代码是从max先生的文章直接复制粘贴的,开始有很多多余的空格,我就一个个删除的,这时我想是不是空格的问题,于是又检查一遍代码,把空格全部删除,ok..

看来代码是要自己敲的,还是有好处的。】

这里记下,提醒自己,呵呵

高手就不用看了,因为我们是菜鸟,呵呵

  • 描述: 我用的包
  • 大小: 91.9 KB
分享到:
评论
4 楼 shappy1978 2009-02-26  
改成<url-pattern>*.action</url-pattern> 又出现这样的错误,
java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade
,而且上一个项目用了<url-pattern>/*</url-pattern>一样可以正常上传(jspsmartupload)
3 楼 w5644266 2008-12-12  
我的版本 比你的还高,我不知道怎么也报
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
2 楼 jacky_ustb 2008-11-21  
不错
 private File myFile;    
 private String contentType;    
 private String imageFileName;    
 private String caption;

1 楼 black.angel 2008-10-31  
     

空格都成了错误了,楼主有才。哈哈。太粗心了吧?

相关推荐

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解...09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 ...在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX

    struts2.0struts2.0struts2.0struts2.0struts2.0struts2.0

    Struts2.0是Apache软件基金会的一个开源Java框架,它主要用作Web应用程序的MVC(Model-View-Controller)架构。Struts2是Struts1的后续版本,旨在提供更强大、更灵活的框架来构建企业级的Java Web应用。 在Struts2...

    struts2.0的数据校验框架struts2.0的数据校验框架

    struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架

    JavaEE源代码 Struts2.0

    JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...

    Struts2.0视频教程+struts2.0中文教程

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0视频教程+struts2.0中文教程"包含的资源旨在...

    struts2.0的特点

    Struts2.0是Java Web开发领域中的一款流行框架,它是Struts1.x与WebWork框架的结合体,继承了两者的优点并进行了创新。在Struts2.0中,核心概念之一是Action,它被设计为一个简单的POJO(Plain Old Java Object),...

    Struts2.0的api

    Struts2.0是Java Web开发中的一个热门框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建动态Web应用程序的强大工具。API文档是理解任何框架核心功能的关键,对于Struts2.0也不例外。让我们深入...

    Struts2.0 Jar包

    Struts2.0是一款强大的Java Web框架,它在MVC(Model-View-Controller)设计模式的基础上,提供了灵活且强大的架构来构建企业级的Web应用程序。这个“Struts2.0 Jar包”包含了所有必要的库文件,使得开发者可以便捷...

    struts2.0jar包

    Struts2.0 jar包是Java Web开发中的一个重要组件,它是Apache Struts框架的一个特定版本。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建可维护性高、结构清晰的Java应用。该框架极大...

    Struts 2.0

    Struts 2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web应用程序框架。它并非Struts 1的直接升级,而是源自WebWork框架,提供了更强大的特性和灵活性。Struts 2的核心是Action,它是业务逻辑处理的...

    三大框架中文文档中的struts2.0开发手册(程序员必看)

    Struts2.0是Java Web开发中非常重要的一个MVC框架,它是在原有的Struts1.x基础上进行改进和发展而来的。这个"三大框架中文文档中的struts2.0开发手册"为程序员提供了一份详尽的参考资料,帮助他们理解和掌握Struts...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...

    struts 2.0 详细配置

    ### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 Struts 2.0 是一个基于 Java 的开源框架,用于开发 Web 应用程序。它继承了 Struts 1.x 的优点,并在架构上进行了改进,更加灵活且易于扩展。Struts 2.0 ...

    struts 2.0

    Struts 2.0是Java Web开发中的一个关键框架,它是Apache软件基金会的顶级项目,融合了原本独立的Struts 1.x和WebWork框架的优势,为开发者提供了一个强大、灵活且可扩展的MVC(Model-View-Controller)架构。...

    struts2.0入门案例

    Struts2.0是Java Web开发中一个非常重要的框架,它是Apache软件基金会的Jakarta项目下的一个开源产品,主要用于构建MVC(Model-View-Controller)模式的应用程序。本入门案例将带你逐步了解如何使用Struts2.0来创建...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0学习系列"旨在帮助初学者及进阶者深入理解并...

    struts2.0的 jar包和源文件

    Struts2.0 是一个非常流行的Java Web框架,它基于MVC(Model-View-Controller)设计模式,用于构建高效、可维护的企业级应用程序。这个压缩包包含了Struts2.0的核心jar文件以及可能的源代码,使得开发者可以直接查看...

    Struts 2.0全攻略之Struts 2.0参考手册

    Struts 2.0是Java Web开发中一个非常重要的MVC框架,它为构建基于J2EE的企业级应用提供了强大的支持。本指南将深入探讨Struts 2.0的核心概念、设计模式、配置以及实际应用中的最佳实践。下面,我们将详细讲解Struts ...

Global site tag (gtag.js) - Google Analytics