关于setProperty的设置

<jsp:setProperty>的属性设置可以分为四种:

         1. 自动匹配:<jsp:setProperty name="实例化对象名称(id)" property="*"/>

          2.指定属性:<jsp:setProperty name="实例化对象名称(id)" property="属性名称"/>

         3.指定参数:<jsp:setProperty name="实例化对象名称(id)" property="属性名称"  param="参数名称"/>

         4.指定内容:<jsp:setProperty name="实例化对象名称(id)" property="属性名称" value="内容"/>


实例演示四种设置的应用

我们还是以上一篇文章中的程序来验证。

 
  
  1. biaodan.html  
  2. <html> 
  3. <head> 
  4. <title>WEB开发</title> 
  5. </head> 
  6. <body> 
  7. <form action="javaBean_01.jsp" method="post"> 
  8.    姓名:<input type="text" name="name"><br> 
  9.   年龄:  <input type="text" name="age"><br> 
  10.   <input type="submit" value="提交"> 
  11.   <input type="reset" value="重置"> 
  12. </form> 
  13. </body> 
  14. </html> 
 
  
  1. SimpleBean.java  
  2. package javaBean01;  
  3. public class SimpleBean {  
  4.     private String name;  
  5.     private int age;  
  6.     public SimpleBean(){  
  7.           
  8.     }  
  9.     public void setName(String name){  
  10.         this.name=name;  
  11.     }  
  12.     public void setAge(int age){  
  13.         this.age=age;  
  14.     }  
  15.     public String getName(){  
  16.         return this.name;  
  17.     }  
  18.     public int getAge(){  
  19.         return this.age;  
  20.     }  
  21. }  
 
  
  1. SimpleBean_01.jsp  
  2. <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> 
  3. <html>   
  4. <head> 
  5. <title>web开发</title> 
  6. </head> 
  7. <body> 
  8. <%   request.setCharacterEncoding("gbk");%> 
  9. <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/> 
  10. <jsp:setProperty name="simple" property="*"/> 
  11. <h3>姓名:<%=simple.getName() %></h3> 
  12. <h3>年龄:<%=simple.getAge() %></h3> 
  13. </body> 
  14. </html> 

以上三个页面就是全部的代码了,现在让我们一一验证四种设置的应用。

现在希望指定属性设置内容,而其他的不希望设置内容的话,就可以将"*"换成希望设置的属性。比如现在希望name属性有内容,而age属性不给他赋值。代码如下;

 
  
  1. 将SimpleBean_01.jsp改成如下:  
  2. <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> 
  3. <html>   
  4. <head> 
  5. <title>web开发</title> 
  6. </head> 
  7. <body> 
  8. <%   request.setCharacterEncoding("gbk");%> 
  9. <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/> 
  10. <jsp:setProperty name="simple" property="name"/> 
  11. <h3>姓名:<%=simple.getName() %></h3> 
  12. <h3>年龄:<%=simple.getAge() %></h3> 
  13. </body> 
  14. </html> 

运行一下,填写姓名和年龄,提交后可以发现:姓名有内容,而年龄却为0.      age属性并没有赋值。

  现在希望将name参数的内容设置给age,将age参数的内容设置给name ,也就是说将name和age缓过来,可以通过param进行指定,代码如下:

 
  
  1. 将SimpleBean_01.jsp改成如下:  
  2. <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> 
  3. <html>   
  4. <head> 
  5. <title>web开发</title> 
  6. </head> 
  7. <body> 
  8. <%   request.setCharacterEncoding("gbk");%> 
  9. <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/> 
  10. <jsp:setProperty name="simple" property="name" param="age"/> 
  11. <jsp:setProperty name="simple" property="age" param="name"/> 
  12. <h3>姓名:<%=simple.getName() %></h3> 
  13. <h3>年龄:<%=simple.getAge() %></h3> 
  14. </body> 
  15. </html> 

运行biaodan.html  在姓名上写上22,在年龄上写上赵玉强,然后提交,可以发现即使姓名和年龄写反了,结果依然可以正常输出: 姓名:赵玉强  年龄:22   (注意:这个地方字符串和整型)

     如果现在不需要参数的话,也可以直接指定一个具体的内容,那么就得看value的作用了,代码如下:

 
  
  1. 将SimpleBean_01.jsp改成如下:  
  2. <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> 
  3. <html>   
  4. <head> 
  5. <title>web开发</title> 
  6. </head> 
  7. <body> 
  8. <%   request.setCharacterEncoding("gbk");%> 
  9. <%  int age=30;%> 
  10. <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/> 
  11. <jsp:setProperty name="simple" property="name" value="赵玉强"/> 
  12. <jsp:setProperty name="simple" property="age" value="<%=age %>"/> 
  13. <h3>姓名:<%=simple.getName() %></h3> 
  14. <h3>年龄:<%=simple.getAge() %></h3> 
  15. </body> 
  16. </html> 

运行一下可以发现,无论在biaodan.html上写什么内容,结果都显示 赵玉强 30. 因为已经在

SimpleBean_01.jsp页面设置好了。


比较完这四种设置方法后,可以发现  "*"  这种方式最为方便,而且以后对于传递很多参数都很方便。


取得属性: <jsp: getProperty>

既然有<jsp:setProperty>设置属性,相应的就会有<jsp:getProperty>取得属性了。

这个标签会自动调用javaBean中的getter()方法。它的语法格式只有一种

  <jsp:getProperty name="实例化对象的名称(id)" property="属性名称"/>

 
  
  1. 将SimpleBean_01.jsp 改成如下:  
  2. <%@ page language="java" contentType="text/html" pageEncoding="gbk" %> 
  3. <html>   
  4. <head> 
  5. <title>web开发</title> 
  6. </head> 
  7. <body> 
  8. <%   request.setCharacterEncoding("gbk");%> 
  9. <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/> 
  10. <jsp:setProperty name="simple" property="*"/> 
  11. <h3>姓名:<jsp:getProperty name="simple" property="name"/></h3> 
  12. <h3>年龄:<jsp:getProperty name="simple" property="age"/></h3> 
  13. </body> 
  14. </html> 

这种标签可以直接取得属性。这种操作也使用了反射机制完成的。反射机制是这些标签的操作基础。


      注意事项:

   1.  要仔细比较几个代码的不同,掌握好四种设置的不同;

   2.  以后只要看见了标签上出现了id的属性,则不管何种情况基本上都表示一个实例化对象,如果在标签上看见了name属性,肯定找的是属性范围中的内容,就是id指定的。如果有了property则表示的就是类中的一个属性。