简单来看看JavaBean

1.什么是JavaBean?

JavaBean是一个遵循特定写法的java类。

  • 用作JavaBean的类必须有一个公共的,无参数的构造方法。
  • JavaBean的属性与普通的Java类的属性的概念一样,JavaBean的属性是以方法定义的形式出现的。
  • 用于对属性赋值的方法称为属性修改器或setter方法,用于读取属性值的方法称为属性访问器或getter方法。
  • 属性修改器必须以小写的set前缀开始,后缀跟属性名,且属性名的第一个字母要大写,例如,username属性的修改器名称为setUsername。
  • 属性访问器必须以小写的get前缀开始,后跟属性名,且属性名的第一个字母要大写,例如,username属性的访问器名称为getUsername.
  • JavaBean的属性名是根据setter与getter方法的名称来生成的,setter与getter方法中除去前缀“set”和“get”后的部分即为属性名,但属性名的首字母必须小写。

比如,像下面这样的代码:

package com.javaWebMVCTest;

public class Student {
	private int flow_id;
	private int  Type;
	private String id_card;
	private String exam_card;
	private String student_name;
	private String Location;
	private int Grade;
	public int getFlow_id() {
		return flow_id;
	}
	public void setFlow_id(int flow_id) {
		this.flow_id = flow_id;
	}
	public int getType() {
		return Type;
	}
	public void setType(int type) {
		this.Type = type;
	}
	public String getId_card() {
		return id_card;
	}
	public void setId_card(String id_card) {
		this.id_card = id_card;
	}
	public String getExam_card() {
		return exam_card;
	}
	public void setExam_card(String exam_card) {
		this.exam_card = exam_card;
	}
	public String getStudent_name() {
		return student_name;
	}
	public void setStudent_name(String student_name) {
		this.student_name = student_name;
	}
	public String getLocation() {
		return Location;
	}
	public void setLocation(String location) {
		Location = location;
	}
	public int getGrade() {
		return Grade;
	}
	public void setGrade(int grade) {
		Grade = grade;
	}
	public Student(){
		
	}
}

 2.在jsp中怎样使用JavaBean?

<jsp:useBean>标签:用于创建和查找JavaBean的实例对象;

<jsp:setProperty>标签:设置JavaBean对象的属性;

<jsp:getProperty>标签:读取JavaBean对象的属性;

对于jsp来说,只要一个类具有一个公共的,无参数的构造方法,就可以把这个类当做JavaBean来使用,如果类中有不接受任何参数的getter方法或只接受一个参数的setter方法,就可以把前缀“get”或“set”后面的部分当作一个属性来引用。jsp页面可以像调用一个普通java类的方式去调用JavaBean,即先使用java代码创建JavaBean的实例对象,然后直接调用JavaBean对象的getter和setter方法。

2.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。

2.2 <jsp:setProperty>

<jsp:setProperty>标签用于设置和访问JavaBean对象的属性。
语法:<jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>

  • name属性用于指定JavaBean对象的名称。
  • property属性用于指定JavaBean实例对象的属性名。
  • value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。

2.3 <jsp:getProperty>

<jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中。
语法:<jsp:getProperty name="beanInstanceName" property="PropertyName" />

  • name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。
  • property属性用于指定JavaBean实例对象的属性名。
  • 如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。

如下使用jsp标签设置JavaBean的属性并获取相应的属性值。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'bean.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <jsp:useBean id="customer" class="javaBeanTest.Customer" scope="request"></jsp:useBean>
    <jsp:setProperty property="age" value="10" name="customer"/>
    age:<jsp:getProperty property="age" name="customer"/>
  </body>
</html>

 运行结果显示:

原文地址:https://www.cnblogs.com/naihuangbao/p/9833289.html