我的阅读方法和建议

不可否认,相比其他国内很多粗制滥造的印刷品,本书称的上是一本著作,有很多作者的思想和经验写在里面,也因此注定这本书不会是一本java的入门导读。
在书的前言,作者也提供了一种阅读顺序的建议。我个人的体会是,应该结合自己的开发经历来读,从自己最熟悉的系统入手。像我就具有比较丰富的asp版论坛和网上商店的建设经验,因此读起来对于这些系统应该具有哪些功能模块、原来的开发架构具有哪些不足等,都比较清楚,因此可以有针对性的阅读。
不过光学不习,记忆不深。可惜本书光盘的源代码执行效果不太好。怎么办?只有按照书中讲的方法,动手做一个简单的结构,然后逐渐补充新的技术点。想一次性把完整的系统做出来是不太现实的,如果那样能成的话,你的技术能力已经不需要看这本书了。
要动手做,最简单的例子应该是第2章内容。可以掌握jsp+servlet开发的模式。你可以先把email发送通用类跳过,当然代码中相应内容也删除,只写jdbc通用操作类。Hibernate的使用也似乎比较麻烦,因此跳过。书中举例是mysql,但我模仿操作oracle一样成功。并且只建立了一个简单的只有两个字段username和password的用户表member。由于有以前的配置经验,所以tomcat很简单。整个代码编写都是在JB x中。
做完以后,再看第4章,也比较简单,struts的东西理解以后就非常好用。网上有一篇用jb9开发struts的逐步讲解文章,参考它就能很容易做出本章内容。本章的光盘例子seb好像可以直接运行起来,但是src的代码不全,无法重新编译。
第3章Jive论坛是一个好东西,可是光盘里的例子无法运行,从网上搜一下可以找到好用的版本,比如http://gro.clinux.org/。

由于本人能力有限,目前也只详细看了这么多,后面的内容都是一知半解,但是都比较有用,特别是第6章关于JAAS的内容,还在进一步研究中。希望有朋友能相互交流。我的msn:xz@xiaozhen.com

还是接着最前面说,要想学习本书,至少要对这些技术和概念都比较熟悉才行:jdk环境设置、jsp、jdbc、tomcat或jboss、xml、mysql、servlet,另外还要对这些内容了解一些:struts和mvc、hibernate和持久化、ejb和企业结构层次、Factory等几种开发模式、java socket,当然也要对自己手头的开发工具有一定了解。否则学习起来将会比较吃力。

关于softwyz提到对于初学者需要了解一些技术,我提供一些参考资源供初学者学习。

jdk环境设置:
第一次起步开始Java,首先要安装JDK1.4,JDK 1.5有许多新特性,暂时不要用。
JDK1.4 也是J2SE 1.4.2 下载地址:
http://java.sun.com/j2se/1.4.2/download.html
注意,选择 连接:Download J2SE SDK,第一行是Sun广告

安装完成J2SE后,一定要手工配置一下JAVA_HOME ,windows和linux配置见下面连接。
http://www.jdon.com/idea/tomcatinstallwin.htm
http://www.jdon.com/idea/tomcatinstall.htm

jsp、jdbc、tomcat、xml、mysql、servlet属于Web技术,google中可以找到很多教程,本站相关文章可见:
http://www.jdon.com/idea.html

jboss是支持EJB JMS等完整J2EE的服务器。

struts和mvc:
MVC模式是处理用户界面输入的通用方式,如果学过Swing,Swing其实也是一个小型的MVC模式。struts是一种开源项目。

hibernate和持久化:
hibernate属于一种O/R mapping技术,CMP不是o/R mapping技术,是EJB标准的持久化技术,因此,目前存在两种持久化技术,EJB3.0将继续使用CMP,用户可根据自己需要选择:一种是业界标准;一种是开源项目。

ejb和企业结构层次:
ejb是企业JavaBeans,作为一个标准的J2EE程序员,如果不懂(无需精通或者实际中选用),就如不懂设计模式,自己眼界以及思维水平总是欠缺的。当然EJB2.0是复杂,为什么复杂?因为追求高度的可伸缩性、可扩展性使然,建议学习EJB的人看一下PetStore源码,EJB是企业级别的组件,因此有组件(构架)、中间件所具备的优点,初学者应该掌握这些基本常识。

Factory等几种开发模式
GoF的模式非常重要,板桥在J道最早推出GoF 23种模式成体系介绍,当时,除了GOF设计模式中译本,国内书籍基本看不到模式方面的书籍。
在"Java实用系统开发指南"中进行详细编程时,都从模式角度考虑,或在简单编码后,实现重整Refactorying。

java socket
虽然J2EE提供技术选择很多,但是对于一些实时性很强的项目,以及和原来系统整合,Socket是一个朴素的选择,同时 多线程犹如一头烈马,给有能力者带来一种征服欲望,Servlet其实就是线程,是被包装了的线程。所以理解线程,有助于理解Servlet。

softxyz还没看到框架之类章节,框架属于中间件,带动了面向组件(构件)编程,国内现在好像才开始明白面向组件 中间件是什么,BEA已经吹响了中间件结束的历史,开始了SOA新的阶段,但是如果不理解中间件 组件,直接进入SOA,也会惶惑,就象不理解设计模式,再进入J2EE复杂的多层结构,会被其复杂都搞糊涂。


我看到有人这么讲述J2EE,觉得有一定道理:
如果在项目中没有使用EJB,就不能算是真正使用了J2EE技术。J2EE是一个完整的体系,Servlet和JSP等提供表现层技术,EJB提供逻辑层技术,JDBC、JMS、JNDI和JCA等提供对后端企业资源的访问技术,只有将这三个层次有机的结合在一起才能真正体会到J2EE对企业应用所带来的好处。

banq的这不书确实不错,不过初学者读起来肯定会很困难,特别是其中的一些设计思想,设计模式的东西,如果没有实际的开发经验,许多东西理解起来确实很困难。
我读这本书时,也不是特别轻松,有时候看完一部分后,需要合上书,好好的思索一下,或是找点相关的书参考一下,才能更好的理解。
这本书不可能读一遍就全部掌握,那是作者多年的经验总结,也不会那么简单就都领会了,需要在实践中不断的重读,才能理解掌握的更深。

to softxyz

是的,这也是我的观点,一个标准的J2EE程序员应该知晓这些技术,有了比较,眼界才会宽广,切不可以为掌握了Jsp/Servlet就浮躁起来了。

看到很多地方媒体或网站在讨论EJB是否需要,我总是感到纳闷,“EJB在项目中是否需要”这个问题讨论不代表着“是否需要学习EJB”这个问题的讨论,在大家都没有学会EJB这一基础技术之前,引发“EJB在项目中是否需要”这样深度的架构选择问题讨论,未免过于滑稽了。

呼吁大家,少谈论,多学习技术,多发表技术方面讨论,勿浮躁。

总之,以学习技术为乐趣。

我在读第6章关于JAAS时,理解的不太透彻。
如果设计一套基于role的用户权限管理模块,需要对用户的登录和操作进行比较细化的管理。以论坛为例,比如细到用户是否能打开板块,能否阅读帖子,能否发表新贴或者回复、修改、打印;版主可以修改和删除帖子;管理员可以授权斑竹和普通用户权限。那么这样的数据库表该如何适当的建立?如何让jaas与数据库结合应用?
我看jive相关的数据库表简化后大致是这样的:
table user(userid int, username varchar)
table userperm(userid int, usertype int, permission int)
table usergrp(grpid int, name varchar)
table usergrpperm(grpid int,permission int)
这样的表结构似乎太简单了,无法满足太细的权限划分。请问是否有更合适的方法?
假设这套系统的实际用户数在300人左右,权限划分大致有子部门用户、子部门领导、子部门管理员、总领导、总管理员等5级,应用操作可能有几十种并且变化。只考虑总管理员具有分配权限的权力。

是的,Jive是无法在权限ACl这方面提供参考的。

关于你说的这些ACL功能,目前有两种解决方向:1.自己编码,使用AOP实现;2.半编码半配置,使用J2EE服务器的ACL实现。

后者,实现的前提是RBAC,也就是说,你必须首先从你的系统出抽象出角色概念,形成这样的关系:用户<-->角色<-->权限。
角色<-->权限之间关系是在web.xml和ejb-jar.xml中配置的。

用户<-->角色之间关系是依靠编码实现的,因为提供管理员动态授权某些用户为某些角色。

不知是否能帮助你?

由于这些天出差到外地无法上网,不能及时回复,多谢你的建议。

banq的《Java实用系统开发指南》是一本好书。国内图书市场太滥了,不过我还是喜欢这本banq的大作。看ing。
感谢banq

hehe
就是太贵了:)