
java技术
文章平均质量分 78
chjttony
java软件工程师。
展开
-
自己写的基于java Annotation(注解)的数据校验框架
<br />源代码和UT请见http://download.youkuaiyun.com/source/2640884<br /> <br />JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架。有兴趣的可以扩展。<br /> <br />框架说明:<br />AnnotationValidable接口:所有需要原创 2010-08-23 16:47:00 · 10156 阅读 · 0 评论 -
JSF1.2中使用rich:datatable组件,在rich:column中显示日期和时间时时区信息不正确
本来没有打算写这篇文章的,但是两个月里两次遇到这个问题,因此觉得有必要写下来分享给大家。在JSF1.2中使用rich:datatable组件,在rich:column中如果要显示日期和时间的话,如果服务器不在本地,你可能会发现日期和时间有点偏差。代码如下: value="#{bundle.view_plans_page_table_createdate}" style="font-weight: bold;font-size: 10pt"/>原创 2010-09-10 10:23:00 · 3304 阅读 · 0 评论 -
WebService另一种轻量级实现—Hessian 学习笔记
最近和同事聊天,得知他们在使用一种叫做Hessian的WebService实现方式实现远程方法调用,是轻量级的,不依赖JavaEE容器,同时也是二进制数据格式传输,效率比SOAP的XML方式要高。感觉像是RESTFUL方式类似,好奇之下到网上查阅相关资料,总结如下:一、简介 Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。1、是基于什么协议实现的? 基于Binary-RPC协议实现。2、怎么发起请求? 需通过Hessi转载 2010-09-26 16:44:00 · 14622 阅读 · 0 评论 -
java正则表达式学习总结,以及和javascript正则表达式的区别
用正则表达式处理字符串功能非常强大,下面总结一下java正则表达式的一些知识:基本元字符.任何字符(与行结束符可能匹配也可能不匹配)// 反斜杠/t 间隔 ('/u0009')/n 换行 ('/u000A')/r 回车 ('/u000D')/d 数字 等价于[0-9]/D 非数字 等价于[^0-9]/s 空白符号 [/t/n/x0B/f/r]/S 非空白符号 [^/t/n/x0B/f/r]/w 单独字符 [a-zA-Z_0-9]/W 非单独字符 [^a-zA-Z_0-9]/f 换页符/e Escape/b原创 2010-10-08 10:48:00 · 6347 阅读 · 1 评论 -
Hibernate的一些使用技巧
1.Hibernate是如今最流行的开源对象关系映射(ORM)持久化框架,SSH框架组合是很多JavaEE工程的首选,java持久化框架(JPA)的设计师是Hibernate的作者,因此对于Hibernate的一些基本知识在JPA学习笔记总结中具体总结。本篇只总结一些Hibernate使用中的一些小技巧。2.实体对象的3中状态:实体对象的生命周期是Hibernate中的一个关键概念,实体对象生命周期中有以下3种状态:(1).Transient(自由状态):有人也叫透明状态,即在内存中自由存在的对象,与数据库原创 2010-11-29 10:37:00 · 4814 阅读 · 0 评论 -
ThreadLocal-分析-总结
ThreadLocal类在Spring,Hibernate等框架中起到了很大的作用,对于其工作原理,很多网上的文章分析的不够彻底,甚至有些误解。首先,为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类(内部类)1.ThreadLocalMap2.Thread可能有人会觉得Thread与ThreadLocal有什么关系,其实真正的奥秘就在Thread类中的一行: Java代码 ThreadLocal.ThreadLocalMap threadLocals = null; 其中转载 2010-10-08 15:43:00 · 1358 阅读 · 0 评论 -
java集合类总结
<br />对象的集合 <br />如果程序的对象数量有限,且寿命可知,那么这个程序是相当简单的。<br />数组<br />数组与其它容器的区别体现在三个方面:效率,类型识别以及可以持有primitives。数组是Java提供的,能随机存储和访问reference序列的诸多方法中的,最高效的一种。数组是一个简单的线性序列,所有它可以快速的访问其中的元素。但是速度是有代价的;当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里不能改变。也许你会提议先创建一个数组,等到快不够用的时候,再创建一个新的,转载 2010-12-03 16:57:00 · 1375 阅读 · 0 评论 -
Android基础
1.Android是Google公司发布的一款基于Linux内核,使用java语言编写应用程序的手机操作系统,现在和苹果公司的IOS、诺基亚公司的Symbian、以及诺基亚和英特尔联合推出的的Meego手机操作系统共同成为如今最流行的手机操作系统。2.Android开发的环境准备:(1).到Google的Android官方网站下载最新的Android开发包SDK,将其解压到目标路径。(2).在Eclipse中安装Android开发插件ADT(可以使用在线安装方式,也可以从Google官方下载后解压到Ecli原创 2010-12-06 10:00:00 · 3764 阅读 · 0 评论 -
EJB学习笔记——会话Bean
1.EJB3简介:EJB是企业级java bean(Enterprise Java Bean)开发技术,是基于IIOP协议的分布式远程方法调用技术(RMI),EJB3在JavaEE5中被正式引入,去掉了EJB2以前的复制度,使得EJB3更加轻量级,同时将实体Bean单独分拆成为JPA规范,从而使EJB3更加专注于会话Bean和消息驱动Bean的业务逻辑,同时EJB3中全面支持java注解方式,大大简化开发的难度提高开发效率。2.在客户端调用一个简单EJB3程序:首先使用一个简单例子演示客户端调用EJB3的基原创 2010-12-13 11:13:00 · 4723 阅读 · 2 评论 -
EJB学习笔记——JMS和消息驱动Bean
JMS和消息驱动Bean1.java消息服务(JMS)编程:应用程序A发送一条消息到消息服务器的某个目的地,然后消息服务器把消息转发给应用程序B,由于JMS允许消息发送方和接收方不同时在线,没有代码关联,从而实现应用程序的解耦,JMS的过程如下:应用程序A——>消息——>JMS消息服务器——>消息——>应用程序B2.JMS消息的传递模型:JMS支持两种消息传递模型:点对点(PTP)、发布订阅(pub/sub)。(1).PTP:一条消息只能传递给一个接收方,采用javax.jms.Queue表示。每个消息被发原创 2010-12-13 11:15:00 · 8115 阅读 · 3 评论 -
HTTP协议详解
<br /> <br />1. HTTP1.0会话过程:<br /><br />对于每一个页面的访问,浏览器与Web服务器建立一次单独的连接,浏览器与服务器之间所有的通讯都是完全独立分开的请求和响应对。<br />2. 代理机制:<br /><br />对于浏览器来说,代理相当于服务器,对于服务器来说,代理相当于浏览器。<br />1. HTTP1.1对HTTP1.0的改进:<br />(1).在一个TCP连接上可以传送多个HTTP请求和响应。<br />(2).多个请求和响应过程原创 2010-12-20 10:15:00 · 1901 阅读 · 0 评论 -
Servlet学习笔记
1.一个Servlet程序就是一个实现了特殊接口的java类,它由支持servlet(具有servlet引擎)的web服务器调用和启动运行。一个Servlet程序负责处理它所对应的一个或一组url地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。2.所有的servlet(自定义的)都必须实现servlet接口(javax.servlet.Servlet)。由于Servlet接口中有很多方法不需要实现,因此可以继承GenericServlet类。GenericServlet实现了servlet接口原创 2010-12-20 10:17:00 · 17300 阅读 · 0 评论 -
JPA学习笔记1——JPA基础
1.JPA简介:Java持久化规范,是从EJB2.x以前的实体Bean(Entitybean)分离出来的,EJB3以后不再有实体bean,而是将实体bean放到JPA中实现。JPA是sun提出的一个对象持久化规范,各JavaEE应用服务器自主选择具体实现,JPA的设计者是Hibernate框架的作者,因此Hibernate作为Jboss服务器中JPA的默认实现,Oracle的Weblogic使用EclipseLink(以前叫TopLink)作为默认的JPA实现,IBM的Websphere和Sun的Gla原创 2010-12-20 10:20:00 · 54614 阅读 · 8 评论 -
JNDI简介
1.JNDI:java命名和目录接口,主要用于在javaEE服务器上存储对象资源,EJB的会话bean、JMS的消息目标地址、JPA的数据源等都可以使用JNDI。2.JNDI客户端开发步骤:(1).创建初始化上下文(InitialContext):两个重要参数:Context.INITIAL_CONTEXT_FACTORY(或者java.naming.factory),Context.PROVIDER_URL(或者java.naming.provider.url)。(2).创建上下文和删除上下文:创建上下文原创 2010-12-20 09:57:00 · 187 阅读 · 0 评论 -
巧用EJB QL中的IN操作符,方便从集合中选择集合元素
实体Bean中很多关系是集合型的,方便地从这些关系中访问和选择bean是非常重要的。今天工作中遇到一个难题如下:有一个对象A中包含多个对象B,对象B中又包含多个对象C,C对象中包含多个对象D.现在想根据对象D的id属性从数据库中查找出所有包含指定C对象的A对象。对象结构如下:A——>Set blist——>Set clist——>Set dlist看到需求的第一时刻很多人都可能想到使用子查询或者连接等来解决,但是如果结果比这更复杂的情况,SQL语句可能比较难写。通过查找EJB3.0的学习文档找到了很好的解决原创 2010-11-01 16:00:00 · 1456 阅读 · 3 评论 -
JDBC学习笔记
1.JDBC编程的一般步骤:(1).注册数据库连接驱动。(2).建立数据库连接。(3).创建SQL语句。(4).执行SQL语句。(5).处理执行结果。(6).释放资源和数据库连接。2.JDBC注册数据库连接驱动3种方式:(1).DriverManager.registerDriver(驱动类对象);(2).System.setProperty(“jdbc.drivers”, 驱动类名);(3).Class.forName(驱动类名);其中,第三种通过反射注册驱动是最常用的方式,也是JDBC编程中推荐使用的方原创 2010-12-26 15:34:00 · 3883 阅读 · 1 评论 -
Struts1使用技巧
1.Struts1是Apache推出的java web开发领域一个比较早,同时也是使用最广泛的MVC开源框架,对于Struts1的基础不再做说明,本文只总结Struts1开发中的一些小技巧。2.Struts配置文件中支持通配符:如:type和name中的{1}对应path中的”*”通配符。3.Struts配置文件中的actionFormBean和action分别对应Struts中的FormBeanConfig和ActionConfig类,在运行时,Struts将配置转换为javaBean。4.页面中添加超链原创 2010-12-26 15:36:00 · 6078 阅读 · 0 评论 -
JavaMail学习笔记3——JavaMail 接收邮件
JavaMail API中定义了一个javax.mail.Store类,它用于执行邮件接收任务,这个类的实例对象封装了某种邮件接收协议的底层实施细节,应用程序调用这个类中的方法就可以获得用户邮箱中的各个邮件夹的信息。JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法应用程序进而又可以获得该邮件夹中的所有邮件信息,而每封邮件信息,JavaMail又分别使用了一个Message对象进行封装。Store类:与Transport类一样,javax.mail.Store类也继承了java.ma原创 2010-11-12 17:48:00 · 25539 阅读 · 8 评论 -
JSP基础
1. JSP注释:显式注释:。隐藏注释:。JSP编译器不对隐藏注释的内容进行编译。2. JSP声明语法:注意:(1).JSP声明必须以分号”;”结尾。(2).可以直接使用在中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。(3).一个声明仅在一个页面中有效,对于一些每页都用到的声明,最好把它们写成一个单独的文件,然后使用或者语句把该文件包含进来。3. JSP表达式:,如显示系统时间的表达式:JSP表达式也可以写成:表达式。注意:表达式不能使用分号”;”作为结束符。4.原创 2010-11-15 09:30:00 · 1999 阅读 · 0 评论 -
Struts2学习笔记1——基础知识
1.Struts2是现在Web开发中一个比较流行的MVC框架,它是由WebWork框架发展而来的,Struts1与Struts2如同小熊猫与大熊猫一样,虽然名字相同,但是区别比较大,Struts2充分吸收了Struts1的优秀之处,同时也避免了Struts1的不足之处,开发更方便快捷。2.Struts2在web.xml文件中主要配置一个过滤器用于接收页面请求,并将请求转发给后台逻辑处理,其作用类似于Struts1中的ActionServlet。其具体配置如下:struts2org.apache.struts原创 2010-11-15 09:31:00 · 2719 阅读 · 0 评论 -
Struts2学习笔记2——高级特性
1.Struts2的核心——拦截器(interceptor):拦截器是用于在Action或者某个方法调用之前进行特定的处理的对象,类似于过滤器,是一个特殊的Servlet。拦截器主要用于在调用Action或Action方法之前做输入校验、权限验证,字符编码转换等一些通用操作。多个拦截器构成拦截器栈。Struts2中有一个默认的拦截器栈,在每个Action调用之前执行。拦截器三个对象:被拦截对象,拦截器对象本身,代理。真正执行的不想目标对象,而代理。拦截器要实现Interceptor接口,默认实现拦截器时继承原创 2010-11-15 09:32:00 · 5573 阅读 · 1 评论 -
SAX处理XML
1.SAX(Simple Access for XML)API:基于事件驱动的XML处理模型,是一种推模式解析(push-parsing) XML文档的API。解析程序按读入xml文档事件的顺序解析数据,同时基于所选择的结构调用回调处理函数。2.SAX处理模型的工作步骤:(1).实现一个扩展DefaultHandler的类,并为每种类型的结构定义回调方法。(2).初始化一个新的SAX Parser类,Parser读取XML源文件,并触发DefaultHandler类中所定义的回调方法。(3).顺序读取XML原创 2011-01-09 12:22:00 · 3374 阅读 · 0 评论 -
StAX处理XML
1.StAX(TheStreaming API for XML),是一种利用拉模式解析(pull-parsing)XML文档的API。StAX 把重点放在流上,它提供了两套处理 XML的 API:基于指针的 API, 把 XML文档当做一个标记(或事件)流来处理;允许应用程序检查解析器的状态,获得解析的上一个标记的信息,然后再处理下一个标记,依此类推;另一种较为高级的是基于迭代器的 API,把 XML 作为一系列事件对象来处理,每个对象和应用程序交换 XML 结构的一部分。应用程序根据需要定制解原创 2011-01-09 12:23:00 · 9736 阅读 · 1 评论 -
DOM处理XML
1.DOM(Document Object Model),文档对象模型处理XML的API,是W3C对于XML处理的成熟标准,其工作原理是将整个XML文档读入内存,创建一颗DOM树,用树状结构表示XML的结构化数据。DOM支持对树中任何节点的随机访问。2.DOM处理XML的基本步骤:(1).初始化一个新的Builder类,Builder类负责读取XML数据并把XML数据转化为树状表示结构。(2).数据转化完成,创建Document对象。(3).使用Document对象访问代表了XML文档中元素的节点。3.DO原创 2011-01-09 12:25:00 · 2525 阅读 · 0 评论 -
java内存结构
一、Java内存分配1、 Java有几种存储区域?* 寄存器 -- 在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理* 栈 -- 在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域,即栈顶的地址和栈的最大容量是系统预先规定好的。 -- 优点:由系统自动分配,速度较快。 -- 缺点:不够灵活,但程序员是无法控制的。 -- 存放基本数据类型、开发过程中就创建的对象(而不是运行过程中)* 堆 -- 是向高地址扩展的数据结构,转载 2010-11-16 15:37:00 · 3788 阅读 · 0 评论 -
防范JAVA内存泄漏解决方案
<br /><br />Java是如何管理内存<br />为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法确实简化了程序员的工作。但同时,它也加重了JVM的工作。这也是Java程序运行速度较转载 2010-11-16 16:22:00 · 1477 阅读 · 0 评论 -
java类装载器分析
1 前言ClassLoader 是 Java 虚拟机 (JVM) 的类装载子系统,它负责将 Java 字节码装载到 JVM 中, 并使其成为 JVM 一部分。 JVM 的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块 , 而不影响系统其他功能模块的正常运行。本文将分析 JVM 中的类装载系统,探讨 JVM 中类装载的原理、实现以及应用。2 装载过程简介类装载就是寻找一个类或是一个接口的字节码文件并通过解析该字节码来构造代表这个类或是这个接口的 cla原创 2010-11-16 16:33:00 · 2787 阅读 · 0 评论 -
WebSerice学习笔记1——WebSerice基础
1.WebService的主要标准和技术:SOAP:简单对象访问协议。UDDI:通用描述、发现和集成。WSDL:Web服务定义语言。ebXML:电子商务XML。2.WebService基本操作模型:3.SOAP简介:SOAP:是一种基于XML的轻量级消息交换协议,利用SOAP可以在两个或多个对等实体之间进行信息交换。(1).SOAP消息基本结构:soap:encodingStyle=”http://www.w3.org/2001/12/soap-encoding”> ——>SOAP信封 ——原创 2011-01-15 16:03:00 · 3610 阅读 · 0 评论 -
Ibatis学习笔记
1. Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate、Toplink等在java编程的对象持久化方面深受开发人员欢迎。对象关系映射(ORM):简单原理是通过面向对象方式操作关系型数据库,目前存储数据最常用最流行的工具是关系型数据库,其操作方式是通过SQL语句操作数据库的表,但是对于Java面向对象编程语言中,所有的操作对象都是对象,因此对象关系映射就是把数据库表和java编程语言中的对象对应起来,把表的列同java对象中的字段对应起来,程原创 2010-11-22 09:07:00 · 16076 阅读 · 3 评论 -
WebSerice学习笔记2——XFire基础
1.XFire是codehaus推出的下一代的java SOAP框架,通过提供的简单的API和支持标准协议,可以方面地开发webservice程序。XFire最大的特点就是支持将POJO通过非常简单的方式发布为WebService,同时还拥有很高的性能。2.XFire将 POJO 发布成 Web 服务的基本步骤:(1).创建 Web 服务接口,声明该 Web 服务对外暴露的接口;(2).创建 Web 服务实现类,为 Web 服务接口提供实现;(3).修改 XFire 框架的服务发布文件 ---- servi原创 2011-01-17 16:12:00 · 7099 阅读 · 0 评论 -
WebService学习笔记4——AXIS1基础
1.AXIS简介:Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本是采用Java开发的1.1版本,C++的版本正在开发之中。但是Axis不仅仅是一个SOAP引擎,它还包括:(1). 一个独立运行的SOAP服务器。(2).一个servlet引擎的插件,这个servlet引擎可以是Tomcat。(3).对WSDL的扩展支持。(4).一个将WSDL的描述生成JAVA类的工具。(5).一些示例代码。(6).还有一个监控TCP/IP原创 2011-02-26 16:58:00 · 8139 阅读 · 0 评论 -
WebService学习笔记5——AXIS2基础
1.AXIS2简介:Apache Axis2项目是一个基于Java语言的Webservices系统服务和客户端的实现。为了从Apache Axis 1.0中获取教训,Apache Axis2提供了一个完整的对象模型和模块化体系结构,这样可以很容易的添加功能以及支持一个新的与Web services相关的说明和建议。Axis2可以让你很容易的执行以下任务:(1).发送SOAP消息。(2).接收和处理SOAP消息。(3).从一个普通的Java类建立Web service。(4).用WSDL来建立实现服务和客原创 2011-02-27 16:25:00 · 14530 阅读 · 3 评论 -
基于角色的访问控制(RBAC)介绍
企业环境中的访问控制策略一般有三种:自主型访问控制方法、强制型访问控制方法和基于角色的访问控制方法(RBAC)。其中,自主式太弱,强制式太强,二者工作量大,不便于管理。基于角色的访问控制方法是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销;2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。对角色授权即基于角色的访问控制(RBAC)。NIST(The National Institute of Standards and Technol原创 2011-03-07 15:05:00 · 21003 阅读 · 1 评论 -
WebService学习笔记3——CXF基础
1.CXF是基于JAX-WS实现的,JAX-WS规范是一组XML web services的JAVA API,它使用户无需编写复杂的SOAP ENV,WSDL。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface)原创 2011-02-20 16:05:00 · 14536 阅读 · 5 评论 -
JavaMail学习笔记1——JavaMail基础知识
<br /> <br />1. 电子邮件相关协议:<br />(1).SMTP<br />简单邮件传输协议,定义了递送邮件的机制。我们将使用基于Java-Mail的程序与公司或者ISP的SMTP服务器进行通讯。这个SMTP服务器将邮件转发到接收者的SMTP服务器,直至原创 2010-11-08 10:05:00 · 7530 阅读 · 6 评论 -
Java命令参数说明大全
Java 在运行已编译完成的类时,是通过 java 虚拟机来装载和执行的,java 虚拟机通过操作系统命令 JAVA_HOME\bin\java –option 来启动,-option 为虚拟机参数,JAVA_HOME 为JDK安装路径,通过这些参数可对虚拟机的运行状态进转载 2011-09-27 17:49:02 · 1415 阅读 · 0 评论 -
java几种读取.properties文件的方式
1、使用java.util.Properties类的load()方法 示例:Java代码 InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2、使用java.util.Resour原创 2010-10-08 16:30:00 · 4135 阅读 · 0 评论 -
JPA一对多关系,在一端更新所包含多端引用的问题
在JPA一对多关系中,如 学校类: public class School{@Idprivate int id;@OneToMany(mappedby="school",casecade = CasecadeType.ALL)private Set students;........} 学生类: public class Student{@Idpr原创 2010-09-10 10:44:00 · 13350 阅读 · 6 评论 -
JAX-WS和JAX-RPC方式调用Web Service的Java客户端
基于JAX-WS调用Web Service的Java客户端一般采用两种方式:proxy方式以及dispatch方式。proxy方式,proxy的步骤主要如下图所示:一,proxy方式的调用代码片段一般如下:[java] view plaincopyURL wsdlURL = new URL("file:///D:/JAVA转载 2012-06-19 17:14:52 · 5489 阅读 · 0 评论 -
java解析xml文件读取本地dtd或者忽略dtd
Java程序在解析xml文件时,如果xml文件中指定了dtd,在默认会从指定的url下载dtd文件,但是很多情况下如果网络连接不上,或者防火墙原因,dtd文件无法下载下来导致程序报连接超时异常,解析xml失败。有两种方法解决该类问题:1.指定从本地读取dtd文件若要解析的xml文件中有如下的dtd声明:。publicId:被引用的外部实体的公共标识符,如果未提供,则为 null原创 2012-07-06 10:01:44 · 18180 阅读 · 1 评论