- 浏览: 925383 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
周末了有大块时间,我又忍不住地想鼓捣下Tomcat的源码,像往常一样又是从头看起:org.apache.catalina.startup.Bootstrap类.顾名思义,这个类是Tomcat启动时的main方法所在类.这个类本身没什么特别的,可看着看着,发现有点不对:怎么这个类里ClassLoader类型的三个属性是用protected来修饰的,而这个类本身又是不能再被extends的(也就是用final来修饰的)?
不对呀,这不自绝后路吗?用protected修饰的属性只能在本类或子类中访问,而这个类又给final掉了,protected在此不就多此一举了么?难道说protected修饰的成员可以让本package中的其它类访问?
是Tomcat作者写错了?还是自己对protected关键字的理解有问题?
这种情况下我是不怎么相信自己的,于是先用代码试了下.
1, 验证protected修饰的成员可以让本package中的其它类访问,我用如下的两个类:
package accessControl; public class ProtectedAccess { protected int aNumber; }
..........
package accessControl; import accessControl.innerPackage.AnotherProtectedAccess; public class LabClass { private ProtectedAccess pa= new ProtectedAccess(); public void printProtectedAccess() { System.out.println("Result: "+pa.aNumber); } }
.........
当在LabClass类里写了上面的pa.aNumber时,Eclipse没有报错.
2,验证protected修饰的成员不能被本package外的类访问,我用了如下个类:
package accessControl.innerPackage; public class AnotherProtectedAccess { protected int bNumber; }
..........
package accessControl; import accessControl.innerPackage.AnotherProtectedAccess; public class LabClass { private ProtectedAccess pa= new ProtectedAccess(); private AnotherProtectedAccess apa = new AnotherProtectedAccess(); public void printProtectedAccess() { System.out.println("Result: "+pa.aNumber); // System.out.println("Result of apa: "+apa.bNumber); // The field AnotherProtectedAccess.bNumber is not visible } }
写下apa.bNumber后,Eclipse报错了:The field AnotherProtectedAccess.bNumber is not visible.
以上实验纠正了我的一个认识:protected修饰的成员可以被本package里的其它类访问的,而不是只能被子类和本类访问.
再看Thinking In Java,这本书里有如下的描述:
1, The levels of access control from "most access" to "least access" are public,protected,package access(which has no keyword), and private.
2, protected also gives package access - that ism other classes in the same package may access protected elements.
这样也就进一步证实了实验结果.
上面的这个实验是验证了protected修饰的成员除了被子类访问外,还可以被本package里的类访问.不错.但这里的Bootstrap类是final了,这样就没有子类而只剩下同package里其它的类访问了.可不写岂不更好?难道说是Tomcat项目组的疏忽?还是另有别的我现在还没接触到的东东?
评论
在系统中设计一个基类,所有相关功能的子类都要继承这个基类;
private一般是为了实现本类功能而设计的;
public则是一个类对外的接口,是最终实现类的“门户”。
什么都不写?不推荐吧?难道是为了教学?
String method1(){
//code
}
权限
public
所有类都可以访问
(包括本类、本类的子类、和本类处在同一包下的类、和本类处在不同包下的类)
protected
本类、本类的子类、和本类处在同一包下的类
什么都不写
本类、和本类处在同一包下的类
private
只有本类可以访问
可以将java的包结构理解为一个家族,同一包下就是同一个家族,每个类是一户人家,继承则是直系血亲;
现在我用Eclipse跑的是Tomcate 6.0.16版本的,以前试过Tomcat5.X,但效果不好,后来改成6.0.16后感觉不错,就像对自己写的程序那样地Debug.
总之我想问下老兄:你能把tc4.1.x导入eclipse跑下么?
发表评论
-
Spring下配置job
2010-07-20 15:58 3400没什么可说的, 今天把以前配置的一个job重新整理了下,用ma ... -
研究下Spring中AOP的实现?
2010-06-03 17:57 1327碰到一个AOP的问题, 见“用Spring的 ... -
Debug地研究Hibernate分页功能过程中的另外收获
2009-12-17 15:04 13211, 如用MySQL,其分页sql是啥样的: selec ... -
CJC(二): abstract、子类与多态的单例模式
2009-03-16 10:33 2257CJC是Common Java Cookbo ... -
CJC(一): ToStringBuilder两种方法用法优缺点及一个问题
2009-03-15 20:37 4033CJC是Common Java Cookbook的缩 ... -
研究源码的新天地: 避害趋利
2009-03-14 14:48 1638前两篇分别描述了"为什么要研究源码" ... -
Acegi(十三): 让系统记住我
2009-03-13 09:59 2480经过一段时间的总结, 对Acegi的初步研究终于到 ... -
研究源码的新天地: 研究源码的痛苦
2009-03-12 15:50 1761上篇 中,写了出于什 ... -
研究源码的新天地: 为什么研究源码?
2009-03-11 21:03 1905把前些列出的一个 ... -
Acegi(十二): anonymousProcessingFilter有什么好玩的?
2009-03-09 17:47 2433在这篇博客中, 我们接着看另一个Filter, ano ... -
Acegi(十一): 借鉴Acegi的Exception的异常处理
2009-03-05 11:16 1497今天改项目中的一个问题时, 不由自住地想到了Acegi异 ... -
Acegi(十): securityContextHolderAwareRequestFilter结
2009-03-04 21:46 1846在Acegi(八) 和Acegi ... -
Acegi(九): 子类SavedRequestAwareWrapper
2009-03-02 22:27 2226上篇 中我们对 securi ... -
Acegi(八): securityContextHolderAwareRequestFilter
2009-03-01 22:03 2408上篇 中我们说了下 LogoutFilter的配置, 这篇 ... -
Acegi(七): LogoutFilter配置及几个问题
2009-02-28 18:49 2843这些天有点懒散, 想 ... -
Acegi源码研究(六): Acegi编码/设计碎得
2009-02-18 22:28 1626前些天通过一个Acegi的Web实例,我们感受了下 ... -
Acegi源码研究(五):七剑下天山
2009-02-17 23:10 2015在Acegi初体验及初解剖(http://rmn19 ... -
CoreJava: 第一次用LinkedHashSet带来的思考(二)
2009-02-15 21:05 1549在第一次用LinkedHa ... -
CoreJava: 第一次用LinkedHashSet带来的思考(一)
2009-02-14 19:34 8285用Java虽说时间不 ... -
Acegi(四):Acegi初体验及初解剖
2009-02-14 12:03 3303上篇博客中,我们以静态地角度对Acegi的核心概念及其 ...
相关推荐
这个资源包包含了Tomcat的源码、文档以及源码解析,对于深入理解Tomcat的工作原理、优化应用性能以及进行二次开发具有极大的帮助。 首先,让我们深入探讨Tomcat的源码。源码是软件的基石,通过阅读源码,我们可以...
在深入研究Tomcat源码时,理解其模块结构和主要组件是非常重要的。Tomcat的主要组件包括Catalina(核心Servlet容器)、 Coyote(处理HTTP连接)、Jasper(JSP引擎)等。你可以通过阅读源码和官方文档来了解这些组件...
理解Tomcat源码不仅有助于提升个人技能,还能够帮助开发者解决实际问题,比如调试应用异常、优化性能、自定义功能等。因此,花时间研究`apache-tomcat-8.5.35-src`是一个对Java Web开发者非常有价值的学习过程。
4. "Tomcat源码分析(4)容器处理链接之责任链模式.doc":分析了Tomcat如何利用责任链模式来处理请求,使得请求可以被多个处理器(如过滤器)有序处理。 5. "tomcat加载类的顺序.doc":详细说明了Tomcat加载类的具体...
在深入探讨Tomcat源码学习之前,我们首先要理解Tomcat是什么。Tomcat是一款开源的、免费的Web服务器和Servlet容器,由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages(JSP)规范,是Java EE应用...
7. **理解文档**:阅读提供的导入说明,理解如何配置和使用Tomcat源码,以及可能遇到的问题和解决方案。 8. **编译和运行**:在MyEclipse中编译源码,并可以尝试运行Tomcat服务器,验证导入是否成功。 通过这个过程...
在IT行业中,Tomcat是一款广泛使用的开源Web服务器和...对于开发者来说,理解这些jar包的作用以及如何正确配置和使用它们,对于成功编译Tomcat源码至关重要。同时,这也是一种提升对Tomcat内部工作原理理解的好方法。
Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑...
手把手教你搭建Tomcat7源码开发环境,如果有了如下说明还搭建不成功,建议考虑下自己的理解能力,能不能走编码这条路。附近包括Tomcat源码、Tomcat源码开发环境依赖的包、Tomcat的环境编译工具ant 1、建立如下...
《深入理解Tomcat源码:必备依赖包解析》 Tomcat作为一款广泛应用的开源Java Servlet容器,其源码的编译与理解对于开发者来说具有重要的价值。为了能够顺利地编译Tomcat源码,了解并掌握相关的依赖包是至关重要的。...
1.tomcat源码文件 2.tomcat程序文件 3.Ant程序文件 4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习...
源码分析是提升开发者对服务器内部运作机制理解的重要途径,尤其对于Tomcat这样的核心组件,源码的学习能够帮助我们更深入地理解Web应用的部署、运行以及性能优化。 首先,我们要了解Tomcat的架构。Tomcat7基于...
对于"tomcat7.0.19源码导入Eclipse后,编译缺少的jar包"这个问题,我们需要深入理解Tomcat的构建过程、源码结构以及如何解决缺失的依赖。 首先,Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和Java...
IDEA 版 Tomcat 源码搭建 Tomcat 是一个开源的 Web 服务器软件,由 Apache 软件基金会开发和维护。它支持众多的 Java 库和框架,能够提供高性能和高可扩展性的 Web 应用程序。IDEA 是一款功能强大的集成开发环境...
Tomcat作为一款广泛应用的开源Web服务器和Servlet容器,其源码的编译与理解对于开发者来说是提升技术水平的重要途径。源码编译过程中,jar包的正确配置至关重要。本文将详细探讨在编译Tomcat源码时,需要用到的关键...
根据所提供的文件信息,我们将从以下几个方面详细探讨Tomcat源码的相关知识点: 1. Catalina脚本解析:Catalina是Tomcat的主引擎,负责整个容器的初始化和处理。在Tomcat源码中,Catalina的脚本解析是了解其启动...
【标题】"Tomcat源码学习:一个最简单的‘Tomcat’",这篇博客主要探讨的是如何通过学习Tomcat的源代码来理解这个流行的开源Java Servlet容器的工作原理。Tomcat是Apache软件基金会的一个项目,它是Java Web应用...
深入理解Tomcat的源码有助于我们更好地掌握其工作原理,从而优化应用性能,解决潜在问题。 1. **Tomcat架构概述** Tomcat的核心架构主要分为几个部分:Catalina(核心处理引擎)、Jasper(JSP编译器)、 Coyote...