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