大家都知道在jsp中有一个<jsp:useBean />用来指定一个javabean,然后可以用<jsp:getProperty 和
<jsp:setProperty 来得到和设置javabean的属性,我的疑问就是jsp提供的这个功能是不是有一些问题,我的问题是:
(1)如果在定义javabean的时候,这些属性如果是被定义成私有的,那么这两个标签能访问吗?
(2)为什么不在javabean中定义相关的方法来实现对属性的设置与获取,在调用javabean的时候用相关的方法来完成设置和获取属性的功能,而jsp直接提供这两个标签来完成这样的功能,这难道不是违背了封装性的原则了吗?真诚希望得到各位高人指点迷津。

解决方案 »

  1.   

    1:<jsp:getProperty> 和<jsp:setProperty>是通过getProperty()和setProperty()两个方法操作属性的,与属性本身是否私有无关,只要两个方法是public的就行。2:为什么不在javabean中定义相关的方法来实现对属性的设置与获取?那是你没按bean的规范编写。而且不这样做,也就不能用<jsp:getProperty> 和<jsp:setProperty>
      

  2.   

    客端访问的JSP页面实际上是 WEB服务器编译生成的.class文件产生的静态WEB页面.
    JSP的标签始终要转换为JAVA语句,而且对JAVABEAN属性的访问要么通过JAVABEAN的命名规范读取要么用JAVA反射机制读取...一种MVC模式的应用. 成熟的产品怎么能轻易被看扁......
      

  3.   

    jsp提供的<jsp:getProperty> 和<jsp:setProperty>这两个标签是在调用JavaBean的set和get方法来实现功能的,若是你不提供public set和get方法,它是不能实现的。属性可以使用任何修饰符private public default,但是set、get方法必须是public,否则若是private或default,对应<jsp:getProperty> 或<jsp:setProperty>就不能使用。若属性为 username , 则方法名必须为setUsername(),getUsername()。方法名=set+属性名(属性名第一个字母大写)
      

  4.   

    jsp提供的<jsp:getProperty> 和<jsp:setProperty>这两个标签是在调用JavaBean的set和get方法来实现功能的,若是你不提供public set和get方法,它是不能实现的。
    ----------正解。