当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪第十一章 Hibernate的查询 Query by Criteria(QBC)      QBC(QueryByCriteria)查询方式是Hibernate提供的“更加面向对象”的一种检索方式。QBC在条件查询上比HQL查询更为灵活,而且支持运行时动态生成查询语句。  1、在Hibernate应用中使用QBC查询通常.........
    ▪EJBCA接口调用---1          由于网上关于EJBCA接口调用的文章几乎没有,只有自己看源码了。按照WIKI上所说的,看了一下。把看的结果分享一下。      Org/ejbca/ui/cli Ø   ErrorAdminCommandException .........
    ▪白话REST-识别真假REST      大家对REST的认识?         谈到REST大家的第一印象就是通过http协议的GET,POST,DELETE,PUT方法实现对url资源的CRUD(创建、读取、更新和删除)操作。比如http://www.aizher..........

[1]第十一章 Hibernate的查询 Query by Criteria(QBC)
    来源: 互联网  发布时间: 2013-11-19

QBC(QueryByCriteria)查询方式是Hibernate提供的“更加面向对象”的一种检索方式。QBC在条件查询上比HQL查询更为灵活,而且支持运行时动态生成查询语句。 

1、在Hibernate应用中使用QBC查询通常经过3个步骤
 (1)使用Session实例的createCriteria()方法创建Criteria对象
 (2)使用工具类Restrictions的相关方法为Criteria对象设置查询对象
 (3)使用Criteria对象的list()方法执行查询,返回查询结果

2、一般的用法:
//查询名字为zhangsan的用户
			Criteria criteria = session.createCriteria(User.class);
			criteria.add(Restrictions.eq("username", "zhangsan"));
			List<User> users = criteria.list();
			for(User user : users){
				System.out.println(user.getId() + "--" + user.getUsername());
			}


3、Restrictions用法

Hibernate中Restrictions的方法       说明 
Restrictions.eq                                    = 
Restrictions.allEq                               利用Map来进行多个等于的限制 
Restrictions.gt                                     > 
Restrictions.ge                                     >= 
Restrictions.lt                                      <
Restrictions.le                                      <= 
Restrictions.between                           BETWEEN
Restrictions.like                                   LIKE
Restrictions.in                                     in
Restrictions.and                                  and
Restrictions.or                                     or
Restrictions.sqlRestriction                 用SQL限定查询 


查询id大于100,小于200的用户:

Criteria criteria = session.createCriteria(User.class);
			criteria.add(Restrictions.gt("id", 100)).add(Restrictions.lt("id", 200));
			List<User> users = criteria.list();
			for(User user : users){
				System.out.println(user.getId() + "--" + user.getUsername());
		}




    
[2]EJBCA接口调用---1
    来源: 互联网  发布时间: 2013-11-19

    由于网上关于EJBCA接口调用的文章几乎没有,只有自己看源码了。按照WIKI上所说的,看了一下。把看的结果分享一下。

    

Org/ejbca/ui/cli

Ø   ErrorAdminCommandException

 管理员命令出错后的异常

Ø  IAdminCommand

   执行管理员命令

Ø  IllegalAdminCommandException

        非法管理员命令异常

org/ejbca/ui/web  /protocol

Ø  IHealtChecker

  一个接口。会被healthcheckservlet调用。

l   String healthCheck(boolean doSignTest, boolean doValidityTest);

Ø  RFC4387URL

  是一个枚举类。创建RFC4387URL和HTML的一些引用到一些URL上。

l   public String appendQueryToURL(/blog_article/String url, HashID hash, booleanisDelta/index.html)

 把RFC的查询添加到URL上

l   public String appendQueryToURL(/blog_article/String url, HashID hash/index.html)

 appendQueryToURL(/blog_article/url,  hash, false/index.html)

l   public String getRef(String url, HashID hash, boolean isDelta)

  以String的形式得到一个证书或者CRL

l   public String getRef(String url, HashID hash)

  重构。

 /pub

Ø  ServletDebug

   向浏览器客户端打印出调试信息

l public void ieCertFix(byte[] bA)ie证书修复(感觉用不上),             在这里面调用了RequestHelper里面的函数

RequestHelper.ieCertFormat(bA,tmpPrinter);

l   public void printDebugInfo()

 打印出调试信息

Ø  ServletUtils

   这里的函数在很多servelet中都会用到,整理成一个类,避免了以后重复使用。

l   public static void removeCacheHeaders(HttpServletResponse res)

  将response中的header给去掉。No-cache的header会让IE拒绝保存一个文件。

l   public static void addCacheHeaders(HttpServletResponse res)

 向response中添加一个header

   /cluster

Ø  IHealthCheck

   一个接口,有一个函数,并未实现

l   public String checkHealth(HttpServletRequest request)

Ø  CommonHealthCheck

 是一个抽象类

 继承自IHealthCheck

l   init()函数中初始化维护文件

主要有checkMaintenance()函数,检查主维护文件是否有错误

      checkMemory(),检查JVM内存

Ø  ValidationAuthorityHealthCheck

继承自CommonHealthCheck

检查HttpServletRequest的请求是否有问题

l   public void printDebugInfo()打印出调试信息

l   public void printMessage(String msg)打印出消息

l   public void printInsertLineBreaks(byte[] bA)打印出输入的信息

 

 

 

Ø  RequestHelper

  一个辅助类,帮助处理来自浏览器的证书请求,或者产生PKCS#10

l   public byte[] nsCertRequest(SignSessionLocal signsession, byte[] reqBytes,String username,  String password)处理证书请求(貌似是firefox)

                   @paramsignsession EJB session to signature bean.     

                   @paramreqBytes buffer holding the request from NS.    

                  @param username username in EJBCAfor authoriation.                       @param password users password forauthorization.          返回包含了一定格式的字符,返回格式:

          <code> SignedPublicKeyAndChallenge::=SEQUENCE{

publicKeyAndChallenge PublicKeyAndChallenge,    

signatureAlgorithm AlgorithmIdentifier,

signature BIT STRING }</code>

公钥格式必须遵守RSAX.509.

l   public byte[] pkcs10CertRequest(SignSessionLocal signsession, byte[]b64Encoded,         String username,String password, int resulttype, boolean doSplitLines)处理PKCS10证书请求

@param signsession signsession to getcertificate from     

@param b64Encoded base64 encodedpkcs10 request       message     

@param username username ofrequesting user      @param password passwordof requesting user      @param resulttypeshould indicate if a PKCS7 or just the certificate is wanted.     

@param doSplitLines    

@return Base64 encoded byte[]  

 

l    public byte[]cvcCertRequest(SignSessionLocal signsession, byte[] b64Encoded, Stringusername, String password)处理CVC证书请求(我们用不上)

@param signsession signsession to getcertificate from      @param b64Encodedbase64 encoded cvc request message   

@param username username ofrequesting user      @param password passwordof requesting user      @return Base64encoded byte[]

 

l   public static void sendNewCertToNSClient(byte[] certs,HttpServletResponse out)发送新的证书给NS客户端(用不到)

@param certs DER encoded certificatesto be installed in browser    

@param out output stream to send to

l   public static void sendNewB64File(byte[] b64cert,HttpServletResponse out, String filename, String beginKey, String endKey)通过二进制的发送新的证书给客户端,base64编码

 @param b64cert base64 encoded certificate tobe returned    

 @param out output stream to send to   

 @param filename filename sent as'Content-disposition'  header     

 @param beginKey, String contaitning keyinformation        @param beginKey, String contaitning keyinformation

l   public static void sendNewB64Cert(byte[] b64cert,HttpServletResponse out, String beginKey, String endKey)重构,不提供文件名,文件名默认为"cert.pem"

l    public static voidsendNewX509CaCert(byte[] cert, HttpServletResponse out)将CA证书以二进制的形式返回,应该是X509证书

l   public static void setDefaultCharacterEncoding(HttpServletRequestrequest)设置默认的编码集

l   public static String getFileNameFromCertNoEnding(Certificate cacert,String defaultname)得到证书的文件名

Ø  CertificateView

   将X509证书的原始数据(二进制而文件)以网页的形式展示出来给用户看,格式化证书。

   通过一个Certificate的实例得到证书的各种信息

Ø  LimitLengthASN1Reader

    ASN1:一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。

这也是一个辅助类。

继承自ASN1InputStream,包bouncycastle中的一个类。

限制读入到ASN1格式数据的大小。

l   public byte[] readFirstASN1Object()

 把流中的数据读入到第一个ASN1对象中,并限制大小。

l   public int read()

                    得到读入数据的大小。

Ø  RevokedInfoView

   证书的撤销状态视图。

    这个类提供了查询关于证书撤销状态的所有信息。

   这么多类,我只是觉得最主要的功能都在RequestHelper中,这个类处理浏览器发来的请求,给用户生成证书。

作者:yilip 发表于2013-6-13 18:36:55 原文链接
阅读:0 评论:0 查看评论

    
[3]白话REST-识别真假REST
    来源: 互联网  发布时间: 2013-11-19

大家对REST的认识?

         谈到REST大家的第一印象就是通过http协议的GET,POST,DELETE,PUT方法实现对url资源的CRUD(创建、读取、更新和删除)操作。比如
http://www.aizher.com/c2/(读取)
仍然保持为 [GET] http://www.aizher.com/c2/
http://www.aizher.com/c2/create(创建)
改为 [POST] http://www.aizher.com/c2/
http://www.aizher.com/c2/update(更新)
改为 [PUT] http://www.aizher.com/c2/
http://www.aizher.com/c2/delete(删除)
改为 [DELETE] http://www.aizher.com/c2/
         这种形式的REST只是CRUD(增删改查),从这个层面上,好像REST只是和RPC一个层面的东西,没有什么了不起,其实这些都是对REST误读。也误导大家实现REST时,特种注重GET,POST,PUT,DELETE方法的处理,包括一些所谓的REST框架,比如JBoss RESTEasy,Restlet Tomcat。究其原因是, REST提供了一组架构约束,当作为一个整体来应用时,强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来减少交互延迟、增强安全性、封装遗留系统的中间组件。其实从整个REST推导过程中可以了解到,REST没有提及HTTP协议的任何方法,只是后期大家从REST的统一接口中扩展出这些操作概念。

到底什么是REST?
         REST是中文翻译为表征状态转移(英文:Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。从字面意思来说,“表述”是很难理解是什么东西的?从论文上我们可以看到表述,一般指HTML文档(包括json,xml等),jpeg等图片资源。
         先从理论层次上我们看一下REST是怎么推导来的(参考论文第五章)
         Web架构背后的设计基本原理,能够被描述为由一组应用于架构中元素之上的约束组成的架构风格。当将每个约束添加到进化中的风格时,会产生一些影响。通过检查这些影响,我们就能够识别出Web的约束所导致的属性。然后就能够应用额外的约束来形成一种新的架构风格,这种风格能够更好地反映出现代Web架构所期待的属性。通过简述REST作为架构风格的推导过程,后面各节将会详细描述组成REST风格的各种特定约束

         1:从“空”风格开始。从架构的观点来看,空风格描述了一个组件之间没有明显边界的系统,这就是我们描述REST的起点。

         2:客户-服务器。客户-服务器约束背后的原则是分离关注点。通过分离用户接口和数据存储这两个关注点,我们改善了用户接口跨多个平台的可移植性;同时通过简化服务器组件,改善了系统的可伸缩性。

         3:无状态。这个约束导致了可见性、可靠性和可伸缩性三个架构属性,但是无状态并不是没有缺点的,无状态增加了在一系列请求中发送的重复数据(每次交互的开销),可能会降低网络性,正因为这个缺点,所以在REST风格中增加了缓存的考虑。

         4:缓存,添加缓存约束的好处在于,它们有可能部分或全部消除一些交互,从而通过减少一系列交互的平均延迟时间,来提高效率、可伸缩性和用户可觉察的性能。但是缓存还是有缺点的,如果缓存中陈旧的数据与将请求直接发送到服务器得到的数据差别很大,那么缓存会降低可靠性。注意这里的缓存并不是指MC,redis之类的缓存,而是在网络代理中,比如proxy服务器上的缓存机制。

    5:统一接口。使REST架构风格区别于其他基于网络的架构风格的核心特征是,它强调组件之间要有一个统一的接口,为了获得统一的接口,需要有多个架构约束来指导组件的行为。REST由四个接口约束来定义:资源的识别(identification ofresources)、通过表述对资源执行的操作、自描述的

消息(self-descriptive messages)、以及作为应用状态引擎的超媒体相关因素

REST和其他概念关系。统一接口的虽然晦涩,但是它是REST风格核心特征,也是前面我们讨论通过CURD方式操作资源的一种表现,也是我们最容易接触感受到的一层,后面淘宝,微博,微信开放平台的开放接口,其实就是我们接触这个平台的统一接口,评价一个开发平台是否REST的标准,也在于这个平台的设计者对统一接口的理解。

         6:,分层系统,分成系统风格通过限制组件的行为(即,每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。通过将组件对系统的知识限制在单一层内,为整个系统的复杂性设置了边界,并且提高了底层独立性。分层系统增加了数据处理的开销和延迟,因此降低了用户可觉察的性能对于一个支持缓存约束的基于网络的系统来说,可以通过在中间层使用共享缓存所获得的好处来弥补这一缺点。正因为REST风格有这样的缺点,才会特意强调缓存的作用。

         7:按需代码,通过下载并执行applet形式或脚本形式的代码,REST允许对客户端的功能进行扩展,看似简单的一种风格设计,其实对B/S贡献最大的就是这个特性,现在ajax的底层其实就是按需代码机制。

         小结:基于网络的架构风格图形化地描述了REST约束的来源

        

数据流风格(Data-flow Styles)

  PF:管道和过滤器(Pipe and Filter,PF)

  UPF:统一管道和过滤器(Uniform Pipe andFilter,UPF)

复制风格(Replication Styles)

  RR:复制仓库(ReplicatedRepository,RR)--apache 多woker-利用多个进程提供相同的服务,来改善数据的可访问

  性(accessibility of data)和服务的可伸缩性(scalability of service)。CVS[www.cyclic.com]这样的远程版本控制系统

  $ 缓存(Cache,$)

分层风格(Hierarchical Styles)

  客户-服务器(Client-Server,CS)(rpc,corba)

  分层系统(Layered System,LS)和分层-客户-服务器(Layered-Client-Server,LCS)

  客户-无状态-服务器(Client-Stateless-Server,CSS)

  客户-缓存-无状态-服务器(Client-Cache-Stateless-Server,C$SS)

  分层-客户-缓存-无状态-服务器(Layered-Client-Cache-Stateless-Server,LC$SS)

  远程会话(Remote Session,RS)(FTP)

  远程数据访问(Remote Data Access,RDA)(sql)

移动代码风格(Mobile Code Styles)

  虚拟机(Virtual Machine,VM)

  远程求值(Remote Evaluation,REV)

  按需代码(Code on Demand,COD)

  分层-按需代码-客户-缓存-无状态-服务器(Layered-Code-on-Demand-Client-Cache-Stateless-Server,LCODC$SS)

  移动代理(Mobile Agent,MA)

点对点风格(Peer-to-Peer Styles)

  基于事件的集成(Event-based Integration,EBI)

  C2

  分布式对象(Distributed Objects,DO)

  被代理的分布式对象(Brokered Distributed Objects,BDO)

 

以上就是REST推导过程,简单的说,REST要求

客户端和服务器结构

连接协议具有无状态性

能够利用Cache机制增进性能

层次化的系统

统一接口规范分层交互

随需代码 - Javascript (可选)

根据以上的描述,我们其实发现HTTP是一种典型的REST风格,这也难怪,在1994年提出REST风格时,REST被称作“HTTP对象模型”,但是那个名称常常引起误解,使人们误以为它是一个HTTP服务器的实现模型。这个名称“表述性状态转移”是有意唤起人们对于一个良好设计的Web应用如何运转的印象。

反过来看HTTP就是REST的具体实现。在一个REST风格中,我们能够感受到的就是统一接口的数据,这些数据包括

         所以,当我们开发一个web服务时,比如一个网站,由于使用了HTTP(HTTPS)协议,其实就是一种REST风格,但是在这个REST风格中我们着重处理的是两点

         1:URI,即所谓的资源,网站的uri设计

       

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
c/c++ iis7站长之家
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3