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

来源:岁月联盟 编辑:zhuzhu 时间:2008-02-19

这个例子是通过用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.xslpackage 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.xslpackage 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");    }}