了解下JAVA的Acegi(九) 子类SavedRequestAwareWrapper
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。上篇中我们对securityContextHolderAwareRequestFilter的丰厚多彩有了个别验,最初对这个类的名字也做了一个看文生义的注释.本篇中我们将接着看上篇提到的子类,即SavedRequestAwareWrapper.这个类在父亲的基业上又有甚么新的冲破呢?这得从它的贤浑家提及,即这个子类的属性savedRequest.呵呵,这也恰是组合的优点.
我们看到SavedRequestAwareWrapper类里一切办法的完成都是基于这个贤浑家的匡助.拿我们熟习的getCookies办法来讲,在实行这个办法时,先要看贤浑家的神色:假如savedRequest没甚么话说,才干实行父亲所教授的,即父类的办法super.getCookies();
方才看世界足球的"猖狂的足球",而下面的内容也仅是我的想像,但愿它较为贴切.
上面,我们看这个贤浑家是怎样回事?Ta是何许人也呢?读源码时发明,这个SavedRequest没甚么背景,没有承继,只是完成了Serializable接口.那有甚么用?独自地看这个类是不可了,不外发明这么一条语句:SavedRequestsaved=(SavedRequest)session.getAttribute(AbstractProcessingFilter.ACEGI_SAVED_REQUEST_KEY);这里有一个get,那也应当有"人"set过,岂非说通往发明之路的出口?
经由一段工夫的侦察,终究发明那别有洞天!在形貌这个洞天前,先看这么一个实践例子.
在CSDN网站里下载工具,刚入手下手时我们先找,找到一个一看评价不错,那就下载吧,可点下载按钮时,CSDN网站把我们引到登录页面,噢,本来还没登录呢.很敏捷地填写了登录信息后,点断定,这时候CSDN间接就把方才要下载的工具拿出来了.8错!登录完后,不用再重新找谁人链接了.可这是"8错"是怎样完成的呢?
我们用Acegi里的SavedRequest来形貌下这个功效的完成,固然CSDN纷歧定是用Acegi来完成的,这里只是借用下谁人情形.在点"下载"按钮前,CSDN是同意我们扫瞄的,也就是我们有匿名扫瞄的权限,可当下载时,CSDN发明这团体没有下载的权限,得让Ta登录.因而,CSDN里的平安机制让页面跳转到登录界面,同时,为了用户的利用便利,把用户方才想下载的谁人链接也记了上去,放到了Session中,而我们说的SavedRequest恰是干这个用的.用户登录后,CSDN的平安机制再从Session中掏出方才谁人想下载的链接,因而下载顺遂举行了.
上面分离后面先容的Acegi观点,把这个历程再形貌一遍.方才入手下手用户找工具时用扫瞄的权限,当Ta想下载时,Acegi的FilterSecurityInterceptor在实行beforeInvocation办法时发明以后用户没有响应的权限,因而FilterSecurityInterceptor抛出一个accessDeniedException非常,这个非常在ExceptionTranslationFilter里给catch住了,随后的handleException时,由sendStartAuthentication办法卖力new了一个SavedRequest对象,这个对象里恰是装了方才谁人链接,随后把这个SavedRequest对象放进了Session.因而用户登录,登录妥善后,AbstractProcessingFilter里的successfulAuthentication办法出头经由过程determineTargetUrl办法从session中掏出后面放到session中的SavedRequest对象,最初再交由sendRedirect办法,把用户想要的东东出现在了长远.
说了半天了,SavedRequest抢往了年夜多半的风头,不外也好,把这个SavedRequest研讨透了后,SavedRequestAwareWrapper的功效就不攻自破了.也就是说从汗青地角度看清了SavedRequest对象的前因后果,SavedRequestAwareWrapper对象的如今成绩也就应刃而解了.
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net网页编程性能上肯定会站上风的。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种将安全性(Security)列为第一优先考虑的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Java是一种计算机编程语言,拥有跨平台、面向对java
页:
[1]
2