仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1612|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Acegi(九) 子类SavedRequestAwareWrapper

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。
上篇中我们对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网页编程性能上肯定会站上风的。
再见西城 该用户已被删除
沙发
 楼主| 发表于 2015-1-21 09:50:40 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
山那边是海 该用户已被删除
板凳
发表于 2015-1-30 14:11:06 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
地板
发表于 2015-2-5 12:23:58 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
爱飞 该用户已被删除
5#
发表于 2015-2-11 19:58:03 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小妖女 该用户已被删除
6#
发表于 2015-2-17 02:54:28 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
小女巫 该用户已被删除
7#
发表于 2015-3-2 13:52:38 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
深爱那片海 该用户已被删除
8#
发表于 2015-3-11 03:53:12 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
admin 该用户已被删除
9#
发表于 2015-3-11 07:06:17 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
简单生活 该用户已被删除
10#
发表于 2015-3-17 06:10:19 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
再现理想 该用户已被删除
11#
发表于 2015-3-20 22:35:34 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
谁可相欹 该用户已被删除
12#
发表于 2015-3-21 00:09:03 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
海妖 该用户已被删除
13#
发表于 2015-3-29 05:14:32 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
飘飘悠悠 该用户已被删除
14#
发表于 2015-4-1 20:10:10 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
金色的骷髅 该用户已被删除
15#
发表于 2015-4-10 06:58:35 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
精灵巫婆 该用户已被删除
16#
发表于 2015-4-10 08:53:15 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
灵魂腐蚀 该用户已被删除
17#
发表于 2015-4-15 19:46:02 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
冷月葬花魂 该用户已被删除
18#
发表于 2015-4-21 06:35:16 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
若相依 该用户已被删除
19#
发表于 2015-4-26 10:46:07 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
若天明 该用户已被删除
20#
发表于 2015-5-3 23:57:19 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 08:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表