JavaWeb学习-JSP和JavaBean

 

1、认识JavaBean

2、在JSP中使用JavaBean

3、JavaBean的范围


1、认识JavaBean

JavaBean是一个遵循特定写法的Java类,在JavaBean中可以将控制逻辑、值、数据库访问和其他对象进行封装,并且可以被其他应用来调用。实际上,JavaBean就是一种Java组件技术。JavaBean的作用是向用户提供实现特定逻辑的方法接口,而具体的实现封装在组件的内部,不同的用户根据具体的应用情况使用该组件的部分或全部控制逻辑

它通常具有如下特点:

  • Java类必须具有一个无参的构造函数(一般不写的话系统会自动生成)
  • 私有化的成员属性。
  • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
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、在JSP中使用JavaBean

2.1、为什么要在JSP中使用JavaBean?

    在很多Javaweb项目中都要显示数据库中的内容。比如在学生信息管理系统中经常在页面中显示数据库中学生的信息,在这种情况下就必须要访问数据库。通常将访问数据库的代码写在JSP内。但是在JSP内嵌入大量的java代码可能会造成维护不方便。试想一下,如果JSP页面上需要进行复杂的HTML显示又要写大量的java代码,则对该页面的编写成员要求就高了,既要是html专家又得精通java。所以最好的办法就是将JSP中的Java代码移植到Java类中。而这些可能使用到的Java类就是JavaBean。

JSP访问数据库

Java类访问数据库

2.2、具体使用

     1、定义JavaBean

  • 方法一:直接在JSP中实例化JavaBean
<%
    Student student = new Student();//使用student
>%

但这种方法是在JSP中使用Java代码。

  • 方法二:使用<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 language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="student" class="com.zhukun.programmer.entity.Student" scope="page"></jsp:useBean>
	 <%
	     student.setStuno("200101");//为student对象的stuno属性赋值
	     student.setStuname("王强");//为student对象的stuname属性赋值
	     student.setAge(21);//为student对象的age属性赋值
	 %>
		<%--使用getXxx()方法获取对象的属性值 --%>
     <h2>姓名:<%=student.getStuno()%></h2>
     <h2>性别:<%=student.getStuname()%></h2>
     <h2>年龄:<%=student.getAge()%></h2>
</body>
</html>

在该例子中使用jsp:useBean动作实例化了Student对象,对象名为student

      2、设置JavaBean属性

     在实例开发应用中定义JavaBean之后需要在JSP页面设置JavaBean组件的属性。也就是调用setter方法。

  • 方法一:直接编写Java代码
<jsp:useBean id="student" class="com.zhukun.programmer.entity.Student" scope="page"></jsp:useBean>
	 <%
	     student.setStuname("王强");//为student对象的stuname属性赋值
	 %>
  • 方法二:使用<jsp:setProperty>标签

当值的来源是String常量时,jsp:setProperty的语法如下:

<jsp:setProperty property="属性名称" name="bean对象名" value="常量"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="student" class="com.zhukun.programmer.entity.Student" scope="page"/>
	<jsp:setProperty property="stuno" name="student" value="200102"/>
 	<jsp:setProperty property="stuname" name="student" value="李刚"/>
 	<jsp:setProperty property="age" name="student" value="24"/>
		<%--使用getXxx()方法获取对象的属性值 --%>
     <h2>姓名:<%=student.getStuno()%></h2>
     <h2>性别:<%=student.getStuname()%></h2>
     <h2>年龄:<%=student.getAge()%></h2>
</body>
</html>

当值来源是request参数时,jsp:setProperty的语法如下:

语法格式一:
    <jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>

语法格式二:
    <jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />

语法格式三:
    <jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>

语法格式四:
    <jsp:setProperty name="beanName" property= "*" />

先写一个表单;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="NewFile.jsp" >
		请输入学号:<input name="stuno" type="text"><br>
		请输入姓名:<input name="stuname" type="text"><br>
		请输入年龄:<input name="stuage" type="text"><br>	
		<input type="submit" value="提交">
	</form>
</body>
</html>

使用单个请求参数为bean的属性赋值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="student" class="com.zhukun.programmer.entity.Student" scope="page"/>
	<jsp:setProperty property="stuno" name="student" param="stuno"/>
		<%--使用getXxx()方法获取对象的属性值 --%>
     <h2>学号:<%=student.getStuno()%></h2>
</body>
</html>

用所有的请求参数为bean的属性赋值:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="student" class="com.zhukun.programmer.entity.Student" scope="page"/>
	<jsp:setProperty property="*" name="student"/>
		<%--使用getXxx()方法获取对象的属性值 --%>
     <h2>学号:<%=student.getStuno()%></h2>
     <h2>姓名:<%=student.getStuname()%></h2>
     <h2>年龄:<%=student.getAge()%></h2>
</body>
</html>

3、JavaBean的范围

 <jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>

scope说明它们之间的作用范围是不同的。
page:表示JavaBean对象的作用范围在实例化它的页面上,只在当前页面可用,在其他页面中不被认识。
request: 表示JavaBean实例除了可以在当前页面上可用之外,还可以在通过forward方法跳转的目标页面中被认识到。
session:表示JavaBean对象可以存在session中,该对象可以被同一个用户的所有页面认识。
application:表示JavaBean对象可以存在application中,该对象可以被所有用户的所有页面认识。

猜你喜欢

转载自blog.csdn.net/weixin_44279178/article/details/107890143
今日推荐