jsp多文件上传到数据库.docx

上传人:b****3 文档编号:3755534 上传时间:2022-11-25 格式:DOCX 页数:13 大小:47.20KB
下载 相关 举报
jsp多文件上传到数据库.docx_第1页
第1页 / 共13页
jsp多文件上传到数据库.docx_第2页
第2页 / 共13页
jsp多文件上传到数据库.docx_第3页
第3页 / 共13页
jsp多文件上传到数据库.docx_第4页
第4页 / 共13页
jsp多文件上传到数据库.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

jsp多文件上传到数据库.docx

《jsp多文件上传到数据库.docx》由会员分享,可在线阅读,更多相关《jsp多文件上传到数据库.docx(13页珍藏版)》请在冰豆网上搜索。

jsp多文件上传到数据库.docx

jsp多文件上传到数据库

该资源来自网络,经测试好用!

所以推荐,分享给大家!

数据库的创建:

数据库名叫:

csdn

表名:

savepicture

DROPTABLEIFEXISTS`savepicture`;

CREATETABLE`savepicture`(

`id`int(10)NOTNULLauto_increment,

`picture`blobNOTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

好动手创建工程啦:

其实非常简单,一看就明白。

把需要的包该导的都导了就行了。

接着我们创建上传页面:

<%@pagelanguage="java"pageEncoding="UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

FileUpload

/css/fileupload.css"

rel="stylesheet"type="text/css">

30px;padding-left:

30px">

style="width:

600px;border-color:

#000000;padding-left:

10px">

上传图片

fielderror/>

actionerror/>

formaction="fileUpload.action"method="post"theme="simple"

enctype="multipart/form-data">

图片路径:

filename="file"cssClass="fileInput"/>

submitvalue="提交"cssClass="button">

submit>

form>

很简单,就是个上传框和按钮,别的没有了。

至于一些css就是稍微的装饰装饰,一会也在下面写上!

上传成功的画面:

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

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">ImageList/css/fileupload.css"rel="stylesheet"type="text/css">

iteratorvalue="#list"id="picture">

id=

propertyvalue="#picture.id"/>'>

iterator>

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

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//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=Thefileyouuploadedisnotaimage

struts.messages.error.file.too.large=thispicutreistoolarge

fileupload.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(picture)value(?

)";

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!

=null)

try{

rs.close();

}catch(SQLExceptione){

e.printStackTrace();

}

if(ps!

=null)

try{

ps.close();

}catch(SQLExceptione){

e.printStackTrace();

}

if(conn!

=null)

try{

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;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1