posts - 89, comments - 241, trackbacks - 0, articles - 1
             :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

          Struts2文件上傳以及空指針異常解決

          Posted on 2009-09-27 08:54 saobaolu 閱讀(4340) 評論(2)  編輯  收藏 所屬分類: java基礎與算法

          uploadFile.java

           1package action;
           2
           3import java.io.File;    
           4import java.text.DateFormat;    
           5import java.text.SimpleDateFormat;    
           6import java.util.Date;    
           7import java.util.Random;    
           8   
           9import javax.servlet.ServletContext;    
          10   
          11import org.apache.commons.io.FileUtils;    
          12import org.apache.struts2.util.ServletContextAware;    
          13   
          14import com.opensymphony.xwork2.ActionSupport;    
          15   
          16public 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<%
           4String path = request.getContextPath();
           5String 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<%
           4String path = request.getContextPath();
           5String 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頁面沒有傳入任何值,郁悶了~
          新手,多指點指點,謝謝~

          沒有所謂的命運,只有不同的選擇!
          主站蜘蛛池模板: 玉环县| 启东市| 酉阳| 东安县| 桃源县| 青州市| 承德市| 六安市| 侯马市| 申扎县| 乌兰浩特市| 顺义区| 浏阳市| 璧山县| 青河县| 白玉县| 葵青区| 太白县| 黔东| 墨玉县| 池州市| 廊坊市| 黑龙江省| 同江市| 本溪| 宜川县| 双峰县| 海宁市| 保德县| 六枝特区| 阜康市| 西峡县| 汉沽区| 礼泉县| 徐州市| 达州市| 米泉市| 娄烦县| 尼玛县| 奎屯市| 清河县|