`
ninebirds
  • 浏览: 79461 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts+MySQL实现图片的存储与显示

阅读更多

struts上传与显示图片例子参考(二)2007年05月01日 星期二 上午 11:49例五:struts+MySQL实现图片的存储与显示

人事信息管理系统中,需要管理用户的个人身份照片。通常这种格式的照片只有几K到几十K大小,保存在数据库中易于进行管理和维护(如果放在文件夹下容易发生误操作而引起数据被修改或丢失)。

功能设计:给用户提供一个上传的界面,并设定上传文件的尺寸上限。用户上传的照片先统一保存在一个临时文件夹中,之后可以用<img>指向临时文件夹中的这个图片,让用户可以预览自己上传的照片。当所有的用户信息都收集完成后,将图片和其他信息一并提交,保存到数据库中。保存成功以后,删除临时文件夹中的图片。

实现步骤:

我使用的是从struts主页上下载的struts-1.2.8-src,其中web/examples/目录下有一个upload的例子,稍微修改了一下就直接拿过来用了。这是一个JSP页面、ActionForm和Action的组合。下面分别列出各自的代码。

upload.jsp的部分源代码:

<html:form action="/UploadSubmit" enctype="multipart/form-data">     

       请选择需要上传的照片:

      <html:file property="theFile"/>

      <html:submit value="上传"/>     

</html:form>

接下来需要在ActionForm中声明这个属性,并设置getter和setter方法,这部分源代码如下:

public class UploadForm extends ActionForm {

     protected FormFile theFile;

     public FormFile getTheFile() {

         return theFile;

     }

     public void setTheFile(FormFile theFile) {

         this.theFile = theFile;

     }

}

这个表单的theFile属性不是String或boolean,而是org.apache.struts.upload.FormFile。因为用户上传的是一个二进制文件,而HTTP协议是以文本形式传输数据的,这就需要进行转换。打个比方,一辆汽车需要从甲地送到乙地,但是两地之间只有一条索道,汽车没法开,所以就想个办法在甲地把汽车先拆了,把零件送到乙地再重新组装成一辆汽车。FormFile起的就是拆卸和组装的作用,只不过它把拆卸、传输和组装的过程都封装起来了,我们看到的是一辆汽车从甲地开进FormFile,过一会它就从乙地开出来了J我们要决定的只是把它停到什么地方,这就是Action的活了。

按照功能设计,Action要把这部车停到一个临时文件夹下面,这部分源代码如下:

public ActionForward execute(ActionMapping mapping,

                                  ActionForm form,

                                  HttpServletRequest request,

                                  HttpServletResponse response)

         throws Exception {

         if (form instanceof UploadForm) {

             UploadForm theForm = (UploadForm) form;

             //获取上传的数据文件

             FormFile file = theForm.getTheFile();

             //获取文件名

             String filename= file.getFileName();

             //设置图片文件临时存放的路径

             HttpSession session = request.getSession();

             String path = session.getServletContext().getRealPath("/") + "temp\\" + filename;

             try {

                 //读取文件中的数据,获取二进制的数据流

              InputStream stream = file.getInputStream();

              // 把数据写到指定路径

              OutputStream bos = new FileOutputStream(path);

              int bytesRead = 0;

              byte[] buffer = new byte[8192];

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

                  bos.write(buffer, 0, bytesRead);

              }

              bos.close();

              logger.info("The file has been written to \""

                        + path + "\"");

                 //设计一个标记,说明用户已经上传过照片了。              

              session.setAttribute("imageuploaded","true");

              session.setAttribute("filename",filename);


              // close the stream

              stream.close();

              bos.flush();

              bos.close();

             }catch (FileNotFoundException fnfe) {

                 return null;

             }catch (IOException ioe) {





分享到:
评论

相关推荐

    jsp+JavaScript+struts+hibernate+css+mysql的网上书店

    【标题】"jsp+JavaScript+struts+hibernate+css+mysql的网上书店"是一个基于Java技术栈的Web应用程序示例,它整合了多种技术来实现一个完整的网上书店系统。这个项目涉及到的主要技术包括: 1. **JSP(JavaServer ...

    简易教学管理系统(jsp+spring+struts+hibernate+mysql)

    在本系统中,MySQL存储所有教学管理相关的数据,如学生信息、课程信息、成绩记录等。开发者可以通过Hibernate与MySQL进行数据交互,执行增删改查等操作。 这个简易教学管理系统可能包含以下功能模块: 1. 学生管理...

    struts2+hibernate+mysql实现注册登录

    然后,通过Struts2的Action类处理用户提交的注册和登录请求,利用Hibernate与MySQL进行交互,完成数据的存取。同时,还需要实现用户输入的验证,例如检查用户名是否已存在,密码是否符合规则等。最后,可能会使用JSP...

    struts+hibernate+mysql做的增删改查小例子

    在这个"struts+hibernate+mysql做的增删改查小例子"中,我们将深入探讨这三个技术如何协同工作来实现数据的CRUD(Create、Read、Update、Delete)操作。 首先,Struts是一个基于MVC设计模式的Java框架,它主要用于...

    jsp+struts2+mysql实现登录

    **知识点详解** 1. **JavaServer Pages (JSP)**: JSP是Java平台上的一个标准,用于创建动态网页。...通过实践,开发者可以深入理解JSP、Struts2框架以及MySQL数据库的使用,并掌握登录功能的实现方法。

    Struts+mysql实现的地址簿

    在这个"Struts+mysql实现的地址簿"项目中,开发者利用Struts框架处理用户交互,而MySQL作为后台数据库存储和管理数据。 **Struts框架**: Struts是Apache软件基金会的一个开源项目,基于MVC(Model-View-Controller...

    jsp+Struts+mysql+Myeclipse登录注册例子

    同时,Struts的配置文件(struts-config.xml)定义了请求与Action之间的映射关系。 在JSP页面中,开发者会创建HTML表单,用户可以在其中输入用户名和密码。当用户提交表单时,JSP页面会通过Struts的ActionForm将...

    jsp+mysql+struts实现的一个财务管理系统

    【标题】"jsp+mysql+struts实现的一个财务管理系统"涉及了三个主要技术:Struts、MySQL和JSP,这些都是Web开发中常见的组件。本文将详细介绍这三个技术在财务管理系统中的应用及其相互配合。 **1. Struts框架** ...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    Struts2处理请求,Spring管理组件和事务,Hibernate负责数据持久化,而MySql存储数据。EhCache的加入提升了系统的性能,降低了数据库的压力。理解并掌握这些技术,对于开发高效、稳定的Web应用具有重要意义。

    基于struts+jsp+mysql的BBS系统

    Struts是Java Web开发中的一个MVC(Model-View-Controller)框架,JSP(JavaServer Pages)用于创建动态网页内容,而MySQL则作为数据库存储系统数据。 **Struts框架** Struts框架是Apache组织开发的一个开源项目,...

    struts+hibernate+css+mysql 网上书店

    在这个网上书店系统中,MySQL存储所有业务相关的数据,如书籍信息、库存、用户账户、订单详情等,同时支持复杂的查询操作,确保数据的快速访问和安全存储。 【综合应用】这个网上书店项目结合了这些技术,实现了...

    spring+struts2+hibernate+json+dtree+mysql实现的无限级联树(全)

    本项目"spring+struts2+hibernate+json+dtree+mysql实现的无限级联树(全)"是一个典型的企业级应用示例,它综合了前端与后端的多种技术,实现了数据的动态展示和交互。下面将详细解析该项目中的主要技术及其应用。 1...

    spring+struts+mysql-conn

    在"spring+struts+mysql-conn"项目中,MySQL是数据存储和管理的关键组件,Spring可能通过JDBC或JPA来与之交互,实现数据的增删改查操作。 项目中的"jar包整理"标签暗示了这个压缩包可能包含了这三者集成所需的库...

    myeclipse+tomcat+struts+mysql简单实例

    在"myeclipse+tomcat+struts+mysql"这样的组合中,MyEclipse作为开发工具,Tomcat作为运行环境,Struts作为业务逻辑的组织框架,而MySQL则作为持久化存储的数据后台。开发者通常会先在MyEclipse中创建一个新的Web...

    struts+mysql+eclipse实现分页

    下面我们将详细介绍如何利用Struts作为MVC框架,MySQL作为数据库,以及Eclipse作为集成开发环境来实现分页功能。 首先,Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发过程,...

    物流配货网(jsp+struts2+mysql)

    总之,物流配货网利用JSP、Struts2和MySQL构建了一个完整的Java Web应用,实现了物流行业的信息化管理。这一技术组合为系统的可扩展性、稳定性和安全性提供了坚实的基础,同时也便于后期的维护和升级。

    网上书城系统(Struts+Hibernate+Mysql).rar

    《网上书城系统:Struts、Hibernate与MySQL的整合应用》 在当今信息化时代,网上购物已经成为人们日常生活的一部分,而网上书城系统则是其中一个重要领域。这个系统通常由多个技术框架构建,以实现高效、稳定且用户...

    struts+hibernate+spring+mysql做的jsp应用系统

    Struts、Hibernate、Spring 和 MySQL 是Java Web开发中常见的四大技术框架,它们组合起来可以构建高效、可维护的Web应用程序。本项目“struts+hibernate+spring+mysql做的jsp应用系统”是一个完整的示例,旨在帮助...

Global site tag (gtag.js) - Google Analytics