首页 > JSP教程 阅读:4880

JSP setProperty和getProperty动作

通义灵码
<jsp:getProperty> 动作用于获取 Bean 的属性值,<jsp:setProperty> 动作用于设置 Bean 的属性值。

<jsp:getProperty>

<jsp:setProperty> 的语法如下:
  • <jsp:setProperty name = "beanName" property = "attributeName" value = "attributeValue"/>
其中,name 指定需要修改属性的 Bean 的名称;property 指定 Bean 的属性,即 Bean 类中的属性;value 是要设定的属性值。

<jsp:setProperty> 通常和 <jsp:useBean> 一起使用,分为两种情况。

1. 在 <jsp:useBean> 标签外使用 <jsp:setProperty> ,例如:
  • <jsp:useBean id = "User" ... />
  • ...
  • <jsp:setProperty name = "User" property = "attributeName" value = "attributeValue"/>
以上情况,无论 <jsp:useBean> 是否实例化了 User 对象,<jsp:setProperty> 都会执行。

2. 在 <jsp:useBean> 标签里使用 <jsp:setProperty> ,例如:
  • <jsp:useBean id = "User" ...>
  • ...
  • <jsp:setProperty name = "User" property = "attributeName" value = "attributeValue"/>
  • </jsp:useBean>
以上情况,只有 <jsp:useBean> 实例化了 User 对象,<jsp:setProperty> 才会执行。

<jsp:getProperty>

<jsp:getProperty> 的语法如下:
  • <jsp:getProperty name = "beanName" property = "attributeName">
其中,name 指定需要获取属性的 Bean 的名称;property 指定 Bean 的属性,即 Bean 类中的属性。

注意:<jsp:setProperty> 和 <jsp:getProperty> 动作都会按照 page、request、session 和 application 的顺序依次查找指定 Bean 的实例对象,直到第一个实例被找到。如果任何范围内都不存在这个 Bean 实例,则会拋出异常。

示例

创建 Bean 类 Site.java,代码如下:
  1. package net.biancheng;
  2.  
  3. public class Site {
  4. private String name;
  5. private String url;
  6.  
  7. public String getName() {
  8. return name;
  9. }
  10.  
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14.  
  15. public String getUrl() {
  16. return url;
  17. }
  18.  
  19. public void setUrl(String url) {
  20. this.url = url;
  21. }
  22. }
login.jsp 代码如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>编程帮(www.biancheng.net)</title>
  7. </head>
  8. <body>
  9. <form action="index.jsp" method="post">
  10. 网站名称: <input type="text" name="name" /> <br> <br>
  11. 网址: <input type="text" name="url" /> <br> <br>
  12. <input type="submit" value="提交" />
  13. </form>
  14. </body>
  15. </html>
index.jsp 代码如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <title>编程帮(www.biancheng.net)</title>
  7. </head>
  8. <body>
  9. <%
  10. request.setCharacterEncoding("UTF-8");
  11. %>
  12. <jsp:useBean id="site" class="net.biancheng.Site" />
  13. <jsp:setProperty property="*" name="site" />
  14. <jsp:getProperty property="name" name="site" />
  15. <jsp:getProperty property="url" name="site" />
  16. </body>
  17. </html>
注意:当 property 的取值为 * 时,要求 Bean 属性的名称与类型要与 request 请求中参数的名称及类型一致,以便用 Bean 中的属性来接收客户输入的数据,系统会根据名称来自动匹配。

运行结果如下:
login.jsp运行结果
login.jsp 运行结果

index.jsp运行结果
index.jsp运行结果