· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

教您如何用Struts向数据库中储存图片

发布时间:2005.11.17 10:29     来源:Java研究组织    作者:ytfh

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

(T117)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 播放基于Java的QuickTime流媒体系列之一 (11-16) · 新一代的Web Service实现包——AXIS2 (11-16)
· 开发中如何按需访问Eclipse Workspace (11-16) · 专家讲述J2EE中的多字节字符的处理 (11-16)
· 用实例说明如何用JavaScript生成XML (11-16) · IE中使用ActiveX功能查找并显示XML数据 (11-16)
· Tomcat配置技巧Top 10排行榜 (11-15) · 点击热点:对Gmail中使用AJAX技术的研究 (11-15)
· Java理论与实践:再谈Urban性能之传言 (11-15) · 播放基于Java的QuickTime流媒体系列之一 (11-15)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..