龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

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

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
这个例子是通过用Struts的FormFile来写入到MySQL中。用户通过选一个图片,然后按submit就可以存入数据库中。 1.首先需要建立一个表: create table test ( name varchar(20), pic blob ); 在MySQL的test库中

  这个例子是通过用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>
    <title>JSP 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;

  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;

  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");
      }
  }

精彩图集

赞助商链接