- 浏览: 337062 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
zhengqiweiyi:
请问这里的客户端和服务器是指同一台电脑上的吗?
JSP动态显示服务器时间和客户端时间 -
18101095336:
一语道破天机[color=blue][/c ...
restlet使用中遇到的一些问题 -
jjjssh:
废话一大堆,就是没说到少了那个jar包
The hierarchy of the type is inconsistent -
junjielee:
重点还没说啊~~~~~~~~
The hierarchy of the type is inconsistent -
幽绿琵琶:
太棒了
loadrunner 9.5 9.0 8.1下载地址 和license
终于上次的项目告一段落了,可以重新学习Struts了,于是终于吃过饭就开始捣鼓了,因为早就从网上把MAX先生的教程下来了,就看了看教程,着手进行吧
代码都是Max先生的,但是中间却出现了不少的错误,
主要文件有:FileUpload.jsp上传页面
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!---->>
- <html xmlns ="http://www.w3.org/1999/xhtml">
- <head>
- <title> Struts 2 File Upload title>
- head >
- <body >
- <s:form action ="fileUpload" method ="POST" enctype ="multipart/form-data" >
- <s:file name ="myFile" label ="Image File"/>
- <s:textfield name ="caption" label ="Caption"/>
- <s:submit/>
- s:form >
- body >
- html >
action处理页面FileUploadAction.java
java 代码
- package tutorial;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Date;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class FileUploadAction extends ActionSupport {
- private static final long serialVersionUID = 572146812454l;
- private static final int BUFFER_SIZE = 16 * 1024;
- private File myFile;
- private String contentType;
- private String fileName;
- private String imageFileName;
- private String caption;
- public void setMyFileContentType(String contentType) {
- this.contentType = contentType;
- }
- public void setMyFileFileName(String fileName) {
- this.fileName = fileName;
- }
- public void setMyFile(File myFile) {
- this.myFile = myFile;
- }
- public String getImageFileName() {
- return imageFileName;
- }
- public String getCaption() {
- return caption;
- }
- public void setCaption(String caption) {
- this.caption = caption;
- }
- private static void copy(File src, File dst) {
- try {
- InputStream in = null;
- OutputStream out = null;
- try {
- in = new BufferedInputStream(new FileInputStream(src),
- BUFFER_SIZE);
- out = new BufferedOutputStream(new FileOutputStream(dst),
- BUFFER_SIZE);
- byte[] buffer = new byte[BUFFER_SIZE];
- while (in.read(buffer) > 0) {
- out.write(buffer);
- }
- } finally {
- if (null != in) {
- in.close();
- }
- if (null != out) {
- out.close();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private static String getExtention(String fileName) {
- int pos = fileName.lastIndexOf(".");
- return fileName.substring(pos);
- }
- @Override
- public String execute() {
- imageFileName = new Date().getTime() + getExtention(fileName);
- File imageFile = new File(ServletActionContext.getServletContext()
- .getRealPath("/UploadImages")
- + "/" + imageFileName);
- copy(myFile, imageFile);
- return SUCCESS;
- }
- }
ShowUpload.jsp上传成功显示页面
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
- <html xmlns ="http://www.w3.org/1999/xhtml" >
- <head>
- <title> Struts 2 File Upload </title >
- </head>
- <body>
- <div style="padding: 3px; border: solid 1px #cccccc; text-align: center" >
- <img src='UploadImages/<s:property value ="imageFileName" />'/>
- <br/>
- <s:property value ="caption"/>
- </div>
- </body>
- </html>
struts.xml配置文件
xml 代码
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd" >
- <struts >
- <package name ="fileUploadDemo" extends ="struts-default" >
- <action name ="fileUpload" class ="tutorial.FileUploadAction" >
- <interceptor-ref name ="fileUploadStack" />
- <result name ="success" >/ShowUpload.jsp</result >
- </action>
- </package >
- </struts >
web.xml
xml 代码
- <?xml version="1.0" encoding="UTF-8" ?>
- <web-app id ="WebApp_9" version ="2.4"
- xmlns ="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
- <display-name > Struts 2 Fileupload </display-name >
- <filter >
- <filter-name > struts-cleanup </filter-name >
- <filter-class >
- org.apache.struts2.dispatcher.ActionContextCleanUp
- </filter-class >
- </filter >
- <filter >
- <filter-name > struts2 </filter-name >
- <filter-class >
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class >
- </filter >
- <filter-mapping >
- <filter-name > struts-cleanup </filter-name >
- <url-pattern > /* </url-pattern >
- </filter-mapping >
- <filter-mapping >
- <filter-name > struts2 </filter-name >
- <url-pattern > /* </url-pattern >
- </filter-mapping >
- <welcome-file-list >
- <welcome-file > index.html </welcome-file >
- </welcome-file-list >
- </web-app >
在进行调试的时候发现我的运气是相当的好 啊,因为别人提出的错误我都遇到了,比如如下:
java 代码
- Servlet.service() for servlet SimpleUploader threw exception
- java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
我在网上搜了下,发现有人这样解决的:
xml 代码
- 只要不让struts2拦截处理上传事件,就应该没问题了。
- 修改web.xml,把原来的
- <filter-mapping>
- <filter-name>struts</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- 改为
- <filter-mapping>
- <filter-name>struts</filter-name>
- <url-pattern>*.action</url-pattern>
- </filter-mapping>
- 而上传页面调用时直接用文件名调用(如upload.jsp)。struts2只处理 *.action 的请求。
但是我用了一下出现了更麻烦的错误,于是又找了下是因为我的包所用版本太低的原因于是到Apache上下载了最新的包删除旧的导入新的刷新,打开tomcat服务,输入地址,又出现了一个错误
java 代码
- javax.servlet.ServletException: String index out of range: -1
- org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)
- org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
- org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
因为我的代码是从max先生的文章直接复制粘贴的,开始有很多多余的空格,我就一个个删除的,这时我想是不是空格的问题,于是又检查一遍代码,把空格全部删除,ok..
看来代码是要自己敲的,还是有好处的。】
这里记下,提醒自己,呵呵
高手就不用看了,因为我们是菜鸟,呵呵
评论
4 楼
shappy1978
2009-02-26
改成<url-pattern>*.action</url-pattern> 又出现这样的错误,
java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade
,而且上一个项目用了<url-pattern>/*</url-pattern>一样可以正常上传(jspsmartupload)
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]
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






空格都成了错误了,楼主有才。哈哈。太粗心了吧?
发表评论
-
ConcurrentHashMap的高性能
2012-07-17 18:11 1518ConcurrentHashMap 是一个并发散列映射表 ... -
Hash散列及冲突解决
2012-07-17 17:56 2753先看看英文的维基百科上的解释: A hash func ... -
调用谷歌接口实现基站转经纬度
2012-07-02 15:34 6605Cell2GPSUtil.java,最近项目中用到的,记录一下 ... -
JSP动态显示服务器时间和客户端时间
2012-05-22 16:29 6492server-time.jsp内容如下: <%@ pa ... -
使用Spring3.0的AOP结合log4j实现接口方法执行时间记录
2012-05-18 14:30 6500项目使用RPC提供的内部服务,需要监控每个接口方法的调用情况以 ... -
禁止浏览器缓存当前文档内容
2011-06-08 17:21 1672IE8的设置中有这么一个选项: 默认是“自动 ... -
java正则匹配微博@和话题#话题#
2011-05-26 11:46 7976/** * 微博内容中的at正则表达式 ... -
restlet使用中遇到的一些问题
2011-02-22 17:37 19080x20 is not a legal NCName cha ... -
spring 2.5.6和hibernate3.2.2集成(5)
2010-02-08 15:48 2015这一次说一下hibernate tools这个工具的使用,OR ... -
spring 2.5.6和hibernate3.2.2集成(4)
2010-02-04 16:41 2812这个列子的来源是springside下的miniweb项目,算 ... -
spring 2.5.6和hibernate3.2.2集成(3)
2010-02-04 16:10 1802最近看了一下springside,学习很多,从思想到编码风格, ... -
spring 2.5.6和hibernate3.2.2集成(2)
2010-02-04 15:52 1376上一篇文章写了如何使用spring的注解,这一篇记录一下和hi ... -
spring 2.5.6和hibernate3.2.2集成(1)
2010-02-04 15:33 1302spring注解的使用,这个例子来源于网上,我也不知道原创是哪 ... -
The project was not built since the source file could not be read
2010-01-25 10:25 3830包缺失 重新加入JRE System Library 类 ... -
The hierarchy of the type is inconsistent
2010-01-22 10:02 14865这两天在尝试spring2.5.6和hibernate3.2的 ... -
activemq-5.3集成spring2.5以及quartz的调用
2010-01-06 10:42 1538前几天做的demo,记录一下,希望对大家有帮助,内容均参考网上 ... -
Dom4j的使用,存着以后看
2008-12-05 10:21 1152Dom4j的使用(全而好的文 ... -
JVM中的堆和栈
2007-12-29 16:19 2262JVM是基于堆栈的虚拟机. ... -
struts2.0使用时的一个奇怪的问题
2007-10-21 22:31 1100近来struts2.0很流行哦,于是下了更流行的max大侠的教 ... -
DAO+Factory+Hibernate的学习。。
2007-09-30 16:48 3070看了很多的书了,想着实践一下,就参考了书上的例子写了一点,呵呵 ...
相关推荐
本实例是一个入门级别的练习,旨在帮助初学者理解和掌握Struts2.0与Spring2.0的集成应用。 在Struts2.0中,Action类是业务逻辑的核心,它处理用户请求并返回相应的结果。在这个实例中,只有一个Action类,这意味着...
然而,这只是Struts2.0的冰山一角,深入学习还需要掌握更多的概念,如国际化的处理、文件上传下载、异常处理、自定义拦截器等。提供的动画教程和实例源码会进一步辅助你深化理解,通过实战提升技能。在学习过程中,...
本程序采用struts2.0+spring2.5+hiberhate3架构开发。 主要展示技术包括:三层架构 freemarker模版 面向切面编程 邮件发送 定时任务 缓存管理 运行环境: 1 TOMCAT 5.5及以上版本. 2 JDK5.0及以上版本. 3 ...
本程序采用struts2.0+spring2.5+hiberhate3架构开发。 主要展示技术包括:三层架构 freemarker模版 面向切面编程 邮件发送 定时任务 缓存管理 运行环境: 1 TOMCAT 5.5及以上版本. 2 JDK5.0及以上版本. 3 ...
所以没有上传导入的jar,其实就是默认的struts2和hibernate以及spring的包.该项目使用的jar包为以下. spring-beans.jar xwork-2.0.4.jar spring-context.jar ognl-2.6.11.jar spring-web.jar ...
- **开源框架**: 从Struts 1.x、AJAX到ECSide报表组件、Hibernate、Spring框架、Struts 2.0及相关的AJAX框架(如DWR、JSON、JQuery)等。 - **XML**: 学习XML的基础语法及其解析技术(DOM/SAX/JDOM)。 - **分布式...