javabean 一定要有getter和setter方法吗???
我尝试过,代码如下:
test.java:
package test;
public class test 
{
    public String a="hello";
}test.jsp:<%@ page contentType="text/html; charset=GB2312"%>
<html>
    <head>
        <title>
            
        </title>
    </head>
    <body>
            <jsp:useBean id="fuck"  class="test.test"  scope="page"/>
            <%=fuck.a%>
    </body>
</html>不用getter和setter方法也可以调用Bean里面的东西,只要写为public 就可以,所以就有疑问,为什么规范中一定要写getter方法和setter方法??

解决方案 »

  1.   


    偶怀疑你的中文有问题啊
    规范就是人家事先规定好的规则,不管对还是不对
    再说了,javabean里的参数并不是都象你那样都有值的,是作为对象处理的。这就像现实社会中
    有的人天生下来就有权有势,有的人什么都没有
      

  2.   

    关于这个get和set方法我认为是给formbean里的属性取值和赋值的方法。
    不一定所有的属性都像你这个String a 有个hello的死值啊;
    规范是人定的,也许有一天你也定了个规范让所有人都按照你这个规范来执行
      

  3.   

    这样规定是非常有JAVA特色的,这就是基于java等架构高效强大的一个重要一点,javabean就是一个类,你怎么写也好,就是在写一个类,只是用途不同罢了。使用getter和setter方法就像是提供了一个数据的中间缓存,增强了其他类数据获取和设置的灵活性,当你学习了java设计模式后,你就知道接口和javabean在其中的重要作用。
      

  4.   

    getter 和 setter 必须要有,原因有二:
    1. Java使用反射机制取值。 表面上看起来是fuck.a, 实际上运行的是fuck.getA(), 不管你a的值是多少,得到的值是getA()返回值。比如 
    public class test
    {
    public String a="hello";
    public String getA() {
        return "world";
      }
    }
    在jsp里fuck.a=="world"
      根据上面的原理,可以只设置getter setter 方法而不用设置属性。比如:
       public class test
    {
        public String getA() {
            return "hello";
         }    public void setA(String a) {
         }
    }
      类中没有a这个属性,而你照样可以在jsp的javabean中使用test.a2. 类中所有的属性都应该是private,保证类的封装性,这不只是java的要求,这是面向对象编程的要求,c++中也是一样。由此带来的好外是大大地,慢慢你就会明白 了。
      

  5.   

    <%=fuck.a%>
    这个就好像
    System.out.println(fuck.a);
      

  6.   

    这是封装性的问题
    将javaBean中的数据字段设为private
    然后写setter\getter这样的public方法来访问
    这样就很好的保护了javabean中的数据,因为我们可以在setter方法中加一些限制,加一些验证,使不符合要求的数据无法录入.通过getter方法我们可以定义数据显示的格式\样式等.当然,一般的应用中可能setter和getter方法并没有那么复杂,只是简单的将参数赋给变量和将变量返回.但这并不代表没有必要.因为这样写是一种思想.一种数据封装的思想