速動(dòng)畫教程第二十二集 使用Struts上傳文件

          ?

          制作環(huán)境:

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

          ?

          步驟:

          ??? 新建工程 upload

          ?

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

          ?

          ??? 新建 一個(gè) jsp + action 這里將使用動(dòng)態(tài)的 ActionForm

          ?

          ??? 在新建表單對(duì)像時(shí)使用一個(gè)文件名和一個(gè)文件對(duì)像進(jìn)行提交

          ?

          ??? 修改動(dòng)態(tài) 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" ,這樣才可以提交二進(jìn)制類型的文件

          ?

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

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

          ?????? 改為

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

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

          ?

          ??? 修改 upfileAction.java 文件,修改后的內(nèi)容如下:

          ?

          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;

          ?????? // 聲明并獲取對(duì)像

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

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

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

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

          ??????? // 取當(dāng)前系統(tǒng)路徑

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

          ??????? try {

          ??????????? // 轉(zhuǎn)換文件為數(shù)據(jù)流

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

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

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

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

          ??????????? // 將文件寫入網(wǎng)站根目錄下

          ??????????????????????????? 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();

          ??? }

          ?

          }

          ?

          ??? 現(xiàn)在可以進(jìn)行測(cè)試了

          ?

          ??? 這時(shí)將會(huì)發(fā)現(xiàn),提交的文件及文件名稱都是亂碼!下面將解決亂碼

          ?

          ??? 增加一個(gè)過濾器,過濾器的代碼請(qǐng)查看包中的具體文件

          ?

          ??? web.xml 文件中加入以下配置內(nèi)容,過濾器的編碼設(shè)置為 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 的端口前也加入此配置內(nèi)容,關(guān)于詳細(xì)的和IIS集成方法和亂碼解決請(qǐng)查看第二十一集的錄像

          ?

          ??? 現(xiàn)在重新啟動(dòng)服務(wù),測(cè)試

          ?

          ??? 一切正常!

          ?

          ??? 本集教程到些結(jié)束!!!

          Feedback

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

          2006-07-19 17:18 by 的哥
          謝謝!0ksonic 的精彩教程,使我這個(gè)初學(xué)者入門快多了
          好了好多彎路,有點(diǎn)直通車的感覺。。。~~
          其實(shí) 我認(rèn)為做開發(fā)最好的方式就是 學(xué)習(xí)這種可視化的教程,通過demo實(shí)戰(zhàn)能力強(qiáng)多了~

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

          2006-11-01 15:43 by dy

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

          2006-12-06 13:59 by javaBoy
          hehe

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

          2007-05-28 10:05 by 馮偉強(qiáng)
          勞苦功高!

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件[未登錄]  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

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

          # re: 速動(dòng)畫教程第二十二集 使用Struts上傳文件  回復(fù)  更多評(píng)論   

          2008-03-13 12:09 by kingvax
          thx

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

          Copyright © oksonic

          主站蜘蛛池模板: 德清县| 炎陵县| SHOW| 灵川县| 泰和县| 章丘市| 鞍山市| 石泉县| 望谟县| 霍邱县| 九寨沟县| 章丘市| 舞阳县| 千阳县| 高清| 凤山市| 桑植县| 斗六市| 廊坊市| 漯河市| 达拉特旗| 长兴县| 丰台区| 鹰潭市| 汝南县| 宝丰县| 永年县| 陈巴尔虎旗| 嘉鱼县| 招远市| 花莲市| 江津市| 兴隆县| 岚皋县| 商丘市| 朝阳区| 饶河县| 科尔| 邢台县| 崇仁县| 铜梁县|