首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何读经典框架源码(如Struts,hibernate) [已结贴,结贴人:xc_wangwang]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:10:35 楼主
    最近刚把设计模式看完,想通过看Struts源码来提高自己的设计和分析能力。
    但是看源码好痛苦啊,高手写的类全是interface,abstract类,一层套一层
    譬如看个Action 继承自ActionServlet ,ActionServlet 又继承自HttpServlet,HttpServlet 又来自于GenericServlet,然后又是Servlet,ServletConfig
    觉得这样看下去很迷茫,也很茫然
    望高手指点下如何看此类源码?谈谈自己的经验,谢谢~~
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:10:401楼 得分:0
    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xc_wangwang】截止到2008-07-03 16:10:55的历史汇总数据(不包括此帖):
    发帖的总数量:5                        发帖的总分数:110                     
    结贴的总数量:5                        结贴的总分数:110                     
    无满意结贴数:1                        无满意结贴分:20                     
    未结的帖子数:0                        未结的总分数:0                       
    结贴的百分比:100.00%              结分的百分比:100.00%                 
    无满意结贴率:20.00 %              无满意结分率:18.18 %                 
    敬礼!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:12:342楼 得分:0
    同问,,,,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zidasine
    • 等级:
    发表于:2008-07-03 16:15:533楼 得分:0
    经常是摸不着头绪,经常追到最后发现是个接口或者抽象类
    呵呵  还是高手来介绍下吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:19:234楼 得分:0
    到veryCD去下些视频教程  跟着做  你就明白了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:19:335楼 得分:0
    帮顶,同问
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 16:26:366楼 得分:0
    引用 4 楼 my145794 的回复:
    到veryCD去下些视频教程  跟着做  你就明白了

    顶起来,不让沉,网上的教程都是教你怎么用,没有教你怎么看源码的
    早就过了会用的阶段了,想尝试着学习如何来设计。毕竟coding是没有前途的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:00:257楼 得分:0
    不让沉,顶起来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:05:598楼 得分:10
    把框架下下来,里面应该附带了api文档和源代码以及示例,基本上可以搞定了。
    任何框架都有一个执行流程,掌握它就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:06:109楼 得分:10
    其实如果了解抽象类,和接口的具体应用,自己也可以试着写一写
    他们那样写是考虑全局的
    所以你看的晕
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:07:2810楼 得分:10
    你说的控制器在struts里面是不需要你去做过多了解的,你讲的那些纯粹是servlet内容,如果你想学习的话要找本专门说这个方面的书看看,在model1中主要用到的是jsp+servlet,但是现在你要用struts就不需要去了解那些了,你只要知道STRUTS中SERVLET只是一个控制器就可以了,在WEB.XML里面加入.其他关于SERVLET就没有了,等于说你想学struts,你既然说你已经学好MVC了,那就很容易了,通过链接从struts-config.xml里面找到action,有FORMBEAN的话就找到他,没有的话就看你ACTION里面方法返回的NAME在struts-config.xml对应的是哪个页面了.框架知道了就什么都简单了,建议你把MVC仔细看看.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:08:4111楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:12:2412楼 得分:10
    用看的方式来研究其源码确实是很困难的事啊,但是你要是边做些小struts的项目,再试着修改其中的某些源码。这样的长进应该会比较大。

    比如,在struts1.2中,是不支持多表单的提交的。但是你跟踪一下其中收集表单数据的源码后,你就可以自己把他改成可以提交多表单的啦!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:19:5213楼 得分:5
    可以写一些Struts相关的程序,然后跟踪一下可能会更快。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:21:4814楼 得分:0
    引用 12 楼 jabeginner 的回复:
    用看的方式来研究其源码确实是很困难的事啊,但是你要是边做些小struts的项目,再试着修改其中的某些源码。这样的长进应该会比较大。

    比如,在struts1.2中,是不支持多表单的提交的。但是你跟踪一下其中收集表单数据的源码后,你就可以自己把他改成可以提交多表单的啦!


    有道理,这样有的放失我觉得是个好办法
    如果能知道当初开发这个框架的时候的设计思想就不晕了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:27:1515楼 得分:0
    同样的问题,顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:42:3616楼 得分:0
    我现在总结出来的步骤是:
    1.先结合以前写过的例子,在debug模式下,把整个流程有一个认识。
    2.在框架原来的基础上进行修改,对主要的类有一个感性的认识。
    3.脱手写一个类似struts的MVC框架,实现简单的逻辑处理,页面跳转的功能。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:43:2217楼 得分:0
    下班回家,继续等高手给回复~~~~~~~~
    老紫竹怎么不来说两句啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 17:53:3818楼 得分:5
    如过你要了解某个方法 直接找到那个 方法的实现。。。
    如果你要做个总体的了解。 最好能把 类之间的 继承关系画出来 。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-03 21:49:0819楼 得分:0
    等高手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 08:37:5320楼 得分:0
    引用 19 楼 xc_wangwang 的回复:
    等高手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 08:43:2021楼 得分:0
    引用 16 楼 xc_wangwang 的回复:
    我现在总结出来的步骤是:
    1.先结合以前写过的例子,在debug模式下,把整个流程有一个认识。
    2.在框架原来的基础上进行修改,对主要的类有一个感性的认识。
    3.脱手写一个类似struts的MVC框架,实现简单的逻辑处理,页面跳转的功能。

    好办法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 08:56:3622楼 得分:10
    沿着j2ee标准看
    web.xml里面应该配过ActionServlet吧
    毕竟启动设置了
    然后启动服务,你会看到ActionServlet得init方法启动。
    沿着一路跟。你会依次看到初始化容器,和读取struts-config.xml等。这只是第一步
    然后提交的时候,会走doPost和doGet方法,你试着在这里加断点,你会很惊讶的发现,实际上ActionServlet里面只是调用了实际处理的代码(处理Action得代码),ActionServlet只是傀儡类,真正做处理的是RequestProcessor类。跟着这条路,一直跟,就差不多应该知道大致框架和流程了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 09:05:1823楼 得分:10
    至今还没完整的看过任何一个框架的代码。。。。。

    我觉得应该不用那么麻烦吧,看代码看的是思路,不是代码。如果你使用这个框架,我觉得首先你要先明确它的功能,然后找到它的整体实现思路。这个就是使用上的思路了,你可以找关于这个框架的使用文档,网上一般都会有很多的。先学会用了,然后再反过来去看代码,顺着思路走,就会轻松很多。

    另外,不要见class就跟,这玩意和逆向分析一样,不要见call就进。先看看这个类大约是做什么功能的,了解了之后再具体进去看详细代码。

    而且也不要把所有代码一行行的通读,我觉得那样反而乱。还是那句话,代码是死的,你看的只是思路。你既然看到了一层层的封装和继承,那么就应该要考虑下为什么要这样做,这样做的好处是什么。主要是多想,代码不需要看多,但一定要真正看懂。而且这种事是慢慢来的,也别太心急,慢慢就好了。水平也是一点点的涨起来的。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 09:08:4224楼 得分:10
    另外,为什么要用接口,为什么又要用抽象类。异常为什么要如此封装,这段代码为什么要这样写。。。。每一项你去查网上,都会发现是一个全新的知识,讨论的人很多,所以经常你会出现在一行代码花甚至一天乃止更多的时间,但是不要急,不要为了看代码而看代码,一定要看精。就好比学习那样,呵呵,做题100遍,如果做了没印象,等于没做。做了一道题,弄会了,那就真的成你自己的了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 09:57:4225楼 得分:0
    有道理,受教了
    举一反三
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 11:53:1826楼 得分:0
    引用 25 楼 xc_wangwang 的回复:
    有道理,受教了
    举一反三
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 12:07:1527楼 得分:0
    学习。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 12:12:5528楼 得分:10
    看代码的话,我觉得最重要的还是要用心去看和要有足够的耐心,有的时候我看别人的代码也是,只要写的不规范,一看到心里就觉得浮躁,就静不下心来看啦,关键要花时间去理解,再实践动手敲一下,这样做起来印象也会比较深刻一些。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 13:00:3429楼 得分:0
    上午重新翻出了孙卫琴老师的精通struts,虽然已经看过一遍了,再看感觉理解又深刻了很多。
    感谢各位。下班后散分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 15:12:4130楼 得分:10
    试着研究一下某些比较感兴趣的功能的实现,又或者觉得框架里某些方法处理的不是太好,可以自己改一下。
    比如spring提供的集成Hibernate的dao的设计就有很多改进的地方。当然我也只是借鉴网上一些牛人的方法,
    但确实写出来的代码看起来真的是非常的优雅。。你要用spring自动生成的那种,晕死,代码全部是重复的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-04 17:19:0831楼 得分:0
    是啊,网上牛人写的框架,象Jdon写的,等等真的非常漂亮。学习中
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-25 13:44:1532楼 得分:0
    引用 23 楼 mxlmwl 的回复:
    至今还没完整的看过任何一个框架的代码。。。。。

    我觉得应该不用那么麻烦吧,看代码看的是思路,不是代码。如果你使用这个框架,我觉得首先你要先明确它的功能,然后找到它的整体实现思路。这个就是使用上的思路了,你可以找关于这个框架的使用文档,网上一般都会有很多的。先学会用了,然后再反过来去看代码,顺着思路走,就会轻松很多。

    另外,不要见class就跟,这玩意和逆向分析一样,不要见call就进。先看看这个类大…


    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved