在web的工程如果想使用db4o,是不能直接使用的,如果想使用的就得做一些初始化的工作,以便在servlet中使用,具体可以看下面的两个网页有详细的介绍:

http://java.dzone.com/articles/db4o-java

http://community.versant.com/documentation/reference/db4o-8.1/java/reference/Content/platform_specific_issues/web/servlets.htm

可以如此使用:

Db4oServletContextListener.java

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;import com.db4o.Db4oEmbedded;
import com.db4o.EmbeddedObjectContainer;
import com.db4o.ObjectContainer;
import com.db4o.config.EmbeddedConfiguration;public class Db4oServletContextListener implements ServletContextListener {public static final String PREFIX_PATH = "E:/Pattern/PDFBox-v2/";public static final String KEY_DB4O_FILE_NAME = "db4oFileName";public static final String KEY_DB4O_SERVER = "db4oServer";@Overridepublic void contextInitialized(ServletContextEvent event) {System.out.println("context oK");ServletContext context = event.getServletContext();String filePath = PREFIX_PATH + context.getInitParameter(KEY_DB4O_FILE_NAME);EmbeddedConfiguration configEmbedded = Db4oEmbedded.newConfiguration();EmbeddedObjectContainer rootContainer = Db4oEmbedded.openFile(configEmbedded,filePath);context.setAttribute(KEY_DB4O_SERVER, rootContainer);/* ArrayList<exam> result = new ArrayList<exam>();ObjectSet<exam> objectSet = rootContainer.query(exam.class);while (objectSet.hasNext()) {result.add((exam) objectSet.next());}exam[] exams = result.toArray(new exam[result.size()]);System.out.println(exams.length);*/context.log("db4o startup on " + filePath);}@Overridepublic void contextDestroyed(ServletContextEvent event) {ServletContext context = event.getServletContext();ObjectContainer rootContainer = (ObjectContainer) context.getAttribute(KEY_DB4O_SERVER);context.removeAttribute(KEY_DB4O_SERVER);close(rootContainer);context.log("db4o shutdown");}private void close(ObjectContainer container) {if(container != null) {container.close();}}
}

自己的servlet代码:

import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.db4o.EmbeddedObjectContainer;public class CategoryServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("OK");EmbeddedObjectContainer container = (EmbeddedObjectContainer) request.getServletContext().getAttribute("db4oServer");}}

servlet中使用db4o相关推荐

  1. java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能

    2)代码 Filter.lua--[[ 过滤器接口 ]]-- local FilterChain = require("FilterChain") local Filter = { ...

  2. servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变

    Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  3. servlet中response中文乱码

    在servlet中,通过response向浏览器写中文,会出现乱码,那么response向浏览器写数据一共有两种方式 1.getOutputStream.write();字节流 2.PrintWrit ...

  4. java中的doget_java servlet中doGet()和doPost()方法的用法和区别

    一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全.而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方 ...

  5. servlet中的session不一定会被创建

    参考:http://c5ms.iteye.com/blog/1260593 servlet中的session不一定会被创建 以前在树上看session的生命周期,都知道session的生命周期是在客户 ...

  6. 在Servlet中获取Spring注解的bean

    最近由于项目中出现了Servlet调用Spring的bean,由于整个项目中所有的bean均是注解方式完成,如@Service,@Repository,@Resource等,但是Spring的容器管理 ...

  7. 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行

    利用抽象工厂创建DAO.利用依赖注入去除客户端对工厂的直接依赖.将有关Article的各种Servlet全部封装到一个Servlet中(通过BaseServlet来进行ArticleServlet方法 ...

  8. 将数据库的操作代码从servlet中剥离,封装到DAO中

    工厂设计模式是所有设计模式中最简单的设计模式!!!(就是通过工厂来创建一些对象) 工厂模式的典型应用场景:创建对象(当我们感觉到创建对象是件很痛苦的事,会用工厂模式) 工厂模式:简单工厂,工厂方法,抽 ...

  9. Servlet中的生命周期方法

    1. 被创建:执行init方法,只执行一次         * Servlet什么时候被创建?             * 默认情况下,第一次被访问时,Servlet被创建             * ...

  10. 用 JOTM 向Servlet中添加事务

    J2EE 除了提供了 servlet 之外,还提供了大量的其它功能.Servlet 开发者们也许难得使用这些功能,不情愿也没有时间用一个超出所需的大型 J2EE 服务器来替换自己的简单的 servle ...

最新文章

  1. CentOS 6.8 安装最新版 Git
  2. HCTL-2020正交码读写芯片
  3. iOS将产品进行多语言发布,开发
  4. windows mobile设置插移动卡没反应_ETC不用时,能不能把卡拔下来
  5. QT实现太阳系系统八大行星
  6. 乡村野生草药_官方野生蝇群流口水分数
  7. 小程序 自定义组件报错[“usingComponents“][“my-list“] 未找到
  8. java 把方法当参数传递_java 中 如何将“一个类的方法 ”作为参数传到“另一个类的方法”中...
  9. 两台计算机怎样共享一台打印机共享文件夹,两台电脑怎么共享文件和打印机
  10. Mybatis-plus实现动态表名查询
  11. 放弃 vs2005 的 crystal report 。推荐使用国内强人开发的第三方报表开发工具:袁氏报表 。...
  12. php语句insert,SQL INSERT INTO
  13. android获得其他应用窗口,安卓一个程序调用其他程序的任一界面问题
  14. QT设置画笔/画刷颜色
  15. 企业局域网即时通讯软件存在是必然趋势
  16. 在iOS 14中使用带有SF Symbols 2的彩色图标
  17. android xml文件中进行上传图片以及获取图片
  18. 基于微信小程序的自习室预约系统设计与实现-计算机毕业设计源码+LW文档
  19. 零基础学习《计算机操作系统》
  20. Java基础1----java介绍

热门文章

  1. LeetCode所有题目答案汇总
  2. c语言智能公交系统,基于单片机智能公交小车控制系统设计(含电路图,程序清单)...
  3. DeepinXP_V5.8完美/增强精简版2合1
  4. onSubmit的使用
  5. Vue2.5.1+Spring支持分销、团购、秒杀、优惠券、微信商城项目,源码免费分享
  6. 计算机数值方法(1):引论
  7. 在 vi 中替换字符串
  8. 美国大学生数学建模竞赛O奖最高级别国家一等奖论文超全资料分享写作排版编程建模全覆盖资料参赛真实经历小白必拥有
  9. MENTOR 安装过程
  10. 贝壳如何docker安装openwrt_群晖Docker安装openwrt简单图文教程(黑白群晖均适用)...