骚包路技术菜
嗯哼
posts - 89, comments - 241, trackbacks - 0, articles - 1
::
首页
:: ::
联系
::
聚合
::
管理
Struts2文件上传以及空指针异常解决
Posted on 2009-09-27 08:54
saobaolu
阅读(4333)
评论(2)
编辑
收藏
所属分类:
java基础与算法
uploadFile.java
1
package
action;
2
3
import
java.io.File;
4
import
java.text.DateFormat;
5
import
java.text.SimpleDateFormat;
6
import
java.util.Date;
7
import
java.util.Random;
8
9
import
javax.servlet.ServletContext;
10
11
import
org.apache.commons.io.FileUtils;
12
import
org.apache.struts2.util.ServletContextAware;
13
14
import
com.opensymphony.xwork2.ActionSupport;
15
16
public
class
uploadFile
extends
ActionSupport
implements
ServletContextAware
{
17
18
private
static
final
long
serialVersionUID
=
-
5016873153441103539L
;
19
20
private
File doc;
21
private
String fileName;
22
private
String contentType;
23
24
private
ServletContext context;
25
26
public
void
setDoc(File file)
{
27
this
.doc
=
file;
28
}
29
30
public
void
setDocFileName(String fileName)
{
31
this
.fileName
=
fileName;
32
}
33
34
public
void
setDocContentType(String contentType)
{
35
this
.contentType
=
contentType;
36
}
37
38
public
void
setServletContext(ServletContext context)
{
39
this
.context
=
context;
40
}
41
42
public
String execute()
throws
Exception
{
43
String targetDirectory
=
context.getRealPath(
"
/upload
"
);
44
String targetFileName
=
generateFileName(fileName);
45
File target
=
new
File(targetDirectory, targetFileName);
46
47
FileUtils.copyFile(doc, target);
48
49
return
SUCCESS;
50
}
51
52
private
String generateFileName(String fileName)
{
53
DateFormat format
=
new
SimpleDateFormat(
"
yyMMddHHmmss
"
);
54
String formatDate
=
format.format(
new
Date());
55
56
int
random
=
new
Random().nextInt(
10000
);
57
58
int
position
=
fileName.lastIndexOf(
"
.
"
);
59
String extension
=
fileName.substring(position);
60
61
return
formatDate
+
random
+
extension;
62
}
63
}
64
struts.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<!
DOCTYPE struts PUBLIC
3
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4
"http://struts.apache.org/dtds/struts-2.0.dtd"
>
5
<
struts
>
6
<
package
name
="uploadFile"
extends
="struts-default"
>
7
<
action
name
="uploadFile"
class
="action.uploadFile"
>
8
<
result
>
/jsp/up.jsp
</
result
>
9
</
action
>
10
</
package
>
11
</
struts
>
web.xml(Struts2的xml,非上传的xml)
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<
web-app
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
6
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
7
<
filter
>
8
<
filter-name
>
struts2
</
filter-name
>
9
<
filter-class
>
org.apache.struts2.dispatcher.FilterDispatcher
</
filter-class
>
10
</
filter
>
11
<
filter-mapping
>
12
<
filter-name
>
struts2
</
filter-name
>
13
<
url-pattern
>
/*
</
url-pattern
>
14
</
filter-mapping
>
15
</
web-app
>
up.jsp(上传成功页面)
1
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
UTF-8
"
%>
2
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
3
<%
4
String
path
=
request.getContextPath();
5
String
basePath
=
request.getScheme()
+
"
://
"
+
request.getServerName()
+
"
:
"
+
request.getServerPort()
+
path
+
"
/
"
;
6
%>
7
8
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
9
<
html
>
10
<
head
>
11
<
base
href
="<%=basePath%>"
>
12
13
<
title
>
My JSP 'up.jsp' starting page
</
title
>
14
15
<
meta
http-equiv
="pragma"
content
="no-cache"
>
16
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
17
<
meta
http-equiv
="expires"
content
="0"
>
18
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
19
<
meta
http-equiv
="description"
content
="This is my page"
>
20
<!--
21
<link rel="stylesheet" type="text/css" href="styles.css">
22
-->
23
24
</
head
>
25
26
<
body
>
27
<
s:property
value
="contentType"
/><
br
/>
28
<
s:property
value
="dir"
/><
br
/>
29
</
body
>
30
</
html
>
31
上传页面:
1
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
UTF-8
"
%>
2
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
3
<%
4
String
path
=
request.getContextPath();
5
String
basePath
=
request.getScheme()
+
"
://
"
+
request.getServerName()
+
"
:
"
+
request.getServerPort()
+
path
+
"
/
"
;
6
%>
7
8
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
9
<
html
>
10
<
head
>
11
<
base
href
="<%=basePath%>"
>
12
13
<
title
>
最新产品发布页
</
title
>
14
15
<
meta
http-equiv
="pragma"
content
="no-cache"
>
16
<
meta
http-equiv
="cache-control"
content
="no-cache"
>
17
<
meta
http-equiv
="expires"
content
="0"
>
18
<
meta
http-equiv
="keywords"
content
="keyword1,keyword2,keyword3"
>
19
<
meta
http-equiv
="description"
content
="This is my page"
>
20
<!--
21
<link rel="stylesheet" type="text/css" href="styles.css">
22
-->
23
24
</
head
>
25
26
<
body
>
27
<
s:form
action
="uploadFile"
method
="post"
enctype
="multipart/form-data"
>
28
<
s:file
name
= "doc"
label
="上传视频"
/>
29
<
s:submit
value
="上传"
/>
30
</
s:form
>
31
</
body
>
32
</
html
>
33
很容易就会报错,空指针异常。
原因在于上传页面<s:file name="
这里面的值与action的值不匹配
" />
可是我上传成功之后,up.jsp页面没有传入任何值,郁闷了~
新手,多指点指点,谢谢~
没有所谓的命运,只有不同的选择!
Powered by:
BlogJava
Copyright © saobaolu
公告
留言簿
给我留言
查看公开留言
查看私人留言
我参与的团队
南工技术圈(0/0)
随笔分类
DataBase(5)
javaweb(7)
java基础与算法(38)
Linux操作系统(10)
前端(12)
微信公共平台开发(1)
随笔档案
2013年8月 (1)
2010年7月 (1)
2010年6月 (6)
2010年3月 (1)
2010年1月 (5)
2009年12月 (3)
2009年11月 (5)
2009年10月 (4)
2009年9月 (12)
2009年8月 (1)
2009年7月 (4)
2009年6月 (4)
2009年5月 (7)
2009年4月 (7)
2009年3月 (16)
2009年2月 (2)
2008年10月 (5)
2008年9月 (2)
2008年8月 (3)
java
Java入门
java初学者视频
专辑:J2EE入门教程-新浪播客
SQL语句教程
W3Cschool
墨白
My other site!
穿越大学的苦行僧
搜索
积分与排名
积分 - 90397
排名 - 632
最新评论
1. re: 南阳理工学院软件学院Java开发团队
@贺 怎么啦,保存不到数据库数据?自己Debug 跟一下,问题应该不大。
--张志杰
2. re: 南阳理工学院软件学院Java开发团队
@贺
帮忙看下程序哪出错了
--贺
3. re: 开发一个学生管理系统,将信息导入数据库
评论内容较长,点击标题查看
--贺
4. re: MySQL5.0驱动下载
的
--收到
5. re: MySQL乱码实战解决ERROR 1366 (HY000): Incorrect string value: '
浮云,,都是浮云,,,,到my.ini改下mysqld编码就好了
--张三