spring的作用域

spring的作用域
spring的作用域

如何使用spring的作用域:

这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。

在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。当然,Spring2.0对Bean的类型的设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类型,满足实际应用需求。

1、singleton作用域

当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中只有一个class 存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。

配置实例:

或者

2、prototype

prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当与一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用bean的后置处理器,该处理器持有要被清除的bean的引用。)

配置实例:

或者

3、request

request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:

request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:

...

org.springframework.web.context.request.RequestContextListener

...

,如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:

..

requestContextFilter

org.springframework.web.filter.RequestContextFilter

requestContextFilter

/*

...

接着既可以配置bean的作用域了:

4、session

session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置:

5、global session

global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web 应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置:

6、自定义bean装配作用域

在spring2.0中作用域是可以任意扩展的,你可以自定义作用域,甚至你也可以重新定义已有的作用域(但是你不能覆盖singleton和prototype),spring的作用域由接口org.springframework.beans.factory.config.Scope来定义,自定义自己的作用域只要实现该接口即可,下面给个实例:

我们建立一个线程的scope,该scope在表示一个线程中有效,代码如下:

publicclass MyScope implements Scope ...{

privatefinal ThreadLocal threadScope = new ThreadLocal() ...{

protected Object initialValue() ...{

returnnew HashMap();

}

};

public Object get(String name, ObjectFactory objectFactory) ...{ Map scope = (Map) threadScope.get();

Object object = scope.get(name);

if(object==null) ...{

object = objectFactory.getObject();

scope.put(name, object);

}

return object;

}

public Object remove(String name) ...{

Map scope = (Map) threadScope.get();

return scope.remove(name);

}

publicvoid registerDestructionCallback(String name, Runnable callback) ...{ }

public String getConversationId() ...{

// TODO Auto-generated method stub

returnnull;

}

}

Spring简介

spring 年编著的《Expert one to one J2EE design and development

Spring Logo 书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson成为一个改变Java世界的大师级人物。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。 编辑本段简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB 多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC 与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

spring相关jar包简介

spring相关jar包简介 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar 里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。 除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。 (1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 (2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。 (3) spring-aop.jar 这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 (4) spring-context.jar 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。 (5) spring-dao.jar 这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。 (6) spring-hibernate.jar 这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。 (7) spring-jdbc.jar 这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。 (8) spring-orm.jar 这个jar文件包含Spring对DAO特性集进行了扩展,使其支持iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar 包。

【黑马程序员】Spring Boot介绍和使用

【黑马程序员】Spring Boot介绍和使用 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring Boot是一种简化原有Spring应用繁杂配置的微框架。使开发者从繁杂的各种配置文件中解脱出来,通过Spring Boot能够很简单、很快速构建一个优秀的、产品级的Spring基础应用。运行Spring Boot和运行普通的Java 类一样简单,仅仅run一下Spring Boot的入口main()方法即可开启应用;你也可以把Spring Boot应用打成jar,在命令行执行java -jar xxx.jar命令来运行;或者打成war包部署到服务器下运行服务器来开启应用。Spring Boot微框架考虑到了Spring平台和第三方库的情况,所以你需要做的则是最少的操作或配置。 Spring Boot的特点: 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 绝对没有代码生成并且对XML也没有配置要求 Spring boot的使用 1.在ide中打开工程,这里使用的ide是idea,工程的目录结构为: 2、maven配置文件

SLP技术在跨域认证系统中的应用研究

https://www.360docs.net/doc/a313967856.html, SLP技术在跨域认证系统中的应用研究 李国柱,吴中福,李小雪,钟将 重庆大学计算机学院,重庆(400044) E-mail:liguozhu@https://www.360docs.net/doc/a313967856.html, 摘要:本文首先简单介绍了当前的主流的认证系统,然后以Diameter为实例,提出在跨域的情况下要对认证系统进行配置存在着不便。在比较当前的一些服务发现协议后,提出利用服务定位协议来解决跨域认证系统的自动配置问题。最后给出了一个解决方案。 关键词:认证系统;SLP;跨域 中图分类号: 1.引言 随着计算机网络技术的飞速发展及其在生活中的广泛应用,计算机的安全问题变得越来越突出。其中的一个安全问题就涉及到AAA体制,即认证、授权和记账。众所周知,目前最成功和应用最广泛的AAA系统是RADIUS。由于技术应用范围的扩大等因素致使RADIUS 不能很好地适应当前的需要,RADIUS的缺点日显突出。于是,IETF在2003年出了未来替代RADIUS的协议,即Diameter[1]协议族。Diameter系统延续了RADIUS的优点并且克服了它的缺点,全球各大公司和组织普遍都认为Diameter将会取代RADIUS系统成为新一代的AAA 系统[2],所以本文以Diameter作为一个具体的认证系统来进行研究。 随着移动IP等技术的引入,要求实现对跨域的用户进行身份认证。要部署这样一个认证系统,需要对系统进行大量的手工的配置,这给系统的管理员带来许多单调并且重复的工作。目前常用的RADIUS协议是要求人手工对各个节点进行静态配置。所以有必要使认证系统具有更大的灵活性,使它能够根据具体情况自动地进行动态的配置,从而在一定程度上减少系统管理员的负担,提高系统的可靠性。而利用服务发现协议,让节点自动发现网络中的服务,这可以在一定程度上解决系统自动配置的问题,从而能够在一定程度上减少系统管理员的负担,使认证系统具有更大的灵活性。 2.服务发现协议 2.1 服务发现协议的简单比较 目前最常见的服务发现协议有:Sun公司的Jini、Salutation Consortium开发的Salutation、微软的UPnP、用于“蓝牙”技术的服务发现协议(SDP)和IETF开发的服务定位协议[4](SLP)五种。这些五种协议都具有自动发现服务的功能,并且各自都有优点和缺点。其中,Jini技术的缺点之一是它要求必须用JAVA作为编程语言,而且每个节点必须安装JVM,所以这点在一定程度上限制了它的应用;对于Salutation来说,由于Salutation使用SunRPC在各个SLM (Salutation Manager)之间进行通信,使得安全性受到限制[3];由于微软的UPnP协议在请求服务发现方面的能力不够强,不太适合用于认证系统;而SDP协议主要用于“蓝牙”无线传

多图详解Spring框架的设计理念与设计模式

Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道。本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念。 Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB 的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。至此一战功成,Rod Johnson 成为一个改变Java世界的大师级人物。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。 Spring简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且 Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 ◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将

基于属性的访问控制(abac)的跨域访问控制面向服务的体系结构(soa)-毕设论文

理工学院 毕业设计外文资料翻译 专业:通信工程 姓名: 学号: 11L0751156 外文出处: 2012 International Conference On Computer Science And Service System 附件: 1.外文资料翻译译文;2.外文原文。

附件1:外文资料翻译译文 基于属性的访问控制(ABAC)的跨域访问控制面向服务的体系结构 (SOA) 摘要传统的基于角色的访问控制模型(RBAC)不能满足面向服务的需求架构(SOA)的分布和开放,基于属性的访问控制(ABAC)更多细粒度访问控制,更适合SOA是敞开的环境。本文提出了一种ABAC-based跨域访问控制系统中,安全域的与主题、对象属性、权力的环境属性访问决策的基础,消除集成基于SOA框架的约束RBAC,某种程度上提高了可伸缩性和可变更性的系统,解决了跨域访问控制的问题。 关键字:SOA,基于属性的访问控制(ABAC),访问控制 1. 整体介绍 面向服务的体系结构(SOA)是一种组织方法和使用分布式资源的灵活性组织和管理资源的分布不同的管理领域[1 - 2]。越来越高的对信息集成的需求,松散耦合的、开放的SOA从业务和吸引了越来越多的关注学术界[3]。但是SOA的发展也面临着许多问题,比如安全保障,以及如何整合环境检测服务和原始数据[4]。它在特定的SOA安全系统,开放性,跨域访问安全性呈现给我们的是一个巨大的挑战。 基于角色的访问控制(RBAC)是在一个更合适的独立的安全域,不适合跨域访问。基于主体统一服务认证系统[7],使用不同的方法来处理访问跨域访问,它解决了这个问题在跨域访问企业信息集成一定程度上,但它的基于角色的想法不能最后一个方法实现SOA的开放性和信息集成。 为了解决上述问题,本文提出了一种基于属性的访问控制(ABAC)的跨域访问控制系统,该系统应用的思想属性的访问控制跨域访问控制。该系统消除过程中的缺陷基于角色的访问控制应用于SOA的作用。 2.基于属性的访问控制(ABAC)

Spring技术介绍

一、基本概念 Spring 的核心是轻量级(Lightweight )的容器(Container ),它实现了IoC 容器、非侵入性(No intrusive )的框架,并提供AOP 概念的实现方式,提供对持久层(Persistence )、事务(Transaction )的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API (Application Interface )提供一致的模型封装,是一个全方位的应用程序框架(Application framework ),另外,Spring 也提供了对现有框架(Struts 、JSF 、Hibernate 等)的整合方案。 Spring 旨在分离体系结构的层次,因此每一层都可以修改而不会影响到其它层。每一层都不知道其上层的关注点;就其可能而言,只对所紧挨的下一层有依赖。层与层之间的依赖通常是以接口的形式表现,以确保其耦合尽可能松散。 容器管理事务,容器,贯穿始终:1、对象生命周期的管理。 2、容器本身具备功能,加在自己的类中。需要自己调用则为显示调用。 而尽量用容器隐式调用,Spring 即为隐式 对现有表现层的支持 与ORM 紧密结合,可使用声明式事务管理 AOP 标准接口的实 现(容器管理的声 明式的种种事务) 对JDBC 采用模板回调;声明的JDBC 事务管理. 提供了Bean 工厂 对Bean 工厂的扩 展(比如对事务、国际化的支持) 自己的MVC 实现

调用、声明式编程。 Spring 轻量级容器体现在:只需设置一个Jar 文件到CLASSPATH ,不用去调用它,但又可以拥有其强大的功能。组件的极大程度的复用。 让层与层中耦合度低——Loosely-Coupled 工厂类创建DAO 对象。 声明式编程:在xml 文件中声明。 基于POJO 类,支持事务,事务是根本;而EJB 事务由Container 管理。 Spring 将 View 层与持久层,比如与Hibernate 联系起来。Spring 简化Hibernate 的使用,还可以帮助管理Hibernate 。Spring 本身没有O-R_mapping ,因为有Hibernate ,她已经做得很好了。 Spring 将编译时异常(checked )转化为运行时异常(runtime )。比如,JDBC 则为编译时异常,即必须写try…catch ;而Hibernate 程序为运行时异常。 在spring-framework-2.0.5\dist 目录下 有jar 文件、 dtd 文件、 tld 文件。 总之,Spring 是一个轻型容器(light-weight container ),其核心是Bean 工厂(Bean Factory ),用以构造我们所需要的M (Model )。在此基础之上,Spring 提供了AOP (Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean 工厂的扩展ApplicationContext 更加方便我们实现Java EE 的应用;DAO/ORM 的实现方便我们进行数据库的开发;Web MVC 和Spring Web 提供了Java Web 应用的框架或与其它流行的Web 框架进行集成。 二、IoC (Inversion of Control ) 1、定义:组件..之间的依赖关系....由容器..在运行时决定。 例如:B 对象所依赖的A 对象是由 Spring 创建好并且通过Set 方法传递注入过来的。 最基本的优点体现在:若A 为接口,让B 依赖于接口。只看接口不管实现类。 可把工厂类全部替换掉。对象均为容器创建。到时还能把容器的功能融入到其中。 IoC 要求:容器尽量不要侵入到应用程序中去,应用程序本身可以依赖于抽象的接口, 容器根据这些接口所需要的资源注入到应用程序中,也就是说应用程序不会主动向容器 JavaBean 调用/包含 Spring 控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系。

IBM跨域认证简单解决方案

跨域认证简单解决方案-使用第三方Cookie 概述 跨域认证,意味着用户在一个入口登录后可以无障碍的漫游到其它信任域。也就是所谓的单点登录(SSO)。对于大型的服务提供着,常用的方法有:使用安全断言标记语言(SAML)、基于公开密钥技术(PKI-Pubic Key Infrastructure)的Kerberos网络认证协议或者使用Windows采用的认证方案LanManager认证(称为LM协议-对于NT 安装Service Pack4以后采用NTLM v2版本)。这些认证方式需要单独的认证服务器,对于普通的使用者来说,既难已实现,也不太可能搭建单独的服务器。有没有一种简单又安全的认证方式呢? 本文的目标 使用Cookie和SHA1结合实现简单又安全的认证,如用户在https://www.360docs.net/doc/a313967856.html,中登录后,无需再次登录就可以 直接使用https://www.360docs.net/doc/a313967856.html,中提供的服务。 Cookie是什么 Cookie 是由Web 站点创建的小文本文件,存储在您的计算机上。这样,当您下一次访问该站点时,它可以自动获取有关您的信息,例如浏览喜好,或您的姓名、地址及电话号码。 关键词 SSO(Single Sign-On)-单点登录 SAML(Security Assertions Markup Language)-安全断言标记语言 Cross-Realm Authentication -跨域认证 PKI(Pubic Key Infrastructure)-公开密钥技术 SHA1(Secure Hash Algorithm 1)-安全哈希算法1 P3P(The Platform for Privacy Preferences)隐私参数选择平台 单一认证模型 1、用户使用a_logon.aspx登录服务器https://www.360docs.net/doc/a313967856.html, 2、在a_logon.aspx中自动嵌入iframe其src指向https://www.360docs.net/doc/a313967856.html,的b_auth.php 3、https://www.360docs.net/doc/a313967856.html,认证成功后在客户端写入Cookie,通过iframe调用b_auth.php 传递认证参数(经过SHA1后) 4、b_auth.php认证成功后在客户端写入认证Cookie 5、完成https://www.360docs.net/doc/a313967856.html,和https://www.360docs.net/doc/a313967856.html,的统一认证 问题: 上面提到的过程如果使用FireFox浏览器b_auth.php能够成功写入Cookie,如果使用IE6.0及 以上版本b_auth.php写入Cookie失败。 原因: IE 6.0支持P3P,IE 6的缺省隐私等级设置为"中"——即"阻止没有合同隐私策略的第三方 cookie"。而在用户浏览a_logon.aspx时https://www.360docs.net/doc/a313967856.html,写入的为第一方Cookie,其嵌入的iframe指向 b_auth.php 这时https://www.360docs.net/doc/a313967856.html,写入的就为第三方Cookie了,所以它是被IE当在了大门外。 解决方法: 让用户改变IE安全策略,允许第三方Cookie,这似乎很简单,可是用户会听你的吗?另一种 解决方法使用P3P,在b_auth.php中添加P3P头。网上google一下好像很多,本着不求甚解的原则 Copy来就是了。如下: header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"') 实现代码

简介Java的Spring框架的体系结构以及安装配置

体系结构 Spring有可能成为所有企业应用程序的一站式服务,然而,Spring是模块化的,使您可以挑选哪些模块是适用的,而不必把在余下的也引入。以下部分给出详细介绍在Spring框架中所有可用的模块。 Spring框架提供约20个模块,可以根据应用程序的要求来使用。 网店转让

响应式网站制作 p2p网站制作 a货包包

游戏制作学习 核心容器: 核心容器组成的核心,Beans,上下文和表达式语言模块,其细节如下: 核心模块提供了框架的基本组成部分,包括IoC和依赖注入功能。 Bean模块提供BeanFactory是工厂模式的经典实现。 Context 上下文模块建立在由核心和Bean类模块提供了坚实的基础,它是访问定义和配置的任何对象的媒介。在ApplicationContext接口是上下文模块的焦点。. 表达式语言模块提供了在运行时查询和操作对象图的强大的表达式语言。 数据访问/集成: 数据访问/集成层包括JDBC,ORM,OXM,JMS和事务处理模块,其细节如下: JDBC模块提供了不再需要冗长的JDBC编码相关了JDBC的抽象层。 ORM模块提供的集成层。流行的对象关系映射API,包括JPA,JDO,Hibernate和iBatis。OXM模块提供了一个支持对象/ XML映射实现对JAXB,Castor,使用XMLBeans,JiBX和XStream的抽象层。 Java消息服务JMS模块包含的功能为生产和消费的信息。 事务模块支持编程和声明式事务管理实现特殊接口类,并为所有的POJO。 Web: 在Web层包括网络,Web-Servlet,Web-Struts和网络的Portlet组件,其细节如下:Web模块提供了基本的Web开发的集成特性,例如多方文件上传功能和使用的servlet监听器的IoC容器初始化和针对Web的应用程序上下文。 Web-Servlet 模块包含Spring的模型- 视图- 控制器(MVC)实现Web应用程序。Web-Struts 模块包含支持类内的Spring应用程序集成了经典的Struts Web层。 Web-Portlet模块提供了MVC实现在portlet环境中使用和镜子Web的Servlet的模块的功能。

Struts+Hibernate+Spring+三个框架简介

Struts 是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command 模式,每个继承Action的子类都必须实现一个方法execute。 struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。 Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。 Struts框架可分为以下四个主要部分: 1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts- config.xml文件描述的配置信息的。 2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。 3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。

跨域用户认证接口规范

中国科学院数据应用环境建设与服务跨域用户认证接口规范 (征求意见稿) 中国科学院数据应用环境建设与服务项目组 2009年6月

目次 1 范围 (1) 2 规范性引用文件 (1) 3 术语和定义 (1) 4 符号与缩略语 (2) 5 数据格式定义 (2) 5.1 接口的编码方式及响应格式 (2) 5.1.1 接口编码方式 (2) 5.1.2 接口响应格式 (2) 5.1.3 接口响应请求状态码 (3) 6 接口规范 (4) 6.1 采用协议 (4) 6.2 接口安全 (4) 6.3 连接方式 (5) 6.4 技术实现 (5) 6.5 接口列表 (6) 6.6科学数据中心开放接口 (6) 6.6.1用户认证与授权接口 (6) 附录A (资料性附录) OpenURL (8) 附录 B 跨域用户单点登录客户端配置 (9) 1 系统环境 (9) 2 相关软件下载及安装 (9) 3 配置CAS客户端(JAVA) (10) 4 测试配置 (12) 5 具体应用中角色处理 (13)

跨域用户认证接口规范 1 范围 本规范规定了中国科学院数据应用环境建设与服务项目内跨域用户认证接口采用的协议,连接方式,调用参数以及数据的返回格式。 2 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB 18030-2005 信息技术中文编码字符集 3 术语和定义 下列术语和定义适用于本规范。 ●资源 resource 可以被标识的实体对象或服务。 在本规范准中,特指可被标识的数据集、数据或服务。 ●数据集 dataset 由相关数据组成的可标识集合。一个数据集可能是一个较小的数据集合,在物理上或逻辑上位于一个较大的数据集之内;反之,一个数据集也可能由若干数据集组成,是这些子数据集的父数据集。 本规范中,数据集指中国科学院数据应用环境建设与服务项目的主题数据库、参考数据库、专题数据库、专业数据库及其各级子库。

请介绍一下Spring框架中Bean的生命周期

请介绍一下Spring框架中Bean的生命周 期 这个配置文件就定义了一个标识为HelloWorld 的Bean。在一个配置文档中可以定义多个Bean。二、Bean的初始化有两种方式初始化Bean。1、在配置文档中通过指定init-method 属性来完成在Bean的类中实现一个初始化Bean属性的方法,如init(),如:public class HelloWorld{public String msg=null;public Date date=null;public void init() {msg=”HelloWorld”;date=new Date();}……}然后,在配置文件中设置init-mothod属性:2、实现org.springframwork.beans.factory.InitializingBean接口Bean实现InitializingBean接口,并且增加afterPropertiesSet() 方法:public class HelloWorld implement InitializingBean {public String msg=null;public Date date=null;public void afterPropertiesSet() {msg=”向全世界问好!”;date=new Date();}……}那么,当这个Bean的所有属性被Spring的BeanFactory设置完后,会自动调用afterPropertiesSet()方法对Bean进行初始化,于是,配置文件就不用指定init-method属性了。 三、Bean的调用有三种方式可以得到Bean并进行调用:1、使用BeanWrapperHelloWorld hw=new HelloWorld();BeanWrapper bw=new BeanWrapperImpl(hw);bw.setPropertyvalue(“msg”,”

各种框架架构图简介

1.Spring 架构图 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE 应用程序开发提供集成的框架。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。这样的对象可以在不同J2EE 环境(Web或EJB )、独立应用程序、测试环境之间重用。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ?核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 ?Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI 、EJB 、电子邮件、国际化、校验和调度功能。 ?Spring AOP :通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring 的应用程序 中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组 件,就可以将声明性事务管理集成到应用程序中。

?Spring DAO :JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。 ?Spring ORM :Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQL Map 。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。 2.ibatis 架构图 ibatis 是一个基于Java的持久层框架。 iBATIS 提供的持久层框架包括SQL Maps 和Data Access Objects ( DAO ),同时还提供一个利用这个框架开发的 JPetStore 实例。 IBATIS :最大的优点是可以有效的控制sql 发送的数目,提高数据层的执行效率!它需要程序员自己去写sql 语句,不象hibernate 那样是完全面向对象的,自动化的,ibatis 是半自动化的,通过表和对象的映射以及手工书写的sql 语句,能够实现比hibernate 等更高的查询效率。 Ibatis 只是封装了数据访问层,替我们做了部分的对象关系映射。但代价是必须要写xml配置文件,相对于Hibernate 还要写很多sql 。Hibernate 通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql ,会较大的提升开发效率。但这些也有很多的局限性,尤其是对

Java框架介绍

Java框架介绍

二零一五年九月 目录 一技术简介3 1.1 总体介绍3 1.2 Maven介绍3 1.3 Spring MVC介绍4 1.4 Hibernate介绍4 二配置说明5 2.1 web.xml文件5 2.2 applicationContext-resourse.xml文件6 2.3 applicationContext-service.xml文件6 2.4 applicationContext-source.xml文件6 2.5 applicationContext-source.xml文件7 2.6 spring-servlet.xml文件8 2.7 pom.xml文件8 三源代结构9 3.1 整体结构9 3.2 Dao层9 3.3 Service层9 3.4 Controller层9 3.5 其他10 四业务操作流程(重要)11 4.1 操作图示11 4.2 操作实例11 五突出功能15 5.1 权限管理15

一技术简介 1.1 总体介绍 该框架总体使用Maven+SpringMVC+Hibernate。除了可以较好的进行数据交互,框架各层代码比较分明,也更加系统,基础方法都已集成,对于开发者的帮助事半功倍。 1.2 Maven介绍 maven是一个很好的项目管理或者项目构建工具。 首先是maven的“约定优于配置”,即在maven中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是使用者除非必要,并不需要去修改那些约定内容。maven 默认的文件存放结构如下: /项目目录 o pom.xml 用于maven的配置文件 o/src源代码目录 ?/src/main 工程源代码目录 ?/src/main/java 工程java源代码目录 ?/src/main/resource 工程的资源目录 ?/src/main/webapp工程的jsp等前端文件目录 ?/src/test 单元测试目录 ?/src/test/java o/target 输出目录,所有的输出物都存放在这个目录下 ?/target/classes 编译之后的class文件 其次,构建项目或项目开发过程中,项目所有依赖的版本库,比如spring和hibernate相关依赖库,只需要在pom.xml增加配置信息,如果maven仓库中有该依赖文件就直接引用,没有则会从指定地址下载该依赖文件到本地仓库,供项目使用。即对于项目所有的依赖库,可以进行统一管理,不需要分别配置。 最后,maven也可以进行多项目管理,一般来说,maven要求同一个工程的所有子项目都放置到同一个目录下,每一个子目录代表一个项目,所有具体子项目的pom.xml都会继承总项目pom的内容,取值为子项目pom内容优先。

Spring框架百科

spring框架 目录 定义文档来自于网络搜索 Spring框架简介文档来自于网络搜索 Spring框架的7个模块文档来自于网络搜索 编辑本段定义文档来自于网络搜索 要谈Spring的历史,就要先谈J2EE。J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。文档来自于网络搜索 曾经使用过EJB开发J2EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解。EJB要严格地继承各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥。虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难。而Spring 出现的初衷就是为了解决类似的这些问题。文档来自于网络搜索 Spring的一个最大的目的就是使J2EE开发更加容易。同时,Spring 之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Old Java Object)对象提供企业级的服务。文档来自于网络搜索 Spring的形成,最初来自Rod Jahnson所著的一本很有影响力的书籍《Expert One-on-One J2EE Design and Development》,就是在这本书中第一次出现了Spring的一些核心思想,该书出版于2002年。另外一本书《Expert One-on-One J2EE Development without EJB》,更进一步阐述了在不使用EJB开发J2EE企业级应用的一些设计思想和具体的做法。有时间了可以详细的研读一下。文档来自于网络搜索 Spring的初衷: 1、J2EE开始应该更加简单。 2、使用接口而不是使用类,是更好的编程习惯。Spring将使用接口的复杂度几乎降低到了零。 3、为JavaBean提供了一个更好的应用配置框架。

Spring,Hibernate工作原理以及MVC结构的简介

一、spring工作原理: 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView 对象指定的视图对象 6.视图对象负责渲染返回给客户端。 二、为什么要用spring: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 三、请你谈谈SSH整合: SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet, struts-config.xml,Action) Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。

相关文档
最新文档