实例讲解如何用Struts向MySQL中储存图片

2016-02-19 20:28 14 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享实例讲解如何用Struts向MySQL中储存图片教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

  这个例子是通过用Struts的FormFile来写入到MySQL中。用户通过选一个图片,然后按submit就可以存入数据库中。

  1.首先需要建立一个表:

  
  create table test
  ( name varchar(20),
  pic blob );
  在MySQL的test库中

  %@ page language="java"%
  %@ taglib uri=
  "http://jakarta.apache.org/struts/tags-bean"
  prefix="bean"%
  %@ taglib uri=
  "http://jakarta.apache.org/struts/tags-html"
  prefix="html"%
   
  html
   head
    titleJSP for multiForm form/title
   /head
   body
    html:form action="/multi"
    enctype="multipart/form-data"
    一定要用enctype=“multipart/form-data“
    不然就提交之后就会有抛出异常
     file : html:file property="file"/
     html:errors property="file"//br
     name : html:text property="name"/
     html:errors property="name"//br
     html:submit/html:cancel/
    /html:form
   /body
  /html

  2. 相对应的ActionForm:

  
  //Created by MyEclipse Struts
  // XSL source (default):
  platform:/plugin/com.genuitec.eclipse.
  cross.easystruts.eclipse_3.8.1
  /xslt/JavaClass.xsl

  package saoo.struts.form;

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

  /**
   * MyEclipse Struts
   * Creation date: 08-24-2004
   *
   * XDoclet definition:
   * @struts:form name="multiForm"
   */
  public class MultiForm extends ActionForm
  {

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

      /** file property */
      private FormFile file;

      /** name property */
      private String name;

      // -----------------
  Methods

      /**
       * Returns the file.
       * @return FormFile
       */
      public FormFile getFile()
   {
          return file;
      }

      /**
       * Set the file.
       * @param file The file to set
       */
      public void setFile(FormFile file)
   {
          this.file = file;
      }

      /**
       * Returns the name.
       * @return String
       */
      public String getName()
   {
          return name;
      }

      /**
       * Set the name.
       * @param name The name to set
       */
      public void setName(String name)
   {
          this.name = name;
      }
  }

  
  3. 对就的Action:

  
  //Created by MyEclipse Struts
  // XSL source (default):
  platform:/plugin/com.genuitec.eclipse.
  cross.easystruts.eclipse_3.8.1
  /xslt/JavaClass.xsl

  package saoo.struts.action;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  import java.io.FileNotFoundException;
  import java.io.IOException;
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.SQLException;

  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;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  import saoo.struts.form.MultiForm;

  /**
   * MyEclipse Struts
   * Creation date: 08-24-2004
   *
   * XDoclet definition:
   * @struts:action path="/multi"
   name="multiForm" input="/form/multi.jsp"
   scope="request"
   */
  public class MultiAction 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)
    {
          MultiForm multiForm = (MultiForm)
    form;
          FormFile file = multiForm.getFile();

          String name = multiForm.getName();
          try {
              Class.forName
     ("org.gjt.mm.mysql.Driver");
              String url="jdbc:mysql:
     ///test";
              Connection con=DriverManager.getConnection
     (url,"root","password");
              String sql="insert into pic values (?,?)";
              PreparedStatement ps
     =con.prepareStatement(sql);
              ps.setString(1, name);
  //加入图片到数据库
     
  ps.setBinaryStream
  (2,file.getInputStream(),
  file.getFileSize());
              ps.executeUpdate();
              ps.close();
              con.close();
          } catch (SQLException se)
    {
              se.printStackTrace();
              return mapping.findForward("error");
          } catch (ClassNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              return mapping.findForward("error");
          } catch (FileNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              return mapping.findForward("error");
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              return mapping.findForward("error");
          }
          return mapping.findForward("success");
      }
  }

来源:http://www.tulaoshi.com/n/20160219/1623761.html

延伸阅读
本文从多个角度来讲解如何在Access数据库上如何上传并且显示上所上传图片。 在动态网站制做过程中,需要上传图片、显示图片,上传的图片要能够保存在数据库中,一般小型网站只支持Access数据库,如何上传图片,将其保存在数据库中并将其显示出来,是数据库+ASP应用技术之一。许多书籍只介绍了SQL数据库的方法,而对Access却很少提及。网上有...
实例讲解如何巧用延时自拍 延时自拍是现在相机都会提供的一项功能。通常我们认为延时自拍只是方便摄影师自拍,或者方便我们拍摄合影,其实延时自拍的作用不止于此。巧用延时自拍可以拍到很多意想不到的效果。 实例一:巧妙的自拍构想 日本的浮游少女大家肯定都很熟悉,在早些时候浮游简直红遍了整个网络。其实这些照片中的浮游...
实战讲解如何用环境与景深   在人像摄影中,随着人物的肢体动作、表情神态以及拍摄环境的不断变换,画面的效果也会风格迥异。但无论怎样变换,有一个核心的要点一定要引起重视,那就是人像摄影要以人为本,也就是说要确保人物在画面中的视觉中心地位。所以需要通过控制景深、使用不同的景别、合理选择拍摄环境以及利用不同的拍摄视角...
标签: PHP
虽然在customer_num和order_num上建有索引,但是在上面的语句中优化器还是使用顺序存取路径扫描整个表。因为这个语句要检索的是分离的行的集合,所以应该改为如下语句:
实例讲解如何拍好你的娃   有一次在公园拍摄时遇到朋友带着家人,在朋友要求下帮他儿子拍照片,还没端起相机,这位朋友和他的爱人开始了习惯性的引导:快看镜头来笑一个耶!于是我放下了手中的相机,告诉他们,没必要让孩子摆拍。 如何拍好孩子,为什么自己拍的孩子不可爱。这是很多有孩子的朋友的烦恼。 其实,拍孩子这里面...

经验教程

691

收藏

61
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部