1.什么是JavaBean?

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 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的属性并获取相应的属性值。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <%@ 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> 运行结果显示: 欢迎工作一到五年的Java工程师朋友们加入Java群: 891219277 群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!