1、认识JavaBean
2、在JSP中使用JavaBean
3、JavaBean的范围
JavaBean是一个遵循特定写法的Java类,在JavaBean中可以将控制逻辑、值、数据库访问和其他对象进行封装,并且可以被其他应用来调用。实际上,JavaBean就是一种Java组件技术。JavaBean的作用是向用户提供实现特定逻辑的方法接口,而具体的实现封装在组件的内部,不同的用户根据具体的应用情况使用该组件的部分或全部控制逻辑。
它通常具有如下特点:
public class Student {
private String stuno;//学生学号
private String stuname;//学生姓名
private int age;//学生年龄
//Student类对外提供的用于访问私有属性的public方法
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
从上面的例子可以看出,在JavaBean中不仅要定义其成员变量,还要对成员变量定义setter/getter方法。对于每一个成员变量要定义一个getter方法和一个setter方法。setter方法称为属性修改器,getter方法称为属性访问器。属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,如上面的setStuname。属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,如上面的getStuname。
特殊的JavaBean属性:
给Boolean类型设置属性,要将getter方法改为is方法
如:
private boolean member;
public boolean isMember()
{
return isMember;
}
public void setMember(boolean isMember)
{
this.isMember = isMember;
}
对于建立属性,MyEclipse提供了较为方便的做法。右击代码界面,在弹出的快捷菜单中选择Source|Generate Getters and Setteers命令
2.1、为什么要在JSP中使用JavaBean?
在很多Javaweb项目中都要显示数据库中的内容。比如在学生信息管理系统中经常在页面中显示数据库中学生的信息,在这种情况下就必须要访问数据库。通常将访问数据库的代码写在JSP内。但是在JSP内嵌入大量的java代码可能会造成维护不方便。试想一下,如果JSP页面上需要进行复杂的HTML显示又要写大量的java代码,则对该页面的编写成员要求就高了,既要是html专家又得精通java。所以最好的办法就是将JSP中的Java代码移植到Java类中。而这些可能使用到的Java类就是JavaBean。
JSP访问数据库
Java类访问数据库
2.2、具体使用
1、定义JavaBean
<%
Student student = new Student();//使用student
>%
但这种方法是在JSP中使用Java代码。
常用语法:
"id"属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。
"class"属性用于指定JavaBean的完整类名(即必须带有包名)。
"scope"属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application等四个值中的一个,其默认值是page。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
student.setStuno("200101");//为student对象的stuno属性赋值
student.setStuname("王强");//为student对象的stuname属性赋值
student.setAge(21);//为student对象的age属性赋值
%>
<%--使用getXxx()方法获取对象的属性值 --%>
姓名:<%=student.getStuno()%>
性别:<%=student.getStuname()%>
年龄:<%=student.getAge()%>
在该例子中使用jsp:useBean动作实例化了Student对象,对象名为student
2、设置JavaBean属性
在实例开发应用中定义JavaBean之后需要在JSP页面设置JavaBean组件的属性。也就是调用setter方法。
<%
student.setStuname("王强");//为student对象的stuname属性赋值
%>
当值的来源是String常量时,jsp:setProperty的语法如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--使用getXxx()方法获取对象的属性值 --%>
姓名:<%=student.getStuno()%>
性别:<%=student.getStuname()%>
年龄:<%=student.getAge()%>
当值来源是request参数时,jsp:setProperty的语法如下:
语法格式一:
语法格式二:
语法格式三:
语法格式四:
先写一个表单;
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
使用单个请求参数为bean的属性赋值
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--使用getXxx()方法获取对象的属性值 --%>
学号:<%=student.getStuno()%>
用所有的请求参数为bean的属性赋值:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--使用getXxx()方法获取对象的属性值 --%>
学号:<%=student.getStuno()%>
姓名:<%=student.getStuname()%>
年龄:<%=student.getAge()%>
scope说明它们之间的作用范围是不同的。
●page:表示JavaBean对象的作用范围在实例化它的页面上,只在当前页面可用,在其他页面中不被认识。
●request: 表示JavaBean实例除了可以在当前页面上可用之外,还可以在通过forward方法跳转的目标页面中被认识到。
●session:表示JavaBean对象可以存在session中,该对象可以被同一个用户的所有页面认识。
●application:表示JavaBean对象可以存在application中,该对象可以被所有用户的所有页面认识。