本来这个事挺简单,但是就是不想按规范走,所以才....
如果bean有如下两个方法
... getUserName ...
... getuserName ...
经过测试tomcat5.0.19在访问${'userName'}时会使用bean的getuserName方法。
当然,若没有getuserName,那么仍可以通过${'userName'}来使用bean的getUserName方法
但是在jsp中如何通过EL来使用 ... getUSerName ...方法呢?
是不是因为... getUSerName ...不符合bean的命名规范,
那么就无法使用getUSerName方法啦?那么在如果有个方法叫getUS,就只能改名为getUs了吧[很不爽]
总感觉tomcat在使用bean的时候有点怪怪,总不是按照期望的方式运行。
但也总结了如下几个结论,不知对不对:
1. bean的方法命名中[setters and getters]必须有一个字母是大写的
例如:可以通过${usernamE}来使用bean中的getusernamE方法
   如果bean中方法没有大写字母,那么这个方法就等死吧,没有谁可以通过EL表达式使用到该方法
2. bean中不能有两个大写字母连在一起,如果连在一起,那么同上一样等死:)
3. 并且在使用${userName}时,tomcat会优先使用getuserName而不使用getUserName,但是
   若有getuserNameName、getusernameName。那么${userNameName}会使用userNameName,而
   ${usernameName}会使用getusernameName。如果你看到这里,不论你是否能帮我解决疑问还是
   很感谢。
期待大家指点,我的总结ok否?顺便问问,什么容器能在修改bean后不用重新启动啊,我用的5.0.19
好郁闷,每一次都得重启,不知高版的tomcat用不用重启,最好是小型容器,我的机器很....还是晚上
上csdn快

解决方案 »

  1.   

    把上面的内容简化如下:java bean 中方法的命名:
    1.如果bean的方法是setxxxxx[xxxx都是小写],那么无法通过jsp使用该方法,
      bean的方法必须至少有一个大写字母,
    2.如果bean的方法是setXxxXXxxx[连续有两个大写字母],那么也无法通过jsp使用该方法
    3.在满足1 2的前提下,如果方法名有两个大写字母,即方法名为setAbcDef或setabcDefG
      在jsp中可以通过${bean.abcDef}、${bean.abcDefG使用。
      但是有一个优先规则,e.g.如果一个bean包含如下两个
         public type getAbcDef()和
         public type getabcDef(
      那么${bean.abcDef}会调用bean的getabcDef方法,而getAbcDef将永远不会被发现。满足以上三条的bean的方法都可以在jsp中通过EL表达式或scriptlet中使用,对吗?第三也可以这样说,若bean中有>=2个大写字母,且set或get后面的字母是大写,即形如setXxxYyyZzzz....或getXxxYyyZzzz....,那么对于jsp使用bean来说setxxxYyyZzzz... 和 getxxxYyyZzzz...将覆盖
    setXxxYyyZzzz...和getXxxYyyZzzz...
      

  2.   

    没看明白
    是不是在讲get set 方法啊?
      

  3.   

    一般不会有人这样写getter和setter吧
      

  4.   

    是在说get setter,不会有,但是想知道.....:(
      

  5.   

    To  fire1_0(Steven) 是在说get set方法
    To hellwindy 我只是想知道container(例如tomcat吧)查找bean的原则,如果按照规范写bean,完全不用考虑我说的3个方面,但这3个能透漏出一些container找bean的信息,但是我说的对不对呢,还是我看到的规律只是断章取意....
      

  6.   

    你可以在server.xml中修改<reload>属性,改成true就可以了,就不用每次都重新启动tomcat
      

  7.   

    你不让他重启的话,那么如果 .class (非 JSP ) 修改了话, Tomcat 不管的,
    也就是说你用的是上次的东西,这次修改后的等重启后才能生效,因为 JVM 类加载器已经加载的那个如果不 Reload 的话就一直用老的,没有听说  unload 一个 class.