hibernate3.3.2学习笔记---将图片从本地读到数据库里
来源:互联网 发布:javascript 引号 转义 编辑:程序博客网 时间:2024/06/06 23:46
首先要在数据库建张表
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的名字的后缀就好。
0 0
- hibernate3.3.2学习笔记---将图片从本地读到数据库里
- hibernate3.3.2学习笔记---将一棵树存进数据库
- hibernate3.3.2学习笔记
- 从EXCEL数据读到数据库
- hibernate3.3.2学习笔记---图片的储存与读取
- UE4将图片数据读到贴图中
- Hibernate3.3.2学习笔记---generator
- hibernate3.3.2学习笔记 --- fetch
- 如何将pictureBox里的图片保存到数据库,然后从数据读取显示
- 如何将图片储存在数据库里
- 从数据库读取图片存到本地
- hibernate3.3.2学习笔记---三种对象状态&删除数据&获取数据库对象&更新数据库对象
- 将html canvas里的图片保存到本地
- 从DLL里调用图片-笔记
- Struts2+Hibernate3将图片保存于mysql数据库并将其显示在JSP页面
- Struts2+Hibernate3将图片保存于mysql数据库并将其显示在JSP页面
- 将本地数据库里的表上传至服务器
- 将数据库里的数据保存到本地Excel
- 设计模式之单例模式
- 第十四天学习笔记
- 「MICCAI 2016」Reading Note
- 用java实现自定义随机数发生器
- gdb调试多文件程序
- hibernate3.3.2学习笔记---将图片从本地读到数据库里
- hdu 1394 母函数入门题
- Hibernate(3.6)之初识
- css required,focus,valid和invalid介绍
- hdu2196 (树的直径)
- 软导作业
- MySql sqlstate代码大全
- C#中属性PropertyInfo的使用
- 【openjudge 计算概论(A)】[基础编程练习1]