http://blog.sina.com.cn/leizeming[订阅][手机订阅]
个人资料
评论
读取中...
图片幻灯
访客
读取中...
好友
读取中...
音乐播放器
博文
Struts2与Struts1的对比(2008-07-13 18:46)
 来源:struts2开发组 翻译:tianxinet(胖猴)
Action 类:
' Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
' Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
' Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
' Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
' Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
' Struts 2 Action不依赖于容器,允
开发环境架构配置
作者:霍然。
这里配置的是Struts+Spring+Hibernate 开发环境。如有不托之处请高手指出,并完善。

一  所需要的软件:
 j2sdk-1_4_2_05-windows-i586-p.exe
      eclipse-SDK-3.1-win32.zip
      ME-4.0.3GA_E3.1ManualInstall.zip
      resin-pro-3.0.15或者jakarta-tomcat-5.0.28
      另外需要插件:如vss :org.vssplugin_1.6.1

注意:任何插件安装好后,都要重新启动eclipse

二  安装步骤
     
1 安装  j2sdk-1_4_2_05-windows-i586-p.exe
  安装目录:C:\j2sdk1.4.2_05  注:安装目录可以自己来定

  配置环境变量:
  JAVA_HOME=C:\j2sdk1.4.2_05    -----jdk安装根目录
PATH=%JAVA_HOME%\bin;%CATALINA_HOME%\bin;
CLASSPATH=.;%JAVA_HOME%\lib\dt.ja
几乎所有使用 AWT 或 Swing 编写的画图程序都需要多线程。但多线程程序会造成许多困难,刚开始编程的开发者常常会发现他们被一些问题所折磨,例如不正确的程序行为或死锁。

在本文中,我们将探讨使用多线程时遇到的问题,并提出那些常见陷阱的解决方案。

线程是什么?

一个程序或进程能够包含多个线程,这些线程可以根据程序的代码执行相应的指令。多线程看上去似乎在并行执行它们各自的工作,就像在一台计算机上运行着多个处理机一样。在多处理机计算机上实现多线程时,它们确实可以并行工作。和进程不同的是,线程共享地址空间。也就是说,多个线程能够读写相同的变量或数据结构。

编写多线程程序时,你必须注意每
java学习资料站(2008-07-06 13:14)
 1、 http://java.sun.com/ ;(英文)
Sun的Java网站,是一个应该经常去看的地方。不用多说。

2、 http://www-900.ibm.com/developerWorks/cn/ ;
IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux极好的网站。强烈推荐!!!

3、 http://www.java-cn.com/ ;(中文)
JAVA 中文站,目前国内资料最全、会员最多的JAVA技术网站,人气极高。有《JAVA电子书库》、《JAVA视频库》(国内唯一)、《JAVA技术文摘库》、《JAVA源代码库》、《JAVA工具库》、《招聘求职广场》等主要栏目,还有一些专家栏目。目前会员有10万多,VIP会员近1000人。无论是菜鸟还是老鸟,都能在此网站中找到自己所需要的东东!!  最强烈推荐!!!!!!

4、 http://www.javaworld.com/ ;(英文)
关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。

5、 http://dev2dev.bea.com.cn/index.jsp ;
BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。
 一、 Hibernate简介Hibernate是一个JDO工具。它的工作原理是通过文件(一般有两种:xml文件和properties文件)把值对象和数据库表之间建立起一个映射关系。这样,我们只需要通过操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为编码工作节约了大量的时间。Hibernate提供的HQL是一种类SQL语言,它和EJBQL一样都是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL。

  二、 Hibernate与JDBC的区别Hibernate与JDBC的主要区别如下:

  1、 Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,从某种意义上来说,Hibernate在任何场合下取代JDBC。

  2、 Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一

JSF与Struts的异同(2008-06-29 22:21)
 Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细分析比较一下到底是怎么回事?

  首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。

  在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

  struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。

  而这种情况使用JSF就可以

Hibernate的基本特征是完成面向对象的程序设计语言到关系数据库的映射,在Hibernate中使用持久化对象PO(Persistent Object)完成持久化操作,对PO的操作必须在Session管理下才能同步到数据库,但是这里的Session并非指HttpSession,可以理解为基于JDBCConnnection,Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与Session息息相关,首先,我们需要知道,SessionFactory负责创建Session,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例。而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,则将会导致Session 数据存取逻辑混乱.因此创建的Session实例必须在本地存取空上运行,使之总与当前的线程相关。 这里就需要用到ThreadLocal,在很多种Session 管理方案中都用到了它.ThreadLocal 是Java中一种较为特殊的线程绑定机制,通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM
hibernate的核心接口(2008-06-22 19:42)
Session 接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中,实例 化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要, 因为在客户程序中,可能会不断地创建以及销毁Session 对象,如果Session 的开销太大,会给系 统带来不良影响。但值得注意的是Session 对象是非线程安全的,因此在你的设计中,最好是一个 线程只创建一个Session对象。 在Hibernate 的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。 我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及 时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作, 诸如存持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP 应用中的HttpSession。当我们使用session这个术语时,我们指的Hibernate 中的session,而 我们以后会将HttpSesion 对象称为用户session。
 SessionFactory 接口 这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session 的 实例。 令你感到奇怪的
当我们在写action的时候,可以实现action接口,也可以继承actionsupport这个类.到底这2个有什么区别呢...

action接口有:
public static final java.lang.String SUCCESS = 'success';
public static final java.lang.String NONE = 'none';
public static final java.lang.String ERROR = 'error';
public static final java.lang.String INPUT = 'input';
public static final java.lang.String LOGIN = 'login';

public abstract java.lang.String execute() throws java.lang.Exception;

而actionsupport这个工具类在实现了action接口的基础上还定义了一个validate()方法,重写该方法,它会在execute()方法之前执行,如校验失败,统能将视图转入input处,必须在配置该Action时配置input属性。

另外,actionsupport还提供了一个getText(String key)方法还实现国际化,该方法从资源文件上获取国际化信息.