jsp多文件上传到数据库

发布时间:   来源:文档文库   
字号:
该资源来自网络,经测试好用!所以推荐,分享给大家!
数据库的创建:
数据库名叫:csdn
表名:savepicture
DROPTABLEIFEXISTS`savepicture`;CREATETABLE`savepicture`(
`id`int(10NOTNULLauto_increment,`picture`blobNOTNULL,PRIMARYKEY(`id`
ENGINE=InnoDBDEFAULTCHARSET=utf8;
好动手创建工程啦:


其实非常简单,一看就明白。把需要的包该导的都导了就行了。
接着我们创建上传页面:

<%@pagelanguage="java"pageEncoding="UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%>

FileUpload
/css/fileupload.css"rel="stylesheet"type="text/css">


style="width:600px;border-color:#000000;padding-left:10px">
上传图片


enctype="multipart/form-data">
图片路径:



提交"cssClass="button">

很简单,就是个上传框和按钮,别的没有了。至于一些css就是稍微的装饰装饰,一会也在

下面写上!
上传成功的画面:
<%@pagelanguage="java"pageEncoding="UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%>HTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">Image</word><wordps=''class='13_1'>Listhref="<%=request.getContextPath(%>/css/fileupload.css"rel="stylesheet"type="text/css">value="#list"id="picture">class="divfloat">src='outPicture.action?id=value="#picture.id"/>'>

下面我们看看struts2的配置文件:

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
value="messageResource"/>


class="org.csdn.action.FileUploadAction">

image/bmp,image/png,image/gif,image/jpg
404800
/uploadSuccess.jsp/fileUpload.jsp


class="org.csdn.action.OutPictureAction">
/uploadSuccess.jsp


至于里面的东西是什么,大家肯定根据名字一看就知道了。
上面我引用了messageResource资源文件,为了显示错误消息。比如上传类型不正确,超过大小,以及上传失败。
下面就是资源文件中的内容。
struts.messages.error.content.type.not.allowed=Thefileyouuploadedisnotaimagestruts.messages.error.file.too.large=thispicutreistoolargefileupload.fail=fileuploadisfail
如果没有重新定义上面两个key的话,显示的会是struts2默认的错误消息,很是难看,也乱起八糟的。所以我重新定义了。
接着我们就开始写上传和输出图片的action,以及相关的类信息
上传的action
importjava.io.File;importjava.util.List;
importorg.csdn.service.FileUploadService;importorg.csdn.vo.Picture;
importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;/**
*@authorclosewubq*/
publicclassFileUploadActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;privateFilefile;
publicFilegetFile({returnfile;}
publicvoidsetFile(Filefile{this.file=file;}/**
*上传文件*/
@Override
publicStringexecute({
FileUploadServicefuservice=newFileUploadService(;if(fuservice.fileUpload(file{
Listlist=fuservice.findAll(;

ActionContextcxt=ActionContext.getContext(;cxt.put("list",list;returnSUCCESS;}else{
super.addActionError(this.getText("fileupload.fail";returnINPUT;}}}
非常简单,因为我只单纯的用了struts2,没有用spring。所以FileUploadService就硬编码写在里面了。
图片上传的主要业务类
importjava.io.File;
importjava.io.FileInputStream;importjava.io.InputStream;importjava.sql.Connection;
importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importjava.util.List;
importorg.csdn.connection.GetConnection;importorg.csdn.vo.Picture;/**
*@authorclosewubq*/
publicclassFileUploadService{/**
*上传图片到数据库*@paramflie*@returnboolean
*上传是否成功*/
publicbooleanfileUpload(Fileflie{FileInputStreamin=null;Connectionconn=null;PreparedStatementps=null;try{
in=newFileInputStream(flie;
Stringsql="insertintosavepicture(picturevalue(?";conn=GetConnection.getConn(;

if(conn==null{
System.out.println("连接为null";returnfalse;}
ps=conn.prepareStatement(sql;
ps.setBinaryStream(1,in,in.available(;if(ps.executeUpdate(>0{
GetConnection.close(conn,ps,null;returntrue;}else{
GetConnection.close(conn,ps,null;returnfalse;}
}catch(Exceptione{
System.out.println(e.getMessage(;GetConnection.close(conn,ps,null;returnfalse;}}/**
*检索所有图片*@returnlist
*返回所有图片记录*/
publicListfindAll({
Listlist=newArrayList(;Picturepic=null;
Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;try{
Stringsql="selectidfromsavepicture";conn=GetConnection.getConn(;if(conn==null{
System.out.println("连接为null";returnnull;}
ps=conn.prepareStatement(sql;rs=ps.executeQuery(;while(rs.next({pic=newPicture(;pic.setId(rs.getInt("id";list.add(pic;

}
GetConnection.close(conn,ps,rs;returnlist;
}catch(Exceptione{e.printStackTrace(;
GetConnection.close(conn,ps,rs;returnnull;}}/**
*根据图片ID获取流对象*@paramid
*@returnInputStream*/
publicInputStreamgetPicById(intid{Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;InputStreamis=null;try{
Stringsql="selectpicturefromsavepicturewhereid=?";conn=GetConnection.getConn(;ps=conn.prepareStatement(sql;ps.setInt(1,id;
rs=ps.executeQuery(;if(rs.next({
is=rs.getBinaryStream("picture";GetConnection.close(conn,ps,rs;returnis;}
GetConnection.close(conn,ps,rs;returnnull;
}catch(Exceptionex{ex.printStackTrace(;
GetConnection.close(conn,ps,rs;returnnull;}}}
简单的写了个jdbc链接的获取类。


importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;
importjava.sql.SQLException;/**
*获取数据库链接*@authorclosewubq*/
publicclassGetConnection{/**
*获取数据库连接*@returnConnection
*返回数据库连接*/
publicstaticConnectiongetConn({try{
Class.forName("com.mysql.jdbc.Driver".newInstance(;
Stringurl="jdbc:mysql://localhost/csdn?user=root&password=";Connectionconnection=DriverManager.getConnection(url;returnconnection;}catch(Exceptione{e.printStackTrace(;returnnull;}}/**
*关闭连接释放资源*@paramconn*@paramrs*@paramst*/
publicstaticvoidclose(Connectionconn,PreparedStatementps,ResultSetrs{if(rs!=nulltry{
rs.close(;
}catch(SQLExceptione{e.printStackTrace(;}
if(ps!=nulltry{

ps.close(;
}catch(SQLExceptione{e.printStackTrace(;}
if(conn!=nulltry{
conn.close(;
}catch(SQLExceptione{e.printStackTrace(;}}}
还有保存图片信息的VO
publicclassPicture{privateintid;
publicintgetId({returnid;}
publicvoidsetId(intid{this.id=id;}}
输出图片信息的Action
importjava.io.InputStream;
importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts2.ServletActionContext;importorg.csdn.service.FileUploadService;
importcom.opensymphony.xwork2.ActionSupport;/**
*图片输出
*@authorclosewubq**/
publicclassOutPictureActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;

@Override
publicStringexecute(throwsException{
HttpServletRequestrequest=ServletActionContext.getRequest(;intid=Integer.parseInt(request.getParameter("id";FileUploadServiceservice=newFileUploadService(;InputStreamin=service.getPicById(id;
HttpServletResponseresponse=ServletActionContext.getResponse(;response.setContentType("image/gif";intsize=in.available(;
byte[]image=newbyte[size];in.read(image;
ServletOutputStreamout=response.getOutputStream(;out.write(image;returnnull;}}

本文来源:https://www.2haoxitong.net/k/doc/8cac27d03186bceb19e8bb75.html

《jsp多文件上传到数据库.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关推荐