-
使用纯的JDBC+SERVLET的数据库事务的问题10
http://topic.csdn.net/u/20080705/18/d894b5e5-8b7b-4560-af16-e4b9d8405681.html
这是我在CSDN的发贴的地址
现在的问题,
如何像SSH整合开发一样,事务把struts的action包围 了,action中调用某一SERVICE层出错,整个ACTION中的代码进行回滚,那是有SSH的情况,使用了SPRING的AOP
如果使用纯的JDBC呢、、如何将事务把SERVLET包围 起来,,
知道这里高手多,感谢大家!
CSDN贴中有的高手说使用FILTER来进行开发,有没有相关的例程,我并不太了解如何用FILTER开发,感谢2008年7月10日 23:34
5个答案 按时间排序 按投票排序
-
采纳的答案
事务: 说白了就是在一个connection里面做了一堆的事情, 在特定的时间点 [完成,异常] 进行提交或回滚.
所以, 无论是否Spring的TransactionManager还是自己的Servlet上的事务控制, 都是基于在一个事务单元内的一个connection上的, 所以, 你要将connection绑定在一个ThreadLocal上, 让里面所有的jdbc操作使用这个connection就好, 在Servlet的所有jdbc操作完成后, 再进行显示的commit 或 rollback.
下面的代码随手写的, 只是用于说明问题.SessionConnectionUtil { static ThreadLocal holder = new ThreadLocal(); public static getConnection() { if (holder.get() == null) { holder.sut(new Connection()); } return (Connection) holder.get(); } public static closeConnection() { holder.set(null); } } CustomServlet extends HttpServlet { CustomDao dao; service() { try { dao.doSomething(); SessionConnectionUtil.getConnection().commit(); } catch (Exception e) { SessionConnectionUtil.getConnection().rollback(); } finally { SessionConnectionUtil.closeConnection(); } } } CustomDao { doSomething() { Connection connection = SessionConnectionUtil.getConnection(); ... } }
2008年7月11日 00:13
-
忘了在Filter里加上rollBack()的代码了。
try{ chain.doFilter(request, response); }catch(Throwable t){ DBManager.getConnection().rollback(); DBManager.getConnection().close(); return ; } DBManager.commit();
异常捕捉的代码就偷懒了。你自己改造一下。思路和loggege一样类似。2008年7月11日 00:38
-
使用ThreadLocal和Filter。
改造一下你原有的获得JDBC连接的类。然后在public class CommitFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); DBManager.commit(); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } public class DBManager{ private static final ThreadLocal connection = new ThreadLocal(){ @Override protected Object initialValue() { return _getConnection(); } }; private static Connection _getConnection(){//这个方法可以是你旧有的以静态方式获得JDBC连接的方法的改名。 Connection conn=null; //此处添加你获取JDBC的连接的代码。 conn.setAutoCommit(false); return conn; } public static Connection getConnection(){ return (Connection)connection.get(); } public static void commit(){ if(getConnection().isClose())thrown new RuntimeException();//这里不检测Connection是否是Null,并且在连接被关闭后抛出异常,是为了避免你的程序中非法对connection操作(比如提前关闭了连接,或者是调用了这个方法两次) getConnection().commit();//放心此处得到的是同一Connection getConnection().close(); } } public class YourServlet ....{//你的Servlet ... public void doPost(.....){ DBManager.getConnection(); ....//doSomething. //去掉原有的关闭连接的代码。 } ... }
最后配置Filter管理你的所有使用到数据库的Servlet。这个就不用我说了吧?呵呵2008年7月11日 00:27
相关推荐
【JDBC+Servlet+jsp实现增删改查】是一个经典的Web开发应用场景,主要涉及Java后端的数据库操作、服务器端处理以及前端展示技术。在这个项目中,开发者通常会利用Java的JDBC(Java Database Connectivity)接口来...
3. JDBC连接池的使用,如C3P0、HikariCP等,以提高数据库连接的管理和效率。 4. MVC框架,如Spring MVC,它可以简化Java EE应用的开发,提供依赖注入和AOP(面向切面编程)等功能。 5. 熟悉一种或多种持久化框架,如...
【jdbc】:JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它是一个Java API,允许Java应用程序通过一组标准接口与各种...
6. **开发流程**:项目实战通常会涵盖从创建数据库表,编写Servlet进行业务处理,使用JDBC进行数据库交互,到设计JSP页面展现数据的全过程。开发者会了解到如何设置MVC(Model-View-Controller)架构,使得代码结构...
结合以上知识点,这个压缩包可能包含了一个使用JSP创建的登录界面,Servlet负责处理登录逻辑,JDBC用于与数据库交互,进行用户验证。同时,代码中可能使用了大量的注解来简化配置和提高可读性。为了更好地理解和使用...
事务管理也是JDBC的重要部分,确保数据操作的原子性、一致性、隔离性和持久性。 【Servlet】Servlet是Java Servlet API提供的标准,用于扩展服务器的功能。在这个投票系统中,Servlet扮演了处理HTTP请求和响应的...
JDBC是Java语言连接数据库的标准接口,它提供了一组API来执行SQL语句、管理事务、处理结果集等。在这个客户管理系统中,JDBC起到了桥梁的作用,连接Web应用和后台数据库,使得系统能够读取、存储和更新客户数据。...
总结起来,"JavaEE+JDBC+Servlet+EL表达式的员工信息管理系统"是一个利用Java企业版技术栈开发的应用,它结合了Servlet来处理用户请求,JDBC来操作数据库,以及EL简化视图层的数据展示,共同构建了一个高效、可靠的...
这是一个基于Web技术实现的学生管理系统,主要使用了Java服务器页面(JSP)、Java数据库连接(JDBC)、Servlet和JavaBean这四种核心技术。以下是这些技术的详细解释及其在学生管理系统中的应用。 1. JSP(Java...
综上所述,基于jdbc+jsp+servlet+java的超市订单管理系统是一个综合性的实践平台,涵盖了数据库操作、动态网页生成、服务器端处理、以及Java语言应用等多个方面。通过学习和实践这个项目,开发者可以提升自己的全栈...
JDBC的核心概念包括连接池、事务管理和预编译等,这些都能提高数据库操作的效率和安全性。 【servlet】:Servlet是Java中用于扩展服务器功能的接口,主要应用于Web开发。Servlet运行在服务器端,接收HTTP请求,处理...
这个"基于javaweb(JDBC+Servlet+jsp)技术实现的管理系统.zip"项目,显然就是一个使用这些核心技术构建的企业级管理系统的源代码包。 首先,我们来详细了解下JavaWeb中的关键技术: 1. **Java Servlet**:Servlet...
- 实现数据库操作的事务管理 - 添加 AOP 依赖 - 使用 AOP 为所有访问添加日志打印 ### Ver 3.0 - 使用 Spring IoC 管理对象 - 添加 database-mvc module,派生自 database module - web-mvc-context.xml 中添加 ...
【超市账单管理系统(jsp+servlet)】是一个基于Web的软件应用,主要用于处理超市的账单管理任务。...对于开发者而言,了解JSP和Servlet的交互机制、Oracle数据库的使用以及Web应用的部署流程,都是掌握此系统的关键。
这个压缩包可能包含了一个完整的课程设计项目,涵盖了Java服务器页面(JSP)、Servlet、Java数据库连接(JDBC)以及MySQL数据库的使用,还有相关的课程设计报告,用于阐述项目的设计思路和实现过程。 **1. JSP...
该系统采用经典的Java Web技术栈,包括JSP(JavaServer Pages)、Servlet和JDBC(Java Database Connectivity),结合MySQL数据库,实现了高效、稳定的数据存储和访问功能。 首先,JSP是Java的一种动态网页技术,它...
5. 连接数据库:使用JDBC(Java Database Connectivity)连接MySQL,执行SQL语句。 6. 测试与优化:对系统进行单元测试、集成测试,确保功能的正确性和性能的优化。 在实际开发中,可能还会涉及其他技术,如MVC...
这涉及到SQL查询、JDBC(Java Database Connectivity)API的使用,以及事务管理。 7. **JavaBean规范**:JavaBean是符合特定规范的Java类,通常作为数据容器。在本项目中,可以创建一个`Contact`类来表示联系人信息...