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方法??
我尝试过,代码如下:
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方法??
偶怀疑你的中文有问题啊
规范就是人家事先规定好的规则,不管对还是不对
再说了,javabean里的参数并不是都象你那样都有值的,是作为对象处理的。这就像现实社会中
有的人天生下来就有权有势,有的人什么都没有
不一定所有的属性都像你这个String a 有个hello的死值啊;
规范是人定的,也许有一天你也定了个规范让所有人都按照你这个规范来执行
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++中也是一样。由此带来的好外是大大地,慢慢你就会明白 了。
这个就好像
System.out.println(fuck.a);
将javaBean中的数据字段设为private
然后写setter\getter这样的public方法来访问
这样就很好的保护了javabean中的数据,因为我们可以在setter方法中加一些限制,加一些验证,使不符合要求的数据无法录入.通过getter方法我们可以定义数据显示的格式\样式等.当然,一般的应用中可能setter和getter方法并没有那么复杂,只是简单的将参数赋给变量和将变量返回.但这并不代表没有必要.因为这样写是一种思想.一种数据封装的思想