[SSH技术]
MarioFei
这个作者很懒,什么都没留下…
展开
-
Ioc原理【Spring】
1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合转载 2014-02-14 18:51:16 · 657 阅读 · 0 评论 -
Struts2线程安全问题
Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。 Spring的Ioc容器管理的bean默认是单实例的,上一次请求处理的状态信息被保持下来,并影响了下一次的请求,实际上就是Action中的类变量被不同的请求读取,出现错误结果 解决:就是不用单例, spring中bean的作用域设为prototype,每个请求对应一个实例. 2、struts2 St转载 2014-03-29 14:58:23 · 794 阅读 · 0 评论 -
Spring ioc依赖倒置
所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。 所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如果不倒置,意思就是A主动获取B的实例:B b = new B(),这就是最简单的获取B实例的方法(当然还有各种设计模式可以帮助你去获得B的实例,比如工厂、Locator等等),然后你就可以调用b对象了。 所以,不倒置,转载 2014-04-15 18:32:56 · 1081 阅读 · 0 评论 -
Hibernate Session初识
Session接口是Hibernate向应用程序提供操作数据库的最主要接口,它提供了基本的保存、更新、删除和查询的方法。Session具有一个缓存,位于缓存中的对象处于持久化状态,它和数据库中的相关记录对应,Session能够在某些时间点,按照缓存中持久化对象的属性变化来同步数据库,这一过程称为清理缓存。 Session缓存的实现原理 Session缓存是由它的实现类SessionImp转载 2014-03-23 11:14:14 · 544 阅读 · 0 评论 -
Hibernate映射一对多关系
我们知道Order与Customer是多对一的关联关系,如果不用Hibernate而是使用jdbc的方式一般原创 2014-04-18 21:21:45 · 749 阅读 · 0 评论 -
Hibernate之OID
在关系数据库中,主键用来识别记录,并保证记录的唯一性。在Java语言中,通过比较两个变量所引用对象的内存地址是否相同,或者比较两变量引用的对象是否相等。Hibernate为了解决两者之间的不同,使用对象标识符(OID)来标识对象的唯一性。OID是关系数据库中主键在Java对象模型中的等价物。在运行时,Hibernate根据OID来维持Java对象和数据库中的对应关系。如下所示: Transact转载 2014-03-23 16:12:54 · 695 阅读 · 0 评论 -
Hibernate映射一对多关系【inverse】
Customer类: Java代码 public class Customer { private int id; private String name; private Set orders = new HashSet(); ••• } 即Customer类具有一个set集合属性orders,其中Or转载 2014-04-18 21:52:09 · 606 阅读 · 0 评论 -
Hibernate主键生成策略
increment:适用于代理主键,由Hibernate自动以增长的方式生成标识符,增量为1。 注:使用increment,插入时,在生成的SQL语句中会有ID列。 Example: 适用范围: 由于increment生成标识符的机制不依赖于底层数据库系统,因此它适用于所有的数据库系统。 适用于只有单个Hiberna转载 2014-04-18 20:38:04 · 602 阅读 · 0 评论 -
ognl使用
下午对这个地方一直感觉很模糊……然后“决心”查一查,查了之后还是有效果的!嘿嘿……野猪,加油!野猪记住!你是一只野猪,现在是,将来也是!要学会独立!嘿嘿……说正题吧…… 一、"#"的用法 1、 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性: paramet转载 2014-04-04 10:43:27 · 696 阅读 · 0 评论 -
Hibernate查询缓存全面分析
这里介绍Hibernate查询缓存对Iterator不起作用,只对List起作用。 缓存分类: ◆一级缓存 Session级 ◆二级缓存 SessionFactory级别,JVM级别 ◆Hibernate查询缓存不固定(生命周期不固定) 生命周期: ◆一级缓存 是和 session 会话一致产生一致消失 ◆二级缓存 是和 sessionFacotry 一致 ◆Hibern转载 2014-04-06 22:08:57 · 604 阅读 · 0 评论 -
Exception in thread "main" org.hibernate.id.IdentifierGenerationException:
Exception in thread "main" org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property: person at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator转载 2014-04-14 10:58:25 · 1948 阅读 · 0 评论 -
Struts2数据传输的背后机制:ValueStack(值栈)(转载)【很经典】
在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素。看下面的代码: public class UserAction { private String username; priva转载 2014-03-16 17:44:40 · 685 阅读 · 0 评论 -
BeanFactory与ApplicationContext【Spring】
1. BeanFactory 基础类型的IOC容器,提供完成的IOC服务支持。如果没有特殊指定,默认采用延迟初始化策略。相对来说,容器启动初期速度较快,所需资源有限。 2.ApplicationContext ApplicationContext是在BeanFactory的基础上构建,是相对比较高级的容器实现,除了BeanFactory的所有支持外,ApplicationCont转载 2014-02-14 19:11:50 · 720 阅读 · 0 评论 -
JSP自定义标签开发入门
JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的转载 2014-03-01 15:32:44 · 733 阅读 · 0 评论 -
actionContext和ServletActionContext的区别:
一、ActionContext是Action执行时的上下文,上下文可以看作是一个map容器(其实这里的容器就是一个Map而已),存放Action在执行时需要用到的对象。 上下文(webwork)中放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等,webwork将Servlet相关数据转换为与Ser转载 2014-03-02 21:47:40 · 582 阅读 · 0 评论 -
Struts2 之拦截器interceptor(1)
一.理解拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器做了很原创 2014-03-05 15:48:05 · 667 阅读 · 0 评论 -
Struts2 之拦截器interceptor(2)
下面开发一个自己的拦截器 1.编写拦截器类 public interface Interceptor extends Serializable { /** * Called to let an interceptor clean up any resources it has allocated. */ void destroy(); /**原创 2014-03-05 16:29:29 · 620 阅读 · 0 评论 -
Struts2 之拦截器interceptor(3)
很多时候如果我们需要拦截指定的方法,前面的特性是完成不了的,引入了一个新的东西 1.拦截方法的拦截器 这时候我们要继承MethodFilterInterceptor这个类,它是支持方法过滤的 这个方法我们只需要实现doIntercept(ActionInvocation arg0)这个方法 看下原理 public String intercept(ActionInvo原创 2014-03-05 17:03:10 · 677 阅读 · 0 评论 -
整合Struts2+Spring3.1.1+Jpa2.0(Hibernate4.1.1)实现
jpa2.0实现: hibernate 4.1.1 连接池: BoneCP 0.7.1 缓存: ehcache 2.5.2 1、在MyEclipse下建树一个Web Project,把响应的jar到放到WEB-INFlib目次中 所需的jar: antlr-2.7.7.jar ao转载 2014-03-10 22:55:44 · 1270 阅读 · 0 评论 -
Struts2数据传输的背后机制:ValueStack(1)(值栈)(转载)
Action-jsp页面到底怎么进行数据传输? 1. 数据传输背后机制:ValueStack(值栈) 在这一切的背后,是因为有了ValueStack(值栈)! ValueStack基础:OGNL 要了解ValueStack,必须先理解OGNL(Object Graphic Navigatino Language)! OGNL是Strut转载 2014-03-08 15:18:31 · 650 阅读 · 0 评论 -
Struts2数据传输的背后机制:ValueStack(2)
Context对象 在OGNL的表达式中,有可能需要访问到多个毫不相干的对象,这时候,我们需要给OGNL传递一个Map类型的对象,把表达式中需要用到的对象放到Map中即可!这个Map对象,称为context。 要在表达式中访问到context中的对象,需要使用“#对象名称”的语法规则。 如: public void testOgnl04() throws E转载 2014-03-08 15:31:19 · 663 阅读 · 0 评论 -
orm优缺点
首先简单的介绍下ORM关系对象映射的概念。虽然NOSQL现在在迅速崛起,但大多数人仍然在使用稳定的关系型数据库,我们将数据组织成记录存储在关系数据库中,每一行代表一条记录。现代编程中,面向对象技术应用已经非常广泛,关系型数据库的数据组织形式与面向对象的数据组织形式存在根本上的差异。ORM的任务就是将关系型数据库中的数据通过ORM层映射为对象,使之能够应用于面向对象程序,方便编程。转载 2014-04-27 23:17:18 · 2079 阅读 · 0 评论