zoukankan      html  css  js  c++  java
  • Struts学习之 实现文件上传、下载操作

    一、Struts-cofig.xml流程图

    二、register.jsp页面文件

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
      <head>
        <title>My JSP 'register.jsp' starting page</title>
      </head>
      <body>
          <div align="center">
        <h1>注册用户</h1>
        <!-- 如果我們的表單有文件控件,則需要重新指定表單編碼方式 -->
        <form enctype="multipart/form-data" action="register.do" method="post">
            Name:<input type="text" name="name"/><br/>
            Photo:<input type="file" name="photo"/><br/>
        <input type="submit" value="注冊用戶"/>
        </form>
        </div>
      </body>
    </html>
    注册页面

    三、RegisterAction文件

    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.zkj.struts.action;
    
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.UUID;
    
    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.upload.FormFile;
    
    import com.zkj.entity.Users;
    import com.zkj.service.UsersService;
    import com.zkj.struts.form.UserForm;
    import com.zkj.utils.UpdownUtils;
    
    /**
     * MyEclipse Struts Creation date: 04-25-2015
     * 
     * XDoclet definition:
     * 
     * @struts.action path="/register" name="userForm" scope="request"
     */
    public class RegisterAction extends Action {
        /*
         * Generated Methods
         */
    
        /**
         * Method execute
         * 
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return ActionForward
         */
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
            UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    
            // 取出表單數據
            String name = userForm.getName();
            FormFile ff = userForm.getPhoto();
            // 通過formfile我們可以獲取關於用戶上傳文件的各種信息
            String sFileName = ff.getFileName();
            String sFileNameNew = UpdownUtils.getUuidFileName(sFileName);
    
            int fsize = ff.getFileSize();
    
            InputStream is = null;
            OutputStream os = null;
            try {
                // 取得輸入流
                is = ff.getInputStream();
    
                // 得到输出流并保存到tomcat服务器的绝对路径
                String sPath = request.getSession().getServletContext()
                        .getRealPath("/file");
                os = new FileOutputStream(sPath + "\" + sFileNameNew);
    
                int len = 0;
                byte[] buff = new byte[1024];
                // 循环处理
                while ((len = is.read(buff)) > 0) {
                    // 读入一段,写入一段
                    os.write(buff, 0, len);
                }
    
                UsersService service = new UsersService();
    
                try {
                    Users user = new Users();
                    user.setUsername(name);
                    user.setPhoto(sFileName);
                    user.setPhotouuid(sFileNameNew);
                    service.saveUser(user);
                } finally {
                    service = null;
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (is != null)
                    try {
                        is.close();
                    } catch (Exception e) {
    
                    }
                if (os != null)
                    try {
                        os.close();
                    } catch (Exception e) {
    
                    }
            }
    
            return mapping.findForward("ok");
        }
    }
    上传Action

    四、list.jsp页面文件

     1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 <html>
     5   <head>
     6    
     7     <title>My JSP 'list.jsp' starting page</title>
     8   </head>
     9   
    10   <body>
    11     <div align="center">
    12     <h1>用户列表</h1>
    13     <table>
    14     <tr>
    15     <td>主键</td><td>姓名</td><td>照片</td><td>操作</td>
    16     </tr>
    17     <c:forEach var="user" items="${arr}">
    18     <tr>
    19     <td>${user.userid }</td><td>${user.username }</td>
    20     <td><img src="file/${user.photouuid}" width="50px"/></td>
    21     <td><a href="downloadFile.do?id=${user.userid}">下载图片文件</a></td>
    22     </tr>
    23     </c:forEach>
    24     </table>
    25     </div>
    26   </body>
    27 </html>
    用户列表(带图片)

    五、ListAction.java文件

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
            // TODO Auto-generated method stub
            UsersService us = new UsersService();
            try {
                response.setCharacterEncoding("utf-8");
                request.setAttribute("arr", us.getAllUsers());
                return mapping.findForward("list");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                us = null;
            }
    
            return null;
        }
    View Code

    六、DownloadFileAction.java

    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.zkj.struts.action;
    
    import java.io.*;
    
    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 com.zkj.entity.Users;
    import com.zkj.service.UsersService;
    
    /**
     * MyEclipse Struts Creation date: 04-26-2015
     * 
     * XDoclet definition:
     * 
     * @struts.action
     */
    public class DownloadFileAction extends Action {
        /*
         * Generated Methods
         */
    
        /**
         * Method execute
         * 
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return ActionForward
         */
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
            // TODO Auto-generated method stub
            // 下句,控制可以显示中文
            response.setContentType("text/html;charset=utf-8");
    
            int nId = Integer.parseInt(request.getParameter("id"));
    
            InputStream is = null;
            OutputStream os = null;
            UsersService us = new UsersService();
            try {
                Users user = us.getUserById(nId);
    
                // 得到输出流并保存到tomcat服务器的绝对路径
                String sPath = request.getSession().getServletContext()
                        .getRealPath("/file");
    
                String sFileName = sPath + "\" + user.getPhotouuid();
                String sTrueName = user.getPhoto();
                //如果源文件名中文,需要进行url编码
                sTrueName = java.net.URLEncoder.encode(sTrueName, "utf-8");
                //告诉浏览器,有一个文件需要下载
                response.setHeader("Content-Disposition", "attachment; filename="
                        + sTrueName);
                // 取得輸入流
                is = new FileInputStream(sFileName);
    
                os = response.getOutputStream();
    
                int len = 0;
                byte[] buff = new byte[1024];
                // 循环处理
                while ((len = is.read(buff)) > 0) {
                    // 读入一段,写入一段
                    os.write(buff, 0, len);
                }
    
                return mapping.findForward("lst");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (is != null)
                    try {
                        is.close();
                    } catch (Exception e) {
    
                    }
                if (os != null)
                    try {
                        os.close();
                    } catch (Exception e) {
    
                    }
                us = null;
            }
    
            return null;
        }
    }
    View Code

    七、关键的UsersService业务处理类基于hibernate实现代码

    package com.zkj.service;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.hibernate.*;
    
    import com.zkj.entity.Users;
    import com.zkj.sessionfactory.HibernateSessionFactory;
    
    public class UsersService {
    
        public static SessionFactory sf;
    
        static {
            try {
                // 创建sessionfactory实例
                sf = HibernateSessionFactory.getSessionFactory();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public boolean saveUser(Users user) {
            boolean result = false;
    
            Session session = sf.openSession();
            Transaction trans = null;
            try {
                trans = session.beginTransaction();
                session.save(user);
                trans.commit();
            } catch (Exception e) {
                if (trans != null) {
                    trans.rollback();
                }
                e.printStackTrace();
            } finally {
                session.close();
            }
    
            return result;
        }
    
        public ArrayList<Users> getAllUsers() {
    
            ArrayList<Users> result = new ArrayList<Users>();
    
            Session session = sf.openSession();
            try {
                List list = session.createQuery("from com.zkj.entity.Users u")
                        .list();
    
                Iterator it = list.iterator();
                while (it.hasNext()) {
                    Users user = (Users) it.next();
                    result.add(user);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                session.close();
            }
    
            return result;
        }
    
        public Users getUserById(int aId) {
    
            Users result = null;
    
            Session session = sf.openSession();
            try {
                List lst = session.createQuery(
                        "from com.zkj.entity.Users u where u.userid=" + aId).list();
    
                Iterator it = lst.iterator();
                if (it.hasNext()) {
                    result = (Users) it.next();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                session.close();
            }
    
            return result;
        }
    }
    View Code
  • 相关阅读:
    环境搭建:Vue环境搭建和项目初始化(windows)
    文件扩展关联命令
    关闭任务栏上右键的打开历史记录
    CDN基本原理和功能浅析
    制作支持UEFI启动的原装系统安装盘
    文件被占用如何查看
    BIOS和CMOS的区别
    PKI公钥基础设施简介
    网络安全通信https工作原理
    常见加密算法简介
  • 原文地址:https://www.cnblogs.com/jiqiwoniu/p/4458380.html
Copyright © 2011-2022 走看看