随笔分类 - struts+hibernate+Spring
三大框架
摘要:使用spring的mvc,直接将页面参数绑定到对象中,对象中有属性为Date时会报错,此时需要处理下。同样的,其他的需要处理的类型也可以用这种方法。在controller中加入代码 @InitBinder protected void initBinder(HttpServletReque...
阅读全文
摘要:1,新建工程,类型为Web Project,设置默认编码为UTF-8,并创建如下文件夹 1,Source Folder 1,src 项目源码 2,config 配置文件 3,test 单元测试 2,普通文件夹 ...
阅读全文
摘要:Struts2 在项目中用到的核心是拦截器interceptor,OGNL(Object Graph navigation Language)对象图导航语言(用来操作ValueStack里面的数据),Value Stack和ActionContext。strut2是基于WebWork,WebWork...
阅读全文
摘要:什么是Struts2拦截器? 从软件构架上来说,拦截器是实现了面向方面编程的组件。它将影响了多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现功能的高度内聚,确保了业务对象的整洁和纯度。 从Java代码上来说,它就是一个普度的Java对象,它只需要实现一个名为Interc...
阅读全文
摘要:在struts2-core-2.1.8.1.jar的org.apache.struts2包下面的default.properties资源文件里可以查到常用的常量配置,这些不用刻意的记住:忘记的时候可以查询。总结长用的的常量配置如下面: ...
阅读全文
摘要:REST 简介REST 是英文 Representational State Transfer 的缩写,这个术语由 Roy Thomas Fielding 博士在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出。从这篇论文的标题可以看出:REST 是一种基于网络的软件架构风格。REST 架构是针对统传统 Web 应用提出的一种改进,是一种新型的分布式软件设计架构。对于异构系统如何进行整合的问题,目前主流做法都集中在使用 SOAP、WSDL 和 WS-* 规范的 Web Ser
阅读全文
摘要:模拟Spring阐述依赖注入的思想以及spring的内部的实现原理(读取配置文件,通过反射进行装配和依赖注入)/**想分层,把不同的层次作用以及之间的关系给别人说一遍。*例如要想在数据库添加一个用户,一开始最土的方法是直接在main方法里面写数据库的连接,写直接写add一个用户,后来人们想到至少分一...
阅读全文
摘要:SpringAOP实现原理:用到了AOP的动态代理模式:1.画图:把切面画出来2.举个例子进行说明需求:方法正在运行的了,前面加个日志,记录方法开始了,在方法后面加个日志记录方法结束了。切面的意义何在? 首先根据上例,假设我们实现了一个通用的权限检查模块,那么就可以在这层切面上进行统一的集中式权限管...
阅读全文
摘要:1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存...
阅读全文
摘要:SSH 框架的搭建Structs1+spring+HibernateStructs相当于mvc设计模式中V.C,即jsp页面和Servlet;spring 管理业务逻辑,即Service;Hibernate 管理DAO,持久层;首先讲一下Hibernate和spring的整合: 1.加入相关的jar:mysql的 mysql-connector-java-5.1.13-bin.jar; Hibernate的就不一一列出的(上一篇文章有提到);特别注意的是要导slf4j相关的底层实现包 slf4j-nop-1.5.8.jar spring的相关jar(s...
阅读全文
摘要:1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: Java代码 publicclassUserManagerImplimplementsUserManager{ privateUserDaouserDao; publicvoidsetUserDao(UserDaouserDao){ this.userDao=userDao; } ... }配置文件: Java代码 <beanid="userManagerImpl"class="com.kedacom.spring.annotation.service.UserMa
阅读全文
摘要:/*** */package com.b510.example;import java.util.Iterator;import java.util.List;import java.util.Map;import org.hibernate.Criteria;import org.hibernate.FetchMode;import org.hibernate.Query;import org.hibernate.Session;/*** * @author XHW* * @date 2011-6-18* */public class HibernateTest {/** * @param
阅读全文
摘要:采用声明式事务 1、声明式事务配置 * 配置SessionFactory * 配置事务管理器 * 事务的传播特性 * 那些类那些方法使用事务 思考:要把事物加到那些层,把事物加在DAO这一层呢,还是加在业务逻辑处理service这一层?为什么?在service层中配置事物管理。假设在DAO层使用事物: UserDAO中有一个save()方法,用来添加新用户,LogDAO类中也有一个Sava方法,用来在新用户保存之后,添加日子记录。如果你把事务分别加在DAO层的UserDAOImpl和LogDAOImpl的save方法上,LogDAO中的save方法在一个事务里面,UserDAO的save()方
阅读全文
摘要:配置一个数据源Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。DBCP数据源DBCP类包位于/lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池,所以在类路径下还必须包括/lib/jakarta-commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断:xml代码<beanid="dataSource"class
阅读全文
摘要:1. 理解拦截器1.1. 什么是拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interce
阅读全文
摘要:一、Spring的事务管理:Spring提供了针对不同持久化机制的事务管理器。(AOP中的切面类,定义了很多通知) 如:hibernate有org.springframework.orm.hibernate3.HibernateTransactionManager二、事务的参数: 1. 事务的传播行为: a) PROPAGATION_REQUIRED:当前方法必须在一个事务中运行。如果一个事务正在运行,该方法将会在那个事务中运行。否则就要开始一个新事务。Spring的TransactionDefinition的默认传播行为。 b) PROPAGATION_SUPPORTS:当前方法不需要事务性
阅读全文
摘要:最近在学习李刚著的《轻量级J2EE企业应用实战》,这本书写得条例清晰,通俗易懂,非常容易上手。在学习过程中,我自己参考该书做了些例子。下面是对Spring的声明式事务管理的总结和示例:通常建议采用声明式事务管理。声明式事务管理的优势非常明显:代码中无需关于关注事务逻辑,不需要修改业务逻辑代码,在业务逻辑中可以专心业务逻辑代码的编写,无需编写大量的事务逻辑代码。让Spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可以方便地在不同事务逻辑之间切换。声明式事务管理的配置方式,通常有如下三种:1.使用TransactionProxyFactoryBean为目标bean生成
阅读全文
摘要:在低版本Spring中定义一个切面是比较麻烦的,需要实现特定的接口,并进行一些较为复杂的配置,低版本Spring AOP的配置是被批评最多的地方。Spring听取这方面的批评声音,并下决心彻底改变这一现状。在Spring2.0中,Spring AOP已经焕然一新,你可以使用@AspectJ注解非常容易的定义一个切面,不需要实现任何的接口。 Spring2.0采用 @AspectJ注解对POJO进行标注,从而定义一个包含切点信息和增强横切逻辑的切面,Spring 2.0可以将这个切面织入到匹配的目标Bean中。@AspectJ注解使用AspectJ切点表达式语法进行切点定义,可以通过切点函数、运
阅读全文
摘要:环境要求spring对AOP的支持*如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP* 如果目标对象实现了接口,可以强制使用CGLIB实现AOP*如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换如何强制使用CGLIB实现AOP?* 添加CGLIB库,SPRING_HOME/cglib/*.jar* 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>JDK动态代理和CGLIB字节码生成的区别?* JDK动态代理只能
阅读全文
摘要:java.lang.reflectInterface InvocationHandler可参考http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/InvocationHandler.htmlhttp://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/Proxy.htmlinvocation是“调用”的意思。这个类可以让我们在JVM调用某个类的方法时动态的为些方法做些什么事.InvocationHandler接口把我们的代理对象和被代理对象解
阅读全文

浙公网安备 33010602011771号