首页技术区最新随笔(rss) RSS

请把acegi替换成Spring Security(内附视频)

在对web项目进行权限管理时,采用的方法无非是写一大堆JSP或者干脆一个Filter搞定。写完简单的权限功能后,又开始考虑如何自动记忆上次用户信 息,限制每台机器只能有一个用户登录,把用户密码进行加密。接着更上一层楼,尝试实现单点登录,使用HTTPS保护传输数据,防御会话伪造攻击等等。

于是好几年前出现了名叫acegi的东西,它建立在spring的基础上,提供了可以丰盛的权限功能集合,同时也以极为变态的复杂配置给了我们这 些初试权限的人闷头一棍。甚至网上已经有人流传“every time you use acegi, a fairy die”——每当有人使用acegi时,就会有一个精灵死去。

正因为如此,acegi在加入spring阵营时,不但改头换面改名成为Spring Security,而且在配置方面进行了极大的简化,形象的来说就是:“现在只需要20行的配置文件就可以完成之前几百行才能实现的功能”。

遗憾的是,现在依然可以看到还有人在使用acegi,甚至还有人在学习acegi,这种情况无疑让我们感到痛心疾首。

为了世界上不会再有精灵无谓牺牲,也为了大家的身心健康,我在此大声疾呼:“请把acegi替换成Spring Security。”尤其对那些希望学习acegi的同志,请直接学习Spring Security。

下面是《请把acegi替换成Spring Security》的附带视频,希望大家了解Spring Security的简洁。
http://code.google.com/p/family168/downloads/detail?name=springsecurity.zip

2010-03-22 09:59 作者: 临远【评论:0】【阅读:143】 

求高手推荐几本书籍来提升自己

     摘要: 本人研究Java也一段时间了,现在急求各位高手推荐一些自己看过感触比较深或者很值得看的书籍。
这些书籍适合作为一个程序员看的,能提升某方面技能的。
比如Java方面的、Flex的、工作流的、JS框架的、项目管理的、程序员人生的,都行!
最好各位能讲讲这书到底起到了什么作用,谢谢!
同时我希望管理员不要删掉我的这份发帖,谢谢!  阅读全文

2010-03-21 23:44 作者: kalman03【评论:4】【阅读:506】 

心理学,再谈好代码

     摘要: 什么代码才是好代码?这真是个老得能拔掉牙齿的话题。好吧,那让我们再在这刮沙尘暴的无聊时光里重复一次。好的代码要是易读的代码、要做到职责分离、要做到单一职责、要有高的执行效率.... 等等,等等,这才抽象了,太书面化了。我只是一个菜鸟,刚写代码几年,也没念过什么书,能不能说得通俗易懂一些? 好吧,我停下来,想,这真是个难缠的家伙。我说,这样吧,我推荐几本书你去看吧,《重构》熊节最近再版了...  阅读全文

2010-03-21 22:27 作者: ronghao【评论:2】【阅读:461】 

Java多线程编程常见陷阱(杭州交流ppt)

有兴趣地瞧瞧吧,写的匆忙。

2010-03-20 17:33 作者: dennis【评论:3】【阅读:982】 

玩一下技术宅,数学之美——Julia Set分形

自己写的一个小程序,做个视频冒充一下技术宅……


程序经多次优化,终于能够达到一个可以接受的性能了……莫言Java无效率,其实重要的还是要精雕细琢。至 少就绘制Julia Set而言,我这个程序比我见过的几个cpp版本的要快的多。 项目主页地址:http://code.google.com /p/juliasetcreator/ 程序下载地址:http://code.google.com/p/juliasetcreator /downloads/list。

2010-03-20 17:25 作者: 深夜两点【评论:0】【阅读:715】 

jQuery学习总结(四)

     摘要: Ajax无疑是当今WEB开发的重要技术,也是目前RIA(富互联网应用)的主要实现方式之一。本文将在前几篇的基础上,介绍如何利用jQuery使得操作Ajax变得更方便,实现更强大的功能。  阅读全文

2010-03-20 15:10 作者: 菠萝大象【评论:1】【阅读:728】 

杭州程序员圆桌交流第一期–并发编程PPT

     摘要: 由阿里云龙浩同学牵头的杭州程序员圆桌交流,第一期主题为并发编程,把自己的经验也分享下,在活动结束后会公开此次交流的资料,具体PPT请见文中。  阅读全文

2010-03-19 23:57 作者: BlueDavy【评论:2】【阅读:1600】 

Groovy深入探索——Metaclass的存放

     摘要: 本文介绍了Metaclass在Groovy中的存放方式,并对不同的情况(Per-class Metaclass、POGO Per-instance Metaclass和POJO Per-instance Metaclass)进行了分析。 注:以下分析的Groovy源代码来自Groovy 1.7.1,所有测试代码在Groovy 1.7.1下测试通过。 Metaclass 用过Gr...  阅读全文

2010-03-19 20:02 作者: Johnny Jian【评论:0】【阅读:688】 

Java NIO 应用 -- 使用内存映射文件实现进程间通信

     摘要: 一看到 Java NIO 的内存映射文件(MappedByteBuffer),让我立即就联想到 Windows 系统的内存映射文件。Windows 系统的内存映射文件能用来在多个进程间共享数据,即进程间的共享内存,是通过把同一块内存区域映射到不同进程的地址空间中,从而达到共享内存。
Java NIO 的内存映射文件和 Windows 系统下的一样,都能把物理文件的内容映射到内存中,那么 MappedByteBuffer 是否能用来在不同 Java 进程(JVM) 间共享数据呢?答案是肯定的,这样在通常的 Socket 方式来实现 Java 进程间通信之上又多了一种方法。  阅读全文

2010-03-19 16:30 作者: 隔叶黄莺【评论:5】【阅读:964】 

Grails & Oracle配合使用

最近在试用Grails进行开发一个小项目,需要使用oracle数据库,我使用的是Oracle 11g,简单的配置如下:
1.添加jdbc lib到Grails项目的lib中,我使用的是ojdcb6_g.jar
2.修改grails生成项目的DataSource.groovy文件中关于DataSource的相关配置:关键点是关于hibernate方言的配置,由于grails默认使用的是HSQL内存数据库,推荐使用的是mysql数据库;但是在使用oracle数据库时,需要配置hiernate的方言;其他的如URL,drive,username,password等配置和一般的配置没有什么区别,详细配置如下:
dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "paygateway"
    password = "paygateway"
    dialect = "org.hibernate.dialect.OracleDialect"
       
    logSql = true
}


2010-03-19 13:38 作者: 雪地孤鸿【评论:1】【阅读:787】 

完美是优秀的敌人The Perfect Is The Enemy Of The Good

出自伏尔泰的名句。在许多优秀的程序员的编程习惯中,寻找解决方案就如同是寻找女友一般,总是力求完美,如果一个解决方案不够完美的话,那么宁可舍弃也不会降低标准而采用。但是这样的结果很有可能会是一叶障目,不见森林。
举个实际的例子来说,tapestry5的服务动态加载就是一个典型。
大家知道,在Tapestry中,页面模板的动态加载一直是其的一个宣传点。也就是说,页面模板如果修改了,不需要重新启动应用服务器,修改即时生效。但是,Tapestry却一直没有实现服务的动态加载,也就是说服务的类修改了,就必须重新启动服务器。为什么呢,因为追求完美。
其实很久以前在Tapestry的作者的头脑中,包括许多的用户都想在Tapestry中加入服务动态加载的功能,但是最后作者却放弃了。原因是因为,在Tapestry的架构中,服务比页面要复杂的多,服务不是单独存在的,他会被Inject到许多其他的服务,而这些服务又会被inject到其他的服务中,最后导致你很难界定哪些类需要被重新加载。
但是最近有一个人提出一个建议,为什么要实现完整的动态加载呢。其实只实现服务的实现类的动态加载就已经很好了。
确实,如果保持接口不变,只在接口具体实现修改的时候加载,确实大大简化了问题,因为这样变化范围就被限定在单个类之内了。虽然这样并不完美,因为如果改变了对外接口,比如,添加了一个新的方法,或者改变了方法的签名,还是需要重新启动服务器。可是这样也已经在很大程度上提升了用户的使用满意度。
正如有句古语所说:退一步海阔天空。也在此提醒自己在以后的开发过程中,尽量拓展自己的思维,不要一下子钻到牛角尖里。

2010-03-19 07:40 作者: 云自无心水自闲【评论:0】【阅读:1025】 

基于J2ME手机游戏开发项目总结和心得

     摘要:   阅读全文

2010-03-18 21:14 作者: landonlv【评论:3】【阅读:1048】 

接着昨天的。。。

     摘要:      对象流(对象序列化与反序列化)        ObjectOutputStream和ObjectInputStream  序列化:把对象写到一个输入流中;反序列化:从一个输入流中读取一个对象。Serializable序列化接口没有方法或字段,仅用于标识可序列化的语义。 &nb...  阅读全文

2010-03-18 20:47 作者: 张贝贝【评论:2】【阅读:895】 

Java NIO 入门学习(读写文件)

     摘要: 我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种:
1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用是否返回 -1 来判断是否到达末尾。
2. 包装成 Reader/Writer 可以直接读写字符串,进一步包装到 BufferedReader/BufferedWriter 就可以按行读写了。readLine() 时看是否返回 null 断定是否读完了最后一行。
现在我们要用 NIO 来读写文件,肯定是要用到 Channel 和 Buffer 了。一句话描述过程就是从 FileInputStream 得到的 FileChannel 中读取数据到 Buffer 中,再处理 Buffer 中的数  阅读全文

2010-03-18 18:51 作者: 隔叶黄莺【评论:2】【阅读:1054】 

IO系统

     摘要:          流是程序和外界进行数据交换的通道。分为输入流InputStream和输出流OutputStream。程序通过输入流从数据源读取数据,通过输出流向目的地写数据。        在计算机世界里,信息就是数据,信息的交换就是数据流。就好...  阅读全文

2010-03-17 22:59 作者: 张贝贝【评论:1】【阅读:1163】 

经典的计算器代码,很短,但功能很全

     摘要: 这是用Java Swing写的一个计算器的代码,写得不好的地方,请大家指正,下一次我再出一个整合科学计算机器的版本,力求代码简单易懂。呵呵!  阅读全文

2010-03-17 21:41 作者: 雪落无声【评论:2】【阅读:1289】 

Java NIO 入门学习(过门)

     摘要: Java NIO(New IO) 还是在 JDK 1.4 中引入的新特性。JDK 1.4 的另一重要特性正则表达式大家应该经常用到,但 NIO 就可能使用寥寥了,大概是缘于旧有 IO 体系仍然够用。有如 JDK1.5 早就泛型和注解了,但基于各种原因而无法亲力去实践泛型和注解一般,NIO 多数时候也只是与我们擦着肩而已。
相比与 Old IO,NIO 在某些领域里确有其过人之处,所以现在让我们一起来对 NIO 有个更楚的认识。
NIO 的相关 API,在 java.nio 中,它会与你纠缠的就是各种 Channel 和 Buffer。相关的应用在于处理通道  阅读全文

2010-03-17 18:45 作者: 隔叶黄莺【评论:1】【阅读:1272】 

tomcat应用移植到jboss5下时的若干问题及解决

     摘要: 应用使用struts2+spring2.5+hibernat+xfire,在tomcat5.5上能正常运行,移植到jboss时,出现若干问题: 1.启动时出现异常提示: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->o...  阅读全文

2010-03-17 17:22 作者: lhn070【评论:1】【阅读:1055】 

PowerDesigner版本控制功能

     摘要: 使用powerDesigner对数据模型进行版本控制  阅读全文

2010-03-17 14:54 作者: 梦源【评论:0】【阅读:1155】 

数据模型设计心得

     摘要: 在项目初期需求分析完成之后,就需要将数据模型设计出来,一般我们进行数据模型设计时,总是想到的是设计的数据模型尽量符合“第三范式”。但是经过本人多个项目的实践之后,在设计数据模型时不能只是考虑要符合“第三范式”,过意的考虑规范会导致效率及性能的问题,因此更应该根据产品或者项目中的具体功能来考虑。 在项目需求分析阶段,对需求进行分类,分析需求中哪些信息...  阅读全文

2010-03-17 10:59 作者: 梦源【评论:0】【阅读:1221】 

Oracle 11g口令过期

     摘要: 今天发现服务器上的Oracle11g突然登录不上去了,提示ORA-28002错误,说是口令过期。 不当DBA还真不知道Oracle有这神秘功能。 上网上一查,有类似遭遇的朋友在论坛上求助,人家让他找DBA。汗。。。 好在有的DBA乐于分享,终于找到了解决方案: 1. 用DBA账户登录SQL PLUS。我用的是sysman。 2. 系统会提示口令失效,但是会马上让你重置新密...  阅读全文

2010-03-17 10:57 作者: X-Spirit【评论:1】【阅读:909】 

Android 1.5和Android 2.1在相对布局(RelativeLayout)上的区别

     摘要: 近日在做一个程序,需要在ListView中动态扩展每一个列表项。采用的方法是将列表项中某些组件的android:visibility属性设为 gone,等需要显示该组件时,再将android:visibility属性设为visible。而且列表项的布局是RelativeLayout。 android:visibility属性为gone的组件也参与了相对位置设置。例如,有A、B、C三个组件,其中B的 android:visibility属性值为gone,也就是说,B不显示。而A和C显示。相对位置是B在A的下面,C在B的下面。这么做比理论上是没问题的,由于启动的是android 2.1的模拟器,所以列表项看起来完全正常。  阅读全文

2010-03-17 09:27 作者: 银河使者【评论:3】【阅读:1050】 

Internet Explorer 9 预览版 SVG 第二春

    微软IE团队总经理迪恩·哈克莫维奇(Dean Hachamovich)今天发表声明称,IE 9与以往的IE版本有很大不同。他表示,微软将每8周对预览版IE 9进行一次升级,第一次升级将在5月中期。但哈克莫维奇没有披露正式版IE 9的发布时间。

下 载:Internet Explorer 9 预览版

微软称,预览版IE 9还不是一款完整的浏览器,目前还不包括地址栏等用户导航工具以及安全功能。微软发布了一个它称之为“Test Drive”的网站,方便网站设计人员、应用开发者了解预览版IE 9的功能。

预览版IE 9只支持Windows 7、Windows Vista SP2和Windows Server R2。IE 9可以利用图形处理器的处理能力加速文本和图形的渲染。

用户可以从Test Drive网站下载大小为31MB的预览版IE 9。


=============================================================

里面图形的Demo 包括Graphics 里面的几个例子,都是用SVG实现,包括了Map Chart等。有了IE支持,看样子SVG又要发第二春了。

Canvas暂时还没有看到使用例子。

2010-03-17 09:02 作者: oathleo【评论:0】【阅读:1100】 

唐僧、QA MM与工作流任务数据模式

     摘要: 唐僧与 QA MM 在一个典型的项目团队里,包括了以下几种角色(帽子): PM(项目经理)、 BA(业务分析师)、 DEV(程序开发者)和 QA(质量保证人员),整个团队的目标是向客户交付价值。 那么,有一天, QA MM来找我,我是开发人员。 MM说,一张图片没有正常显示,我想知道原因,同时想知道你能否修复。我的第一想法是,这不可能,一定是环境的原因。我说,好的...  阅读全文

2010-03-16 22:05 作者: ronghao【评论:0】【阅读:1040】 

Java集合

Java集合有三种
   Set(集),List(列表),Map(映射)
在创建Java数组时,必须明确指定数组长度,数组一旦创建,其长度就不能被改变。为了使程序能方便的存储和操纵数目不固定的一组数据,JDK类库提供了Java集合,所有Java集合类都位于java.util包中。
  1、Set(集):集合中的对象不按特定方式排序,并且没有重复对象。TreeSet,HashSet
  2、 List(列表):集合中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。List与数组有些相似。ArrayList
3、Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。
   今天老师讲了,把对象存储到集合里,这样就可以对对象进行排序,重写equals()方法,或者重写compareTo方法
 Set<类对象> set=new HashSet<类对象>();
    集合也是一种比较重要的存储工具。

2010-03-16 21:24 作者: 张贝贝【评论:2】【阅读:1164】 

Java 多线程同步问题的探究(三、Lock来了,大家都让开【2. Fair or Unfair? It is a question...】)

     摘要: 让我们继续前面有关ReentrantLock的话题。 首先,ReentrantLock有一个带布尔型参数的构造函数,在JDK官方文档中对它是这样描述的: “此类的构造方法接受一个可选的公平 参数。当设置为 true 时,在多个线程的争用下,这些锁倾向于将访问权授予等待时间最长的线程。否则此锁将无法保证任何特定访问顺序。与采用默认设置(使用不公平锁)相比,使用公平锁的程序在许多线程访...  阅读全文

2010-03-16 18:02 作者: X-Spirit【评论:0】【阅读:1028】 

国内首创WEB甘特图,功能强大性能卓越!

     摘要: 使用Javascript开发的、基于WEB浏览器的强大甘特图解决方案---EdoGantt 甘特图 ,完美的界面设计,强大的功能体系,超越的性能优化  阅读全文

2010-03-16 16:42 作者: edojs【评论:3】【阅读:1454】 

GUICE 与 Servlet 以及 Vaadin 的集成

     摘要: 部分(1):GUICE 与 Servlet 集成 http://code.google.com/p/google-guice/wiki/Servlets Guice 提供了与 Servlet 的集成,可以完全替代 web.xml,使用类型安全,Java程序员所习惯的方式对 servlet 和 filter 进行配置。 Code highlighting produce...  阅读全文

2010-03-16 15:05 作者: bing【评论:0】【阅读:899】 

openlayers 标记1

     摘要:     OpenLayers基础知识: document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length > 300...  阅读全文

2010-03-16 11:59 作者: 泰坦【评论:0】【阅读:986】 

Java 多线程同步问题的探究(三、Lock来了,大家都让开【1. 认识重入锁】)

     摘要: 在上一节中, 我们已经了解了Java多线程编程中常用的关键字synchronized,以及与之相关的对象锁机制。这一节中,让 我们一起来认识JDK 5中新引入的并发框架中的锁机制。 我想很多购买了《Java程序员面试宝典》之类图书的朋友一定对下面 这个面试题感到非常熟悉: 问:请对比synchronized与java.util.concurrent.locks.Lock 的异同...  阅读全文

2010-03-15 22:51 作者: X-Spirit【评论:0】【阅读:1614】 

技 术 改 变 世 界

宣传语

广告

专题

网站分类

其他分类

Google站内搜索

 

24小时内最热随笔

统计信息

订阅

Blog客户端API

推荐客户端

博客排行榜[前100人]

友情链接