速動畫教程第二十二集 使用Struts上傳文件

          Posted on 2006-07-05 23:30 oksonic 閱讀(8063) 評論(22)  編輯  收藏 所屬分類: java

          速動畫教程第二十二集 使用Struts上傳文件

          ?

          制作環境:

          ??? Eclipse3.1.1? 、 MyEclipse4.1? 、 Tomcat5.5.x

          ?

          步驟:

          ??? 新建工程 upload

          ?

          ??? 添加 Struts 框架,使用 Struts1.2 版本

          ?

          ??? 新建 一個 jsp + action 這里將使用動態的 ActionForm

          ?

          ??? 在新建表單對像時使用一個文件名和一個文件對像進行提交

          ?

          ??? 修改動態 From 的類型為 org.apache.struts.upload.FormFile

          ?

          ??? < form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >

          ????? < form-property name = "filename" type = "java.lang.String" />

          ????? < form-property name = "filedata" type = "java.lang.String" />

          ??? </ form-bean >

          ?

          ??? 改為

          ?

          ??? < form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >

          ????? < form-property name = "filename" type = "java.lang.String" />

          ????? < form-property name = "filedata" type = " org.apache.struts.upload.FormFile " />

          ??? </ form-bean >

          ?

          ??? 修改 upfile.jsp 文件,在<Form> 中加入 enctype = "multipart/form-data" ,這樣才可以提交二進制類型的文件

          ?

          ??? 修改文件第一行代碼

          ?????? <%@ page language = "java" %>

          ?????? 改為

          ??? <%@ page contentType = "text/html;charset=UTF-8" language = "java" %>

          ?????? 這里將使用 UTF-8 的編碼格式

          ?

          ??? 修改 upfileAction.java 文件,修改后的內容如下:

          ?

          package com.test.struts.action;

          ?

          import java.io.FileNotFoundException;

          import java.io.FileOutputStream;

          import java.io.IOException;

          import java.io.InputStream;

          import java.io.OutputStream;

          ?

          import javax.servlet.http.HttpServletRequest;

          import javax.servlet.http.HttpServletResponse;

          ?

          import org.apache.struts.action.Action;

          import org.apache.struts.action.ActionForm;

          import org.apache.struts.action.ActionForward;

          import org.apache.struts.action.ActionMapping;

          import org.apache.struts.action.DynaActionForm;

          import org.apache.struts.upload.FormFile;

          ?

          /**

          ?* MyEclipse Struts

          ?* Creation date: 07-05-2006

          ?*

          ?* XDoclet definition:

          ?* @struts.action path="/upfile" name="upfileForm" input="/upfile.jsp" scope="request" validate="true"

          ?*/

          public class UpfileAction extends Action {

          ?

          ??? // --------------------------------------------------------- Instance Variables

          ?

          ??? // --------------------------------------------------------- Methods

          ?

          ??? /**

          ??? ?* Method execute

          ??? ?* @param mapping

          ??? ?* @param form

          ??? ?* @param request

          ??? ?* @param response

          ??? ?* @return ActionForward

          ??? ?*/

          ??? public ActionForward execute(

          ?????? ActionMapping mapping,

          ?????? ActionForm form,

          ?????? HttpServletRequest request,

          ?????? HttpServletResponse response) {

          ?????? DynaActionForm upfileForm = (DynaActionForm) form;

          ?????? // 聲明并獲取對像

          ?????????????????? String filename = upfileForm.getString("filename");

          ??????? // 輸出文件名

          ?????????????????? System.out.println(filename);

          ??????? FormFile filedata = (FormFile) upfileForm.get("filedata");

          ??????? // 取當前系統路徑

          ?????????????????? String filePath = request.getRealPath("/");

          ??????? try {

          ??????????? // 轉換文件為數據流

          ??????????????????????????? InputStream stream = filedata.getInputStream();

          ??????????? // 建立輸出流

          ??????????????????????????? OutputStream bos = new FileOutputStream(filePath + "/" +

          ??????????????????? filedata.getFileName());

          ??????????? // 將文件寫入網站根目錄下

          ??????????????????????????? int bytesRead = 0;

          ??? ??????? byte[] buffer = new byte[8192];

          ??? ??????? while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {

          ??? ??????? bos.write(buffer, 0, bytesRead);

          ??? ??????? }

          ??? ??????? bos.close();

          ??? ??????? stream.close();

          ??????? } catch (FileNotFoundException e) {

          ??????????? // TODO Auto-generated catch block

          ??????????? e.printStackTrace();

          ??????? } catch (IOException e) {

          ??????????? // TODO Auto-generated catch block

          ??????????? e.printStackTrace();

          ??????? }

          ??????? // 返回到提交頁面

          ?????????????????? return mapping.getInputForward();

          ??? }

          ?

          }

          ?

          ??? 現在可以進行測試了

          ?

          ??? 這時將會發現,提交的文件及文件名稱都是亂碼!下面將解決亂碼

          ?

          ??? 增加一個過濾器,過濾器的代碼請查看包中的具體文件

          ?

          ??? web.xml 文件中加入以下配置內容,過濾器的編碼設置為 UTF-8

          ?????? < filter >

          ?????? < filter-name > Set Character Encoding </ filter-name >

          ?????? < filter-class > com.test.SetCharacterEncodingFilter </ filter-class >

          ?????? < init-param >

          ?????????? < param-name > encoding </ param-name >

          ?????????? < param-value > UTF-8 </ param-value >

          ?????? </ init-param >

          ??? </ filter >

          ??? < filter-mapping >

          ?????? < filter-name > Set Character Encoding </ filter-name >

          ?????? < url-pattern > /* </ url-pattern >

          ??? </ filter-mapping >

          ??? < filter-mapping >

          ?????? < filter-name > Set Character Encoding </ filter-name >

          ?????? < servlet-name > action </ servlet-name >

          ??? </ filter-mapping >

          ?

          ??? 配置 Tomcat 的 server.xml 文件,文件在 Tomcat_Home/conf 中

          ?

          ??? 在端口配置的前面加入 URIEncoding="UTF-8" 如果使用了和IIS集成的話需要在 8009 的端口前也加入此配置內容,關于詳細的和IIS集成方法和亂碼解決請查看第二十一集的錄像

          ?

          ??? 現在重新啟動服務,測試

          ?

          ??? 一切正常!

          ?

          ??? 本集教程到些結束!!!

          Feedback

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-07-06 13:46 by goby
          你可以做一個struts+hibernate分頁顯示數據和分頁顯示查詢數據的教程,讓我們初學者容易上手的,謝謝.
          你所做的教程,我都看了,很好.

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-07-11 09:01 by 常客
          一句話都不說了!!!!!

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-07-19 17:18 by 的哥
          謝謝!0ksonic 的精彩教程,使我這個初學者入門快多了
          好了好多彎路,有點直通車的感覺。。。~~
          其實 我認為做開發最好的方式就是 學習這種可視化的教程,通過demo實戰能力強多了~

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-07-27 16:08 by sfsf
          無語

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-07-28 10:41 by wjq
          非常感謝!!!!!
          最新技術希望都能看到教程.

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-08-09 00:00 by lu
          怎么我看不見下載地址?

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-08-18 23:17 by woody
          支持樓主!!!!

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-11-01 15:43 by dy

          com.test.SetCharacterEncodingFilter
          過濾器的代碼在哪

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-11-10 18:02 by a[匿名]
          aaa

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-12-04 15:18 by xiao xiao
          太好了
          有好東西學啦

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2006-12-06 13:59 by javaBoy
          hehe

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-01-05 14:11 by thinker[匿名]
          upfile.jsp和form修改后的代碼怎么沒列出來啊??lz,能不能帖出來啊!
          我沒看到下載地址啊!

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-01-21 10:43 by dawang
          very good

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-01-31 10:06 by 善良A溫柔I我
          謝謝博主
          辛苦拉

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-04-24 18:16 by wangrucai
          vb 好呀,這在看,這個就是我的老師,

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-04-27 10:48 by yueyue
          好啊!(:

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-05-07 19:47 by kisser
          很好

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-05-21 13:54 by xuechao
          除了感謝 還是感謝

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-05-28 10:05 by 馮偉強
          勞苦功高!

          # re: 速動畫教程第二十二集 使用Struts上傳文件[未登錄]  回復  更多評論   

          2007-07-23 10:02 by qq
          怎么不能下載

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2007-09-24 20:49 by fenix
          樓主樓主我愛你就像老鼠愛大米呀

          # re: 速動畫教程第二十二集 使用Struts上傳文件  回復  更多評論   

          2008-03-13 12:09 by kingvax
          thx

          posts - 103, comments - 1104, trackbacks - 0, articles - 0

          Copyright © oksonic

          主站蜘蛛池模板: 广宁县| 万源市| 陇西县| 辉南县| 额尔古纳市| 化德县| 衡山县| 襄垣县| 永康市| 新丰县| 工布江达县| 四子王旗| 南部县| 资中县| 合江县| 江北区| 郧西县| 遂平县| 吉安市| 双鸭山市| 宁化县| 汪清县| 关岭| 松原市| 日土县| 武汉市| 奇台县| 南岸区| 根河市| 金平| 友谊县| 揭东县| 连山| 黄浦区| 滕州市| 竹山县| 新密市| 宜章县| 若尔盖县| 措美县| 永胜县|