hibernate3.3.2学习笔记---将图片从本地读到数据库里
2016-10-21 23:03
471 查看
首先要在数据库建张表
![](https://img-blog.csdn.net/20161021224057086)
web.xml 中核心内容
将读到的文件存在数据库里。
如果还想对数据库里的图片进行导出操作,推荐读者欣赏另一篇文章点击打开链接
而如果说,你所选的jsp并不只有这一个文件(这通常是绝大多数情况下),还有其他内容,则你要做点改变。
sell.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'sell.jsp' starting page</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/servlet/FileUploadServlet" enctype="multipart/form-data">
货物种类:<input type="text" name="type"><br/>
数量:<input type="text" name="number"><br/>
货源地:<input type="text" name="place"><br/>
图片:<input type="file" name="picture"><br/>
货物描述:<input type="text" name="description"><br/>
<input type="submit" name="提交">
</form>
</body>
</html>FileUploadServlet.java
package servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Blob;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
/**
* @author XHW
*
* @date 2011-7-26
*/
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = -7744625344830285257L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
SessionFactory sf = null;
AnnotationConfiguration cfg = new AnnotationConfiguration().configure();
sf = cfg.buildSessionFactory();
Session sess = sf.getCurrentSession();
try {
List<FileItem> items = ( List<FileItem>) upload.parseRequest(request);
for(FileItem item:items)
{
if(item.isFormField())
{}
else
{
File tempFile = new File(item.getName());
Picture pic = new Picture();
pic.setName(item.getName());
sess.beginTransaction();
Blob b = (Blob) Hibernate.createBlob(item.getInputStream());
pic.setPic(b);
sess.save(pic);
sess.getTransaction().commit();
System.out.println("图片上传成功!");
}
}
sf.close();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
System.out.println("上传文件失败!");
}
}
}这里会对每一个form的输入项进行处理,若是输入项是文件类型的,就存进数据库,若不是文件类型的,则不处理。若是非要处理图片,而不是其它文件,你只需要判断每一个FileItem的名字的后缀就好。
web.xml 中核心内容
<servlet> <servlet-name>FileUploadServlet</servlet-name> <servlet-class>servlet.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUploadServlet</servlet-name> <url-pattern>/servlet/FileUploadServlet</url-pattern> </servlet-mapping>在传图片的jsp中核心代码:
<form method="post" action="${pageContext.request.contextPath}/servlet/FileUploadServlet" enctype="multipart/form-data"> 图片:<input type="file" name="picture"><br/> <input type="submit" name="提交"> </form>然后就是 FileUploadServlet.java
将读到的文件存在数据库里。
package servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.Blob; import java.util.*; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; /** * @author XHW * * @date 2011-7-26 */ public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = -7744625344830285257L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { FileItem item = (FileItem) upload.parseRequest(request).get(0); File tempFile = new File(item.getName()); Picture pic = new Picture(); pic.setName(item.getName()); SessionFactory sf = null; AnnotationConfiguration cfg = new AnnotationConfiguration().configure(); sf = cfg.buildSessionFactory(); Session sess = sf.getCurrentSession(); sess.beginTransaction(); Blob b = (Blob) Hibernate.createBlob(item.getInputStream()); pic.setPic(b); sess.save(pic); sess.getTransaction().commit(); sf.close(); request.setAttribute("upload.message", "图片上传成功!"); } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); System.out.println("上传文件失败!"); } } }
如果还想对数据库里的图片进行导出操作,推荐读者欣赏另一篇文章点击打开链接
而如果说,你所选的jsp并不只有这一个文件(这通常是绝大多数情况下),还有其他内容,则你要做点改变。
sell.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'sell.jsp' starting page</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/servlet/FileUploadServlet" enctype="multipart/form-data">
货物种类:<input type="text" name="type"><br/>
数量:<input type="text" name="number"><br/>
货源地:<input type="text" name="place"><br/>
图片:<input type="file" name="picture"><br/>
货物描述:<input type="text" name="description"><br/>
<input type="submit" name="提交">
</form>
</body>
</html>FileUploadServlet.java
package servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Blob;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
/**
* @author XHW
*
* @date 2011-7-26
*/
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = -7744625344830285257L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
SessionFactory sf = null;
AnnotationConfiguration cfg = new AnnotationConfiguration().configure();
sf = cfg.buildSessionFactory();
Session sess = sf.getCurrentSession();
try {
List<FileItem> items = ( List<FileItem>) upload.parseRequest(request);
for(FileItem item:items)
{
if(item.isFormField())
{}
else
{
File tempFile = new File(item.getName());
Picture pic = new Picture();
pic.setName(item.getName());
sess.beginTransaction();
Blob b = (Blob) Hibernate.createBlob(item.getInputStream());
pic.setPic(b);
sess.save(pic);
sess.getTransaction().commit();
System.out.println("图片上传成功!");
}
}
sf.close();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
System.out.println("上传文件失败!");
}
}
}这里会对每一个form的输入项进行处理,若是输入项是文件类型的,就存进数据库,若不是文件类型的,则不处理。若是非要处理图片,而不是其它文件,你只需要判断每一个FileItem的名字的后缀就好。
相关文章推荐
- hibernate3.3.2学习笔记---图片的储存与读取
- hibernate3.3.2学习笔记---三种对象状态&删除数据&获取数据库对象&更新数据库对象
- hibernate 学习笔记-操作数据库
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
- hibernate3.3.2学习笔记 --- 多对一
- hibernate3.3.2学习笔记--- 一个小实例
- hibernate3.3.2学习笔记---多对多双向
- Java Web学习笔记 Hibernate配置及数据库增删改查简单操作
- hibernate3.3.2学习笔记---联合主键
- hibernate3.3.2学习笔记--- 一对多
- hibernate3.3.2学习笔记---One2One关联单向
- hibernate3.3.2学习笔记---多对多CRUD
- ROS学习笔记(二):利用opencv将本地图片转换成ROS格式
- 【Hibernate学习笔记】数据库事务
- [学习笔记]java+oracle 存+ jsp 储图片到数据库中 b---读取
- c#学习笔记(二):保存图片、保存DataGridView数据到本地和从本地读取到DataGridView
- hibernate3.3.2学习笔记---第一个程序
- hibernate3.3.2学习笔记---Annotation版本的HelloWorld及org.hibernate.HibernateException错误改正
- hibernate3.3.2学习笔记---CRUD_Cascade与fetch
- hibernate3.3.2学习笔记---多对多单向