SSH学习笔记
记录学习SSH的点点滴滴。。。
大明哥_
大明哥,一个专注 Java 技术的硬核程序员,「死磕 Java」 创始人。
展开
-
Hibernate的抓取策略
一、Hibernate的抓取策略 Hibernate抓取策略是指当应用程序需要在关联关系间进行导航的时候,Hibernate如何获取关联对象的策略。 Hibernate有如下几种抓取策略: 1、链接抓取(Join fetching):Hibernate 通过在select语句中使用out join来获取对象的关联实例或者关联集原创 2013-05-17 10:15:00 · 3835 阅读 · 0 评论 -
使用Struts 拦截namespace进行权限控制
有时候我需要在几个包下都需要进行同一个权限控制。如在购物网站中,我们需要进入个人中心、下订单、评价商品等等都需要进行登录权限控制,但是这几个模块并不是位于同一个package下。Struts提供的拦截器,我们可以实现action下拦截,我们虽然可以在每一个package都配置这个拦截器,但是是相当的麻烦。这个时候我们可以利用拦截器实现拦击package。将需要进行权限控制package原创 2013-04-24 11:13:24 · 3612 阅读 · 1 评论 -
解决Hibernate:could not initialize proxy - no Session
这个从字面上就可以看出:不能初始化,没有session。也就说主要原因是因为session关闭了。 在Hibernate中,中的lazy默认为proxy。这样hibernate在数据库中查询数据时事不会把关联的对象查出来的,而是保存一个获得该值得方法:getXxxx()。当我们需要使用这个值的时候,也就是使用getXxx()方法来调用的时候,Hibernate就会利用这个原创 2013-04-12 12:40:24 · 56569 阅读 · 6 评论 -
Spring读书笔记-----Spring的Bean之设置Bean值
Java实例的属性值可以有很多种数据类型、基本类型值、字符串类型、java实例甚至其他的Bean实例、java集合、数组等。所以Spring允许通过如下几个元素为Bean实例的属性指定值: value ref bean list、set、map、props 一、value:设置普通属性值 元原创 2013-03-17 16:19:29 · 11449 阅读 · 1 评论 -
Spring读书笔记-----Spring的Bean之配置依赖
前一篇博客介绍了Spring中的Bean的基本概念和作用域(Spring读书笔记-----Spring的Bean之Bean的基本概念),现在介绍Spring Bean的基本配置。 从开始我们知道Java应用中各组件的相互调用的实质可以归纳为依赖关系。根据注入方式的不同,Bean的依赖注入可以分为两种形式: 1、 属性:通过元素配置,对应设置注入原创 2012-12-15 15:49:29 · 8534 阅读 · 1 评论 -
Spring读书笔记-----Spring的Bean之Bean的基本概念
从前面我们知道Spring其实就是一个大型的工厂,而Spring容器中的Bean就是该工厂的产品.对于Spring容器能够生产那些产品,则取决于配置文件中配置。 对于我们而言,我们使用Spring框架所做的就是两件事:开发Bean、配置Bean。对于Spring矿建来说,它要做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法完成“依赖注入”。原创 2012-11-25 16:55:55 · 109194 阅读 · 16 评论 -
Spring读书笔记-----使用Spring容器(二)
一、使用ApplicationContext 前面介绍了,我们一般不会使用BeanFactory实例作为Spring容器,而是使用ApplicationContext实例作为容器,它增强了BeanFactory的功能。 ApplicationContext允许以声明式方式操作容器,无须手动创建它。在Web应用启动时自动创建ApplicationCont原创 2012-11-24 16:51:37 · 9777 阅读 · 2 评论 -
Spring 读书笔记-----使用Spring容器(一)
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean。 Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,原创 2012-11-15 21:15:35 · 26717 阅读 · 15 评论 -
Spring读书笔记-----Spring核心机制:依赖注入
Java应用(从applets的小范围到全套n层服务端企业应用)是一种典型的依赖型应用,它就是由一些互相适当地协作的对象构成的。因此,我们说这些对象间存在依赖关系。加入A组件调用了B组件的方法,我们就可以称A组件依赖于B组件。我们通过使用依赖注入,Java EE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无需使用工厂模式。当某个Java实例需要其他Java 实例时,系统自动提供所需要原创 2012-11-11 16:40:32 · 30667 阅读 · 26 评论 -
Spring读书笔记-----部署我的第一个Spring项目
一、Spring介绍 Spring是一个轻量级的Java EE容器,它也是一种从实际需求出发,着眼于轻便,灵活,易于开发,易测试和易部署的轻量级开发框架。Spring它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。 Spring为企业应用的开发提供了一个轻量级的解决方案。该方案包括:基于依赖注入原创 2012-11-04 16:21:10 · 9958 阅读 · 4 评论 -
关于Hibernate异常:只进 ResultSet 不支持请求的操作
在做分页查询时,出现了如上错误信息,分析了很久,使用debug监视、观察变量才发现,offer为负数。更正之后,正常。 所以出现如题所示的异常,多半是因为在为query设置开始索引和最大记录数时,出现了负数导致的。如: List result = session.createQuery(hql) .setFirstResul原创 2012-08-23 11:50:45 · 3401 阅读 · 0 评论 -
解决拦截器的对于参数传递无效问题
今天做项目时,使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下Struts2的拦截器。找到了原因:给一个Acton配置一个自定义拦截器后,此action就无法使用框架默认的拦截器栈了,这就导致前后台数据传输无效。 解决方法一般有两种: 一、显示原创 2012-08-23 11:43:50 · 4921 阅读 · 2 评论 -
使用Myeclipse完成Hibernate的逆向工程
前面已经提到过Hibernate的开发流程一般有两种: 1、由Domain object > mapping > db 2、由db开始,用工具生成生成mapping 和Domain object。 在实际的开发过程中,涉及的表太多了,一个一个的写java实体类很费事费时的。Myeclipse提供了一个简原创 2012-08-07 08:37:55 · 16411 阅读 · 0 评论 -
Hibernate读书笔记-----Hibernate知识总结
利用一个星期(实际上是两个星期的上午)的时间终于是结束了Hibernate,本来在四月份就可以结束的,但是由于为期一个月的实习,加上各种考试、三个课程设计,hibernate的学习一直都是断断续续的,等到暑假有时间了,也差不多都忘记了,于是只有从头开始了。下面是我就这个星期所学的知识的一个简要的总结。 一、Hibernate开发流程 Hibernat原创 2012-07-16 09:55:04 · 4242 阅读 · 15 评论 -
Hibernate读书笔记-----乐观锁与悲观锁
在使用Hibernate的过程我们会遇到多个人对同一数据同时进行修改,这个时候就会发生脏数据,造成数据的不一致性。为了避免更新数据的丢失,Hibernate采用锁机制。 Hibernate提供了两种锁机制:悲观锁和乐观锁。 悲观锁:在数据有加载的时候就给其进行加锁,直到该锁被释放掉,其他用户才可以进行修改。 乐观锁:在对数据进行修改的时候原创 2012-07-14 11:39:14 · 3726 阅读 · 0 评论 -
Hibernate读书笔记-----事件机制
Hibernate执行持久化过程中,应用程序无法参与其中。所有的数据持久化操作,对用户都是透明的。 通过事件框架,Hibernate允许应用程能响应特定的内部事件,从而允许实现某些通用的功能或者对Hibernate功能进行扩展。 Hibernate的事件机制框架由两个部分组成: 1、拦截器机制:对于特定动作拦截,回调应用原创 2012-07-13 08:43:01 · 3665 阅读 · 0 评论 -
Hibernate读书笔记-----缓存
缓存的作用主要是用来提高hibernate的性能,可以简单的理解成一个map。使用缓存涉及到三个操作:把数据放入缓存、从缓存中取数据、删除缓存中的无效数据。 一、一级缓存 一级缓存是Session级共享的。对于一级缓存而言,所有经过Session操作的实体,不管是使用save()、upadate()或者saveOrUpdate保存一个对象,还是使用load原创 2012-07-12 09:52:12 · 4233 阅读 · 0 评论 -
Hibernate读书笔记-----条件查询
条件查询一般是通过以下三个类完成的: 1、Criteria:代表一次查询 2、Criterion:代表一个查询条件 3、Restriction:代表查询条件的工具类 执行条件查询的步骤如下: 1、获得Hibernate的Session对象原创 2012-07-11 12:26:44 · 3979 阅读 · 0 评论 -
Hibernate读书笔记-----懒加载分析
懒加载是指程序推迟访问数据库,这样做可以保证有时候不必要的访问数据库,因为访问一次数据库是比较耗时的。 一、load方法的懒加载 先看如下代码段public class UserManager { public static void main(String[] args) { Users user = new Users();原创 2012-07-10 10:48:47 · 3540 阅读 · 0 评论 -
Hibernate读书笔记-----数据过滤
Hibernate3 提供了一种创新的方式来处理具有“显性(visibility)”规则的数据,那就是使用Hibernate filter。 Hibernate filter是全局有效的、具有名字、可以带参数的过滤器, 对于某个特定的Hibernate session您可以选择是否启用(或禁用)某个过滤器。 一旦启用了数据过滤器,则不管是数据查询,还是数据加载,该过滤器将原创 2012-07-10 10:34:51 · 3844 阅读 · 0 评论 -
Hibernate读书笔记-----SQL查询
Hibernate除了支持HQL查询外,还支持原生SQL查询。 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。 执行SQL查询步骤如下: 1、获取Hibernate Session对象 2、编写SQL语句原创 2012-07-09 11:19:46 · 17779 阅读 · 2 评论 -
Hibernate读书笔记-----HQL查询
Hibernate提供了强大的查询系统,使用Hibernate有多种查询方法可以选择:可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL查询语句。其中HQL查询时Hibernate配置的功能强大的查询语句。HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。 一、HQL查询 HQL原创 2012-07-09 11:10:15 · 23431 阅读 · 5 评论 -
Hibernate读书笔记-----hibernate的批量处理
Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象,将被自动转换为对数据库的操作。但存在这样一个问题,如果我们想同时更新100000条记录,是不是要逐一加载100000条记录,然后依次调用setter方法。采用这种方法实在是太繁琐了,而且严重影响了数据的访问性能。Hibernate提供的批量处理的方案来解决这个问题。原创 2012-07-06 11:41:21 · 6776 阅读 · 0 评论 -
Hibernate读书笔记---继承映射
对于面向对象的程序设计语言,继承、多态是两个最基本的概念。Hibernate的继承映射可以理解两个持久化类之间的继承关系。 Hibernate支持几种继承映射策略,不管哪种继承映射策略,Hibernate的多态查询都可以很好的运行。 假设有四个对象:Department、Employee、Skiller、Sales。他们四个对象存在如下关系:原创 2012-07-06 11:30:30 · 4130 阅读 · 0 评论 -
Hibernate读书笔记-----Hibernate的关联映射之组件属性关联关系
先看User持久化类:public class Users { private int id; private Date birthday; private Name name; public int getId() { return id; } public void setId(int id) { this.id = id; } pu原创 2012-07-05 09:32:09 · 3335 阅读 · 0 评论 -
Hibernate读书笔记-----Hibernate的关联映射之N-N关联映射 .
四、N—N关联关系 1.1单向N-N的关联 单向的N-N关联和1-N关联的持久化类完全一样,控制关系的一端需要增加一个set集合属性,被关联的持久化实例以集合的形式存在。 N-N关联必须使用连接表,N-N关联与有连接表的1-N关联非常相似,只需要去掉元素的unique="true"即可。其他的配置和1-N关联一样。原创 2012-07-05 09:24:51 · 3537 阅读 · 2 评论 -
Hibernate读书笔记-----Hibernate的关联映射之1-N关联映射
三、1—N 对于1-N而言,它的持久化类发生了一点改变,持久化类里需要使用集合属性。因为1的一端需要访问N的一端,而N的一端将以集合(Set)形式表现。 1、单向1-N关联 对于单向的1-N关联关系,只需要在1的一端增加Set类型的属性,该属性记录当前实体的关联实体。 同样以员工-部门为例(Employee-->原创 2012-07-05 09:09:17 · 3701 阅读 · 1 评论 -
Hibernate读书笔记-----Hibernate的关联映射之1-1关联映射
二、1—1 无论是单向1-1映射关联,还是双休1-1映射关联,都有三种映射策略:基于主键、基于外键、采用连接表。 1、单向1-1映射关联 1.1、基于主键的单向1-1映射关联 对于基于主键的单向1-1关联,基于主键关联的持久化类不能拥有自己的主键生成器策略,它的主键由关联实体来负责生成。原创 2012-07-04 09:46:58 · 2402 阅读 · 0 评论 -
Hibernate读书笔记-----Hibernate的关联映射之N-1关联映射
我们所生活的世界很少有事物是孤立存在的,每个事物必然会存在着与它相关联的事物。在面向对象设计当中,关联关系是非常重要的。关联关系一般可以分为以下两种: 单向关系:只需单向访问关联端 双向关系:关联的两端都可以互相访问 单向关系可分为:1—N、1—1、N—1、N—N 双向关系可分为:1—1 、1—N、N—N原创 2012-07-03 11:47:57 · 3079 阅读 · 1 评论 -
hibernate读书笔记-----持久化对象
Hibernate采用低侵入式的设计,它对持久化类几乎不做任何要求。也就是说hibernate操作的持久化类基本都是普通java对象。对于持久化类的要求这里不做说明。只就持久化对象的状态和各个状态之间的转换。 Hibernate持久化对象有如下几种状态: 1、瞬态:对象有new操作符创建,但是并没与Hibernate Session关联。处于瞬态的对象是原创 2012-04-28 21:10:45 · 5033 阅读 · 1 评论 -
Hibernate读书笔记-----hibernate第一个案例的分析
这是一篇迟到的博客!!本来是可以再三个星期前写的。但由于学校临时通知要去长沙实习三个星期。推迟了三个星期,所以现在把他补上! 上一篇波博客我部署的第一个hibernate工程,现在就这个工程里面的细节来分析下。 一、POJO类 POJO类即持久化对象。他是完成hibernate持久化操作。说本质点就是简单的java类。但是并不原创 2012-04-27 12:10:23 · 3094 阅读 · 0 评论 -
关于org.hibernate.exception.SQLGrammarException: could not insert:
在部署hibernate项目时,出现如下错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [com.hibernate.domain.User] at org.hibernate.exception.SQLStateConverter.convert(SQL原创 2012-04-27 10:27:22 · 14665 阅读 · 5 评论 -
Hibernate读书笔记-----部署第一个hibernate工程
在介绍hibernate之前我们有必要的简单了解一下ORM 目前的主流数据库依然是关系型数据库,但是java则是面向对象的编程语言,当把两者结合在一起使用时非常麻烦。这时便催生了ORM框架的产生。 ORM,全称为Object/Relation Mapping,即对象/关系数据库映射,我们可以把他理解成一种规范。它完成面向对象的编程语言到关系数据库的映原创 2012-03-27 10:49:43 · 3760 阅读 · 2 评论 -
Struts 2读书笔记-----使用Struts 2控制多文件上传
在前面我已经介绍过了利用Struts 2控制单文件上传:Struts 2读书笔记-----使用Struts 2控制文件上传 .其实对于多文件上传也差不多。加入我们要同时控制三个文件进行上传。那么页面得有三个文件上传域。在这里主要介绍采用数字和list来控制文件上传。 一、利用数组 利用数组来封装3个文件域。为了让数组一次性封装三个文件,我们需要将三个原创 2012-03-26 09:16:50 · 2667 阅读 · 4 评论 -
Struts 2读书笔记-----Struts 2知识总结
历时三个星期的时间终于把Struts 2 给看完了。中间断断续续的学习,在这个过程中学到了很多东西,也真正的明白了时间是挤出来的。大三了课程越来越来多了,有自己学校的课程要学习,又是各种各样的实验,时间的真的是太紧了。这个时间,利用一切的空余时间来学习编程。这个过程的苦和乐真的只有经历了才明白... 不多说了,下面是对这三个星期学习Struts 2的知识总结:原创 2012-03-19 08:09:45 · 5680 阅读 · 17 评论 -
Struts 2读书笔记-----拦截器之示例:使用拦截器完成权限控制
前面介绍了一些拦截器的配置和基本的使用方法,所以这次将介绍拦截器的实用功能。 实用拦截器完成权限控制 当浏览者需要执行某个操作时,应用需要先检查浏览者是否登录,以及是否有足够的权限来执行该操作。 本示例要求用户登录且必须为指定用户名才可以查看系统中的某个试图,否则用户直接转入到登录界面。 检查用户是否登录,通原创 2012-03-15 13:36:29 · 3368 阅读 · 0 评论 -
Struts 2读书笔记-----拦截器之拦截器的使用
一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截器Action了。拦截器的拦截行为将会在Action的execute方法执行之前执行。 一、实现拦截器类 虽然Struts 2框架提供了许多拦截器,这些拦截器也实现了Struts 2的大部分功能。但是用户仍然可以开发自己的拦截器。 实现自己的拦截器,应该实现com.op原创 2012-03-14 21:23:41 · 3117 阅读 · 0 评论 -
Struts 2读书笔记-----拦截器之拦截器的配置
拦截器体系是Struts 2框架的重要组成部分,我们可以把Struts 2理解成一个空容器,而大量的内建拦截器完成了该框架的大部分操作。 Struts 2拦截器是可插拔式的设计:如果我们需要使用某个拦截器,只需要在配置文件中应用该拦截器即可;如果不需要使用该拦截器,只需要在配置文件中取消应用拦截器。但是不管是否应用某个拦截器,对于Struts 2框架都不会有任何影响。原创 2012-03-13 23:34:25 · 4258 阅读 · 1 评论 -
Struts 2读书笔记-----使用Struts 2控制文件下载
一般来说,文件下载只需要直接在页面给出一个超级链接,该链接的href属性值等于要下载文件的文件名,就可以实现文件下载,如:”checkbox.rar”>checkbox.rar。但是这样下载存在着一些缺陷:如果该文件的文件名是中文文件名时,下载则会导致下载失败;如果在下载时需要对用户的身份进行判断,来验证用户是否有权限来下载该文件时,那么单独的超级链接是不可能实现的。这个时候,我们需要用Strut原创 2012-03-13 18:16:29 · 3074 阅读 · 0 评论 -
Struts 2读书笔记-----Struts 2实现文件过滤
通常对于Web应用,我们可以云寻浏览者上传图片、上传压缩文件等,但是除此之外,我们必须对浏览者上传的文件大小、类型进行限制。因此必须在文件上传中进行文件过滤。 一、手动实现文件过滤 如果需要手动实现文件过滤,可以按照如下步骤进行 1、在Action中定义一个专用于进行文件过滤的方法。方法名任意,该方法的逻辑判断上传文件的类型是原创 2012-03-11 19:45:43 · 3346 阅读 · 0 评论