Chinaunix首页 | 论坛 | 博客
  • 博客访问: 565799
  • 博文数量: 136
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1343
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 23:18
文章分类

全部博文(136)

文章存档

2011年(28)

2009年(60)

2008年(48)

我的朋友

分类: Java

2009-03-17 13:12:31

上传页面的实现代码如下
upload.jsp

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="" prefix="bean" %>
<%@ taglib uri="" prefix="html" %>
<%@ taglib uri="" prefix="logic" %>
<%@ taglib uri="" prefix="tiles" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  <head>
    <html:base />
    
    <title>upload.jsp</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
    <html:form    action="" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td align="center" colspan="2">
                    <font size="4">Please Enter the Following Details</font>
                </td>
            </tr>
            <tr>
                <td align="left" colspan="2">
                    <font color="red"><htm:errors /></font>
                </td>
            </tr>
            <tr>
                <td align="right">
                    FileName
                </td>
                <td align="left">
                    <html:file property="theFile"></html:file>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                    <html:submit>Upload File</html:submit>
                </td>
            </tr>
        </table>
    </html:form>
  </body>
</html:html>

其中struts通过表单实现页面的上传时,需要在form表单把enctype="multipart/form-data",使用了这个属性后,HttpServletRequest对象的getParameter()方法就无法直接得到用户所提交的其他数据。好在struts对这种格式编码的数据进行了处理,使得用户提交的数据仍然可以被直接设置成actionForm种对应的值。

ActionForm:

 

package ActionForm;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class UploadForm extends ActionForm {
    
    private FormFile theFile;

    public FormFile getTheFile() {
        return theFile;
    }

    public void setTheFile(FormFile theFile) {
        this.theFile = theFile;
    }
}

UploadAction文件

 

package com.xpjjy.struts;

import java.io.File;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

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.upload.FormFile;

import ActionForm.UploadForm;

public class UploadAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception{
        UploadForm uploadForm = (UploadForm) form;
        
        FormFile file = uploadForm.getTheFile();
        String contentType = file.getContentType();
        String fileName = file.getFileName();
        int fileSize = file.getFileSize();
        byte[] fileData = file.getFileData();
        
        System.out.println("Contentype: "+ contentType);
        System.out.println("FileName: " + fileName);
        System.out.println("File Size "+ fileSize);
        
        FileOutputStream out = new FileOutputStream(new File("D:\\"+fileName));
        out.write(fileData);
        out.close();
        
        HttpSession session = request.getSession();
        session.setAttribute("contentType", contentType);
        session.setAttribute("fileName", fileName);
        session.setAttribute("fileSize", Integer.valueOf(fileSize));
        
        return mapping.findForward("download");
    }
}

 

httpSession的相关资料空间有

download.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="" prefix="html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Download and Open the File</title>
</head>
<body>
    <html:link action="/download">Download</html:link>
    <br>
    <html:link action="/open">Open</html:link>
</body>
</html>

 

DownloadFileAction

 

package com.xpjjy.struts;

import java.io.File;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DownloadAction;

public class DownloadFileAction extends DownloadAction {

    protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        HttpSession session = request.getSession();
        String contentType = (String)session.getAttribute("contentType");
        String fileName = (String)session.getAttribute("fileName");
        
        response.setHeader("content-disposition", "attachment; filename="+fileName);
        File file = new File("D:\\"+ fileName);
        return new FileStreamInfo(contentType,file);
    }

    
}

 

Strut 的配置文件 struts-config.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "">

<struts-config>
  <form-beans>
    <form-bean name="uploadForm" type="ActionForm.UploadForm" />
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action path="/OutputXMLAction"
            type="com.xpjjy.struts.OutputXMLAction"
            scope="request"                  
    >
            <forward name="success" path="/index.jsp" />
    </action>
    <action
      attribute="uploadForm"
      input="/upload.jsp"
      name="uploadForm"
      path="/upload"
      scope="request"
      type="com.xpjjy.struts.UploadAction"
      >
        <forward name="download" path="/download.jsp" />
    </action>
    
    <action path="/download"
            type="com.xpjjy.struts.DownloadFileAction"
            scope="request"
    >
    </action>

  </action-mappings>

  <message-resources parameter="com.xpjjy.struts.ApplicationResources" />
</struts-config>

 

其中open的功能还没实现,下午要去老师那讨论毕业设计的事情,下午有时间或者晚上再完善。

阅读(754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~