当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

用 struts 向数据库中储存图片


  这个例子是通过用Struts的FormFile来写入到MySQL中。。。
  
  用用户通过选一个图片,然后按submit就可以存入数据库中
  
  其中先要建立一个表:
  
  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");
  }
  }
相关内容
赞助商链接