人像

离站提示JS工具:Ouibounce

离站提示JS工具:Ouibounce,当离开网站时给出一个提醒,从jobbole看到的.tip:和bootstrap的model 结合时要在参数的callback中 手动 用$('#share').modal();触发,官网没说,这个要注意.demo如下:[repo owner=”carlsednaoui” name=”ouibounce”]

安全存储密码:Hashing 还是加密?

一篇很不错的进行加密的文章!from: http://www.oschina.net/news/52976/hashing-or-encrypt对于网站来说, 再没有什么比用户信息泄露更让人尴尬的了。 尤其是当存有用户密码的文件如果被黑客获取, 对网站的安全和用户的信心来说都是巨大的打击。 如最近的Ebay泄密事件和小米的用户数据泄露事件。 保证用户信息安全首先需要正确理解对于用户密码的安全控制和保护。 这里OWASP的主席Michael Coates最近的一篇关于一些基本概念的介绍能够帮助开发人员更好的理解现代Hashing算法和加密对于用户密码保护的作用。 安全牛编译如下:在过去几个月, 我们看到了一些严重的数据泄露事件, Ebay和Adobe的数据泄露事件影响了几百万用户。 Snapchat也遭受到了数据泄露事件的影响。 每一次密码泄露事件后, 人们都会问同一个问题, 这些密码的存储是不是安全? 不幸的是, 这个看上去简单的问题其实并不好回答。尽管在很多情况下, Hashing和加密都能够满足安全存储的需要, 对于在线应用而言, 很多情况下, 对于用户密码的安全存储往往只有一种正确的方案。 Hashing.是通过一个不可逆的杂凑函数计算出一个Hash值, 而通过这个值无法逆向计算出输入值(比如用户密码)。 对称加密则是采用密钥进行加密计算, 这是一种可逆的运算。  任何人如果有了密钥, 就能够解密出原始明文。下表是Hashing和对称加密的对比Hashing对称加密不可逆函数可逆运算能够逆向算出初始值不能可以对于现代杂凑算法而言, 从Hash值逆向算出输入值非常困难。 参见下面关于彩虹表,盐化等的讨论对称加密就是设计来是的任何拥有密钥的人能够解密出原始明文其他需要考虑的方面杂凑算法的选择加密算法的选择对每个用户进行盐化保护密钥显示第 1 至 6 项结果,共 6 项当在线应用收到一个用户名和一个密码后, 就以密码为输入到杂凑函数中去得出一个Hash值, 然后用这个Hash值与数据库中存储的该用户的密码Hash值做比较, 如果两个Hash值相同, 就可以认为用户提供了有效的用户名和密码。 采用Hashing的好处是, 应用不需要存储用户的明文密码, 只需要存储Hash值。在线应用如何利用密码的Hash值来认证用户下图就是关于采用Hashing方式的简单描述:那么, 所有杂凑算法都能用吗? 不是的, 事实上, 杂凑算法中不同的算法的差别很大, 并不是所有的杂凑算法都适合存储密码。说起来可能有点出人预料, 早期的杂凑算法速度过快, 黑客们尽管不能通过Hash值逆向计算出原输入值, 但是黑客们可以通过暴力破解的方式遍历所有可能的密码组合来尝试能够能够“碰撞”到用户密码的Hash值。 为了避免这种威胁, 现代的杂凑算法能够通过多重迭代, 使得在每次Hash计算时产生一些延时, 对单次Hash计算, 这样的延时基本没有任何影响, 而对于黑客的暴力破解来说, 几百万次计算的延时能够被放大几百年, 这样到使得暴力破解基本不现实的地步。在Hashing中, 最好采用针对每个用户的盐化方式, 通过对用户密码添加一个随机字符串(随机字符串可以是显式存储), 这样可以相同的密码产生相同的Hash值, 这样, 攻击者可以下载一个巨大的存有事先计算好Hash值的查找表, 也叫做彩虹表。 通过Hash值, 反向查找对应的输入值。而通过下面两个表格可以看出, 通过对不同用户进行不同的盐化, 同样的密码就会出现不同的Hash值, 这样使得攻击者利用彩虹表进行攻击变得困难。没有盐化用户名密码Hash值Joepassword123xyfkdl323...Suepassword123xyfkdl323...**盐化后**用户名密码盐化字符串Hash值Joepassword12348a023jl2…ied390fl2...Suepassword1239fh3ls321…40akdl23…**类似于账户锁定的机制对于密码存储的模式有什么影响吗?**简单的回答, 就是, 没有影响。 对密码的安全存储是为了提供在密码文件被盗取后的防护。 黑客对于密码Hash的攻击是一种离线攻击。 也就是说, 密码文件已经被盗取, 黑客可以利用自己的计算机通过尝试不同的密码来找出密码。 由于是离线攻击, 账号锁定或者验证码之类的安全机制已经没有作用了。 这些机制只有在针对网站服务器的在线登录页面攻击时才会起作用。对于密码存储, 采用对称加密而不是Hashing的风险在哪里?对称加密的设计就是一个可逆的运算, 这意味着在线应用必须能够访问到密钥, 并且在每次密码验证时都要使用。 如果加密后的密码被窃取的话, 黑客需要获取对称加密的密钥, 而一旦密钥被破解出来, 不管是通过某种方式泄露出来, 或者一些弱的密钥被暴力方式破解出来, 所有的密码都会被黑客获得。总结对于密码的安全存储来说, 理解对称加密与Hashing的区别非常重要。 一些如PBKDF2, bcrypt以及scrypt等算法都采用的每用户盐化以及多重迭代的Hashing方式以安全存储密码。互联网已经日益成为重要的用户信息存储的场所。 网站开发人员及网站老板们需要尽其所能地保证用户信息的安全。 了解如何利用现代的Hashing算法对用户密码进行基本的安全控制保护非常重要。

解决struts2最新s2-016代码执行漏洞–CVE-2013-2251

解决struts2最新s2-016代码执行漏洞–CVE-2013-2251今天接到外界报告struts2框架存在任意命令执行漏洞,可直接执行任意系统命令。 详细见官方说明:http://struts.apache.org/release/2.3.x/docs/s2-016.html漏洞版本:Apache Struts 2.0.0 - Apache Struts 2.3.15漏洞描述:CVE-2013-225. Struts2 是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。它是WebWork和Struts社区合并后的产物Apache Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令redirect:和redirectAction:此两项前缀为Struts默认开启功能,目前Struts 2.3.15.1以下版本均存在此漏洞目前Apache Struts2已经在2.3.15.1中修补了这一漏洞。强烈建议Apache Struts2用户检查您是否受此问题影响,并尽快升级到最新版本<_ 参考 1. http://struts.apache.org/release/2.3.x/docs/s2-016.html _>测试方法:@Sebug.net dis 本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!由于Apache Struts2 在最新修补版本2.3.15.1中已经禁用了重定向参数,因此只要重定向功能仍然有效,则说明受此漏洞影响:http://host/struts2-showcase/employee/save.action?redirect:http://www.yahoo.com/如果页面重定向到www.yahoo.com,则表明当前系统受此漏洞影响。验证表达式解析和命令执行:http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}`Sebug安全建议:厂商状态:厂商已经发布Apache Struts 2.3.15.1以修复此安全漏洞,建议Struts用户及时升级到最新版本。厂商安全公告:S2-01. 链接:http://struts.apache.org/release/2.3.x/docs/s2-016.html软件升级页面:http://struts.apache.org/download.cgi#struts23151目前存在漏洞的公司乌云上,已经发布了快60个struts的这个漏洞问题,包括腾讯,百度,网易,京东等国内各大互联网公司。(http://www.wooyun.org/bugs/new_submit/) 解决办法:升级到Struts 2.3.15.1(强烈建议)使用ServletFilter来过滤有问题的参数(临时替换方案) 参考资料:http://sebug.net/appdir/Apache%20Struts这次struts爆出来的漏洞,一大片的网站受的影响,影响最严重的就是电商了. 对于struts的漏洞,曾经也写过struts2代码执行漏洞,struts2自从使用OGNL表达式的方式后,经常就会报出一些可怕的漏洞出来,建议那些还是struts的童鞋们,学习一些其他的框架吧!比如,spring mvc,简单,好用,高效! 这里有篇对struts漏洞分析很透彻的文章,推荐学习学习. http://www.inbreak.net/archives/507

ZeroTurnaround ZIP类库

java中常常做一些zip打包,解包的公共类,每次写起来都很麻烦,推荐个zip的类库。使用简单,方便。ZipUtil.pack(new File("temp"), new File("temp.zip"));就这么用,一个temp文件夹,就压缩成temp.zip了。更多的使用看API吧!都很简单的。更多使用:https://github.com/zeroturnaround/zt-zip

字体也需要设计

字体也需要设计,选择在不同场景形式下,采用不同的字体。

坑爹的win8

之前装了win8的预览版,家里不用wifi,就把wifi给关掉了.又装了win7,这下就倒霉了,装系统时还发现光驱给坏了,买了U盘,用U盘装了系统.wifi也就一直没用,哪天想弄个无线wifi,想给手机用,wifi无论咋样都打不开,什么不知道啥原因,还以为是硬件坏了呢! 这几天放假,win8的rtm版也有下载了,而且要比win7的速度快,就又装了一次win8,竟然wifi可以用了,这个坑爹的win8,wifi在win8下面关了,还要在win8下用,win7竟然用不了,想不明白,也许是win8的一个bug呢! 装了win8以后,感觉的确比win7快了不少,wifi也正常的用起来了.good!

[一种声音]雷锋复出能走多远?

曾经我们都是被雷锋包围的人,小时候,听到最多的就是雷锋、赖宁……现在雷锋再次响起来了,靠一个口号,还能干什么啊!原文:三月里有这么一天,属于一个死去多年的人。三月五日,因为毛泽东的题词而被官方钦定为一个盛大节日。这个“节日”,在大陆中国人的生活中一直是一个坎儿,总要“跨一下”才能迈过去。雷锋,在22岁那年死于意外伤害,如果活到现在,已经是72岁高龄的老人了。他也确实老了,进京领受光荣的雷锋班班长抱怨:孩子们已经不认识雷锋了。作为一个神圣的精神符号,雷锋一直搅动着许多人的神经。当好人,做好事,他们理解的雷锋便是这样。问题在于,这样的理解绝非官方所乐见,他们总要加一个不容置疑的定语在前头:永远跟党走,把党的温暖送到千家万户。听党的话的人,才叫好人;做为党争光的事,才能叫好事。雷锋的解释权在意识形态掌控者手里,他们绝不会放任他被矮化为一个泛爱志愿者。真假难辨的“雷锋日记”以及诸多“平凡而伟大”的英雄事迹,塑造的就是一个具有高度党性原则的“毛泽东的好战士”,无条件听从党的指令,以为党献身为最高目的的“革命烈士”。雷锋显得非常纯粹,因平凡而有说服力,因忠诚而令人自惭形秽。在他面前,每个人都很纠结:既膜拜又嫉妒。我们为什么不能心无杂念,把自己锻造成为坚定的共产主义战士,毛主席的好学生?这是一道考题,给予人无限的憧憬:如果你愿意,你也能。雷锋可以无穷地复制下去。这是文宣操盘手最得意的阳谋:让你误以为够得着,你就会模仿去做。孤儿雷锋,在新政权启发下,迅速完成了革命化的进程,他接受了阶级社会和阶级斗争的概念,爱憎分明:将亲人之死怪罪于以前的社会,不幸的根源在于存在一个“剥削阶级”,他们的本质是吸血鬼,只有将他们铲除干净,才有好日子过;带给穷苦大众好日子和奔头的,是共产党和毛主席——在当时的宣传语境里,共产党其实就是毛主席的党,毛主席就是全能的神祗,他创造了万物,又被万物所感恩。感恩,然后奉献生命,就是人民中国主人翁们的天职和使命。通过否定历史和宗教,也借助血腥的祭祀,新政权把寄生麾下的人民变成了精神孤儿。他给予他们一个崭新的主:革命领袖毛主席。膜拜,服从,牺牲,信众前面只有华山一条路。一个渴望向上爬的人必然走到雷锋那一步。所以,雷锋是自我趋附与政权塑造的产物,不存在一个赤子雷锋。他所做的一切都是规定动作,不过他做得更可爱些罢了。读“雷锋日记”,我看到的是一个极度自虐和受虐者的表白,他的人生就是用来证明忠诚的。在一次次被组织确认的过程中,他获得了极大的快感。他得到了自我实现,书写那些多情的文字,一点也不会痛苦,反而充满了莫名的快乐。向组织交心是痛苦的,但交出去之后却是兴奋。因为能被信任而得到交心的机会,这才是归属感的获得。自己人,同志,获得这样的认可,意味着一个年轻人不可限量的前途。雷锋正在向风光无限好的高处攀去。写日记就是给组织看。整个社会处于“做好事表忠心”的全面竞争状态,谁做得极端谁就有机会。写日记就是自我表现,准备被伯乐“发现”。那时的英雄都有一本日记:记录自己学习毛泽东思想狠斗私字,灵魂深处爆发革命,脱离低级趣味,成为革命战士的过程。那样做,是怀有出人头地的梦想:期待出现奇迹,从而改变命运。“雷锋日记”既出,一个私密的文体便沦落为一个无耻的婊子,人们被迫泯灭自己的内心生活,把一颗扭曲的心交给了魔鬼。当时,人群被强行分成两类:地富反坏右牛鬼蛇神和贫下中农革命后代。不甘于灭亡的坏人得有“表现”,才能免于更残酷的命运;革命后代,谁能出类拔萃,引人注目,就能有机会步步高升。异常策略才能获胜,所以,大家挖空心思,制造奇迹,在为新时代制造祥瑞,人伦惨剧骇人听闻,自镇压反革命、批判胡适、反右到大跃进以后的中国大陆,基本上处于不可理喻的癔症状态。雷锋的出现毫不奇怪。他只是恰巧被看中了。他的死本是一场事故,中止了沈阳军区培养长线大英雄的计划,只得将错就错,提前让“英雄”出笼。他们费心揣摩:一个平凡的士兵应该更合上面胃口。他们押对了宝。这个恭顺、热情,一心向党的战士,得到了毛泽东们的首肯。通过题词,年轻的雷锋被纳入共产主义英雄的谱系之中,而且后来者居上,成为一尊老少皆宜的菩萨英雄。在雷锋身上,完全消灭了欲望,向上爬成为红色接班人的欲望除外。一个二十岁左右的青年,“纯洁”地生活着,令有私欲的人无地自容。他从不会有寂寞、无聊的时候,反省、学习、做好事,我们看到的就是这么一个无欲的英雄,犹如一团烈火,除了燃烧还是燃烧。他的所有缺点都是可爱前提下的瑕疵,甚至因为瑕疵的存在而更显高尚。在他心里有一个光明的世界,被毛泽东思想照耀而自足的世界。生命的摸索,性的尝试,对死亡的恐惧,这些内容一概失踪了。更不存在对未知的探求,真理就是毛主席,每个人所需要的就是相信,无须费力去寻找。一个明亮得单纯得令人窒息的世界:不存在未知,无须知道未知,一切都是已知,是信服。在这样的精神空间里,思想停止发育,人变得“单纯”,实则是愚笨和呆滞。人们那股玩命的工作热情,除了出于表现不得不之外,恐怕也是一种宣泄——压抑的精神总归要有自己的出口。反右,大跃进,疯狂的饥饿,在他身上无一丝痕迹。他永远生活得光明灿烂,还有捐不完的余钱。温柔的温暖的雷锋,抹去了专制黑暗年代的残酷底色,为其涂抹上厚厚一层胭脂,让处于痛苦和饥饿的人望梅止渴,让后来者产生伟大的错觉,以为存在过一个春风般温暖的和谐社会。雷锋和他的缔造者,虚构了一种梦幻般的同志式人际关系。这就是为什么有不少过来人不愿意推倒偶像。雷锋存在的前提是,懒汉辈出,人人不能自立,政府完全失职。在他死后50年后,当局高调重振学雷锋运动,是企图用“雷锋精神”替代信仰缺失,安慰感觉冰冷的人群,让他们重新回到感恩的戏剧情境中去,舍不得离开即将倾覆的泰坦尼克号巨轮。你可以通过行政指令逼迫学生学雷锋,也会有轰轰烈烈的喧闹效果,但最终会激起强烈的厌恶感,他们不可能认同一个虚假的偶像。我读“雷锋日记”时,体验到非常可怕的荒谬感。强行推行学雷锋,必然造成青少年人格分裂,强化整个社会的伪饰作假风气。解决政权合法性危机,正途是还政于民,真心建设公民社会,而非回到愚昧的感恩社会。执政者要下决心剥离祖国和政权的畸形捆绑关系,从自我神化和强迫国民畏惧自己的状态中解脱出来,你只是一届政府,不是祖国的化身,更不可能是上帝。政治不文明,则社会无道德。即使退一万步,雷锋式的“做好事”绝不是行善。爱人之善发自内心,鼓励人向善的宗教信仰是其源泉,他不为外在目的而生。心端正了,无道德社会才有可能逐步转向道德社会。毫无疑问,雷锋是黑暗专制时代的病态样本,是一个主体性丧失的悲剧人物。在这个甘于做驯服工具和螺丝钉的人身上,不会存在什么道德富矿。在薄熙来的“唱红打黑”破产之后,彻底抛弃那个年代的“政治遗产”,切断与毛泽东时代脐带联系,已经成为考验当权者有无勇气前行的试金石。一个人人渴慕的新新中国,容不得任何一尊愚民之神。来源:FT中文网链接:http://www.ftchinese.com/story/001043439

J2EE系统的概念及如何开发

文章比较老,不过也把Java开发的常用的方式、方向也说明了。J2EE开发三件宝: Domain Model(域建模)、patterns(模式)和framework(框架)。J2EE系统的概念及如何开发J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向。首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET和Java两大主流体系。J2EE可以说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase、到Delphi/VB等C/S结构,发展到B/S(Browser浏览器/Server服务器)结构,而J2EE主要是指B/S结构的实现。J2EE又是一种框架和标准,框架类似API、库的概念,但是要超出它们。如果需要详细了解框架,可先从设计模式开始学习。J2EE是一个虚的大的概念,J2EE标准主要有三种子技术标准:WEB技术、EJB技术和JMS,谈到J2EE应该说最终要落实到这三个子概念上。这三种技术的每个技术在应用时都涉及两个部分:容器部分和应用部分,Web容器也是指Jsp/Servlet容器,你如果要开发一个Web应用,无论是编译或运行,都必须要有Jsp/Servlet库或API支持(除了JDK/J2SE以外)。Web技术中除了Jsp/Servlet技术外,还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简称为Jsp/Servlet+JavaBeans系统。谈到JavaBeans技术,就涉及到组件构件技术(component),这是Java的核心基础部分,很多软件设计概念(设计模式)都是通过JavaBeans实现的。JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/Servlet)调用,那么JavaBeans就运行在J2EE的Web容器中;如果它被EJB调用,它就运行在EJB容器中。EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。至此,JavaBeans组件发展到EJB后,并不是说以前的那种JavaBeans形式就消失了,这就自然形成了两种JavaBeans技术:EJB和POJO,POJO完全不同于EJB概念,指的是普通JavaBeans,而且这个JavaBeans不依附某种框架,或者干脆可以说:这个JavaBeans是你为这个应用程序单独开发创建的。J2EE应用系统开发工具有很多:如JBuilder、Eclipse等,这些IDE首先是Java开发工具,也就是说,它们首要基本功能是可以开发出JavaBeans或Java class,但是如果要开发出J2EE系统,就要落实到要么是Web技术或EJB技术,那么就有可能要一些专门模块功能(如eclipse需要lomboz插件),最重要的是,因为J2EE系统区分为容器和应用两个部分,所以,在任何开发工具中开发J2EE都需要指定J2EE容器。J2EE容器分为WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直接使用Tomcat实现的。所以你开发的Web应用程序可以在上面两种容器运行,而你开发的Web+EJB应用则只可以在JBoss服务器上运行,商业产品Websphere/Weblogic等和JBoss属于同一种性质。J2EE容器也称为J2EE服务器,大部分时它们概念是一致的。如果你的J2EE应用系统的数据库连接是通过JNDI获得,也就是说是从容器中获得,那么你的J2EE应用系统基本与数据库无关,如果你在你的J2EE应用系统耦合了数据库JDBC驱动的配置,那么你的J2EE应用系统就有数据库概念色彩,作为一个成熟需要推广的J2EE应用系统,不推荐和具体数据库耦合,当然这其中如何保证J2EE应用系统运行性能又是体现你的设计水平了。衡量J2EE应用系统设计开发水平高低的标准就是:解耦性;你的应用系统各个功能是否能够彻底脱离?是否不相互依赖,也只有这样,才能体现可维护性、可拓展性的软件设计目标。为了达到这个目的,诞生各种框架概念,J2EE框架标准将一个系统划分为WEB和EJB主要部分,当然我们有时不是以这个具体技术区分,而是从设计上抽象为表现层、服务层和持久层,这三个层次从一个高度将J2EE分离开来,实现解耦目的。因此,我们实际编程中,也要将自己的功能向这三个层次上靠,做到大方向清楚,泾渭分明,但是没有技术上约束限制要做到这点是很不容易的,因此我们还是必须借助J2EE具体技术来实现,这时,你可以使用EJB规范实现服务层和持久层,Web技术实现表现层;EJB为什么能将服务层从Jsp/Servlet手中分离出来,因为它对JavaBeans编码有强制的约束,现在有一种对JavaBeans弱约束,使用Ioc模式实现的(当然EJB 3.0也采取这种方式),在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeans约束,形成一个服务层,这也是是Jive这样开源论坛设计原理之一。由此,将服务层从表现层中分离出来目前有两种可选架构选择:管理普通JavaBeans(POJO)框架(如Spring、JdonFramework)以及管理EJB的EJB框架,因为EJB不只是框架,还是标准,而标准可以扩展发展,所以,这两种区别将来是可能模糊,被纳入同一个标准了。 但是,个人认为:标准制定是为某个目的服务的,总要牺牲一些换取另外一些,所以,这两种架构会长时间并存。这两种架构分歧也曾经诞生一个新名词:完全POJO的系统也称为轻量级系统(lightweight),其实这个名词本身就没有一个严格定义,更多是一个吸引人的招牌,轻量是指容易学习容易使用吗?按照这个定义,其实轻量Spring等系统并不容易学习;而且EJB 3.0(依然叫EJB)以后的系统是否可称为轻量级了呢?前面谈了服务层框架,使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关,一般是通过标签库(taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。这样,表现层和服务层的分离是通过两种框架达到目的,剩余的就是持久层框架了,通过持久层的框架将数据库存储从服务层中分离出来是其目的,持久层框架有两种方向:直接自己编写JDBC等SQL语句(如iBatis);使用O/R Mapping技术实现的Hibernate和JDO技术;当然还有EJB中的实体Bean技术。持久层框架目前呈现百花齐放,各有优缺点的现状,所以正如表现层框架一样,目前没有一个框架被指定为标准框架,当然,表现层框架现在又出来了一个JSF,它代表的页面组件概念是一个新的发展方向,但是复杂的实现让人有些忘而却步。在所有这些J2EE技术中,虽然SUN公司发挥了很大的作用,不过总体来说:网络上有这样一个评价:SUN的理论天下无敌;SUN的产品用起来撞墙;对于初学者,特别是那些试图通过或已经通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自己的应用系统。最后,你的J2EE应用系统如果采取上面提到的表现层、服务层和持久层的框架实现,基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系统了。还要注意的是: 开发出一个高质量的J2EE系统还需要正确的业务需求理解,那么域建模提供了一种比较切实可行的正确理解业务需求的方法,相关详细知识可从UML角度结合理解。当然,如果你想设计自己的行业框架,那么第一步从设计模式开始吧,因为设计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会了系统基本单元JavaBean或类之间解耦时,那么系统模块之间的解耦你就可能掌握,进而你就可以实现行业框架的提炼了,这又是另外一个发展方向了。以上理念可以总结为一句话:J2EE开发三件宝: Domain Model(域建模)、patterns(模式)和framework(框架)。原文网址:http://www.javaresearch.org/article/31774.htm

jsp页面遍历List

jsp页面遍历List<c:forEach var="person" items="${personList}" varStatus="status">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index:${status.index}&nbsp;&nbsp;name:${person.name} <br /></c:forEach>

清凉一夏,换个皮肤

夏天到了,换个清凉点的皮肤。做了些修改,每次进页面都会随机换背景。简单的js使用而已。页面背景比较大,网速慢的话,加载就慢了,为了些效果,扔了。http://dapeng.me&nbsp;增加了两个插件的使用一个是归档日志,可以按照时间来看的。另外一个增加了wap版的,虽然基本没人访问,还是加上了。