JSP与JavaBean
Posted songchj-bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP与JavaBean相关的知识,希望对你有一定的参考价值。
1. 什么是JavaBean
JavaBean是一个遵循特定写法的Java类,它通常有如下特点:
- 这个Java类必须具有一个无参的构造函数
- 属性必须私有化
- 私有化的属性必须通过public类型方法暴露给其他程序,并且方法的命名也必须遵守一定的命名规范
JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其他程序可以通过反射技术实例化JavaBean对象,并通过反射那些遵循命名规范的方法,从而获取JavaBean的属性和设置属性的值。
JavaBean示例:
package com.domain; public class Person private String name; private int age; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age;
2. JavaBean的属性
JavaBean可以有多个属性,属性可以是任意类型,每个属性通常都需要有相应的setter和getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
setter和getter方法命名必须以set、get开始,其后跟上对应的属性名,属性名第一个字母大写。
一个JavaBean的某个属性也可以只有getter或setter方法,这样的属性称之为只读、只写属性。
3. 在JSP使用JavaBean
JSP技术中提供了三个JavaBean相关的标签:
- <jsp:useBean>:用于在JSP页面中查找或实例化一个JavaBean组件
- <jsp:setProperty>:用于在JSP页面中设置一个JavaBean组件的属性。
- <jsp:getProperty>:用于在JPS页面中获取一个JavaBean组件的属性。
3.1 <jsp:useBean>标签
<jsp:useBean>标签用于在指定的域范围查找指定名称的JavaBean对象:如果存在,则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象,并将它以指定名称存储到指定的域范围。
常用语法:
<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application" /> - id属性用于指定JavaBean实例对象的引用名称 - class属性用于指定JavaBean的完整类名(即必须带有包名) - scope属性用于指定JavaBean实例对象所存储的域范围,值只能是page、request、session、application中的一个,默认值为page
示例:
<%@ page import="com.domain.Person" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>useBean示例</title> </head> <body> <jsp:useBean id="person1" class="com.domain.Person"></jsp:useBean> <% out.print(person1); %> <br> <% Person person = new Person(); pageContext.setAttribute("person2", person); out.print(person); %> <br> <jsp:useBean id="person2" class="com.domain.Person"></jsp:useBean> <% out.print(person2); %> </body> </html>
运行结果:
person1在使用<jsp:useBean>标签是当前域没有person1对象。person2在使用<jsp:useBean>标签时,当前域中已经存在person对象。
查看翻译后的Servlet,可以看到创建的时候先去指定域查找是否存在对应的JavaBean,存在直接返回,不存在则新创建一个。
3.2 带标签体的<jsp:useBean>标签
语法:
<jsp:useBean ...> Body </jsp:useBean>
功能:Body部分的内容只有在<jsp:useBean>标签创建JavaBean实例对象时才执行。
3.3 <jsp:setProperty>标签
<jsp:setProperty>用于设置JavaBean的属性
语法:
<jsp:setProperty name="beanName" property="propertyName" value="String | <%= experession %>"/> <jsp:setProperty name="beanName" property="propertyName" param="parameName"/> <jsp:setProperty name="beanName" property="*" />
name属性用于指定JavaBean对象的名称。
property属性用于指定JavaBeran实例对象的属性名。
value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式,该表达式计算的结果必须与要设置的JavaBean属性的类型一致。
param属性用于将JavaBean实例对象的某个属性之设置为一个请求参数的值,该属性同样会自动转换成要设置的JavaBean属性的类型(只支持8中基本类型的转换,将请求参数的字符串转换成基本类型,并赋值到bean属性中)。
property="*"时,则使用所有请求参数为bean赋值,请求参数名称必须和JavaBean的名称一致。
举例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>setProperty举例</title> </head> <body> <jsp:useBean id="person1" class="com.domain.Person" /> <jsp:setProperty name="person1" property="name" value="zhangsan"/> <jsp:setProperty name="person1" property="age" value="18"/> <% out.print(person1); %> <br> <jsp:useBean id="person2" class="com.domain.Person" /> <jsp:setProperty name="person2" property="name" param="name"/> <jsp:setProperty name="person2" property="age" param="age"/> <% out.print(person2); %> <br> <jsp:useBean id="person3" class="com.domain.Person"/> <jsp:setProperty name="person3" property="*"/> <% out.print(person3); %> </body> </html>
运行结果:
3.4 <jsp:getProperty>标签
<jsp:getProperty>标签用于读取JavaBean对象的属性,然后将读取的属性值转换成字符串输出到响应正文中。
语法:
<jsp:getProperty name="beanName" property="propertyName"/>
name属性用于指定实例对象的名称。
property属性用于指定JavaBean实例对象的属性名。
如果一个JavaBean实例对象的某个属性为null,那么使用<jsp:getProperty>标签的输出结果是一个内容为“null”的字符串。
举例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>getProperty举例</title> </head> <body> <jsp:useBean id="person" class="com.domain.Person"/> <jsp:setProperty name="person" property="name" value="zhangsan" /> <jsp:setProperty name="person" property="age" value="18" /> name = <jsp:getProperty name="person" property="name"/><br> age = <jsp:getProperty name="person" property="age"/> </body> </html>
运行结果:
以上是关于JSP与JavaBean的主要内容,如果未能解决你的问题,请参考以下文章