JavaBean

Java Bean

是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用 Javabean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点

  • 可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
  • 可利用 JavaBean的优点。将常用到的程序写成 Java Bean组件,当在JSP要使用时,只要调用 Java Bean组件来执行用户所要的功能,不用再重复写相同的程序,这样一来也可以节省开发所需的时间。

一.JavaBean的开发要求

JavaBean本身就是一个类,属于Java的面向对象编程。

• 在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:
• 所有的类必须放在一个包中,在WEB中没有包的类是不存在的;
• 所有的类必须声明为public class,这样才能够被外部所访问;
• 类中所有的属性都必须封装,即:使用private声明;
• 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
• 一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用

目录结构

在这里插入图片描述
在这里插入图片描述

第一个JavaBean程序

package com.org;
public class simpleBean{//如果没有不带构造方法会自动加进来
	private String name;
	private String age;
	public void setName(String name)
	{
		this.name=name;
	}
	public void setAge(String age)
	{
		this.age=age;
	}
	public String getName() {
		return this.name;
	}
	public String getAge() {
		return this.age;
	}
}

二. JSP中导入JavaBean

1.使用Page指令导入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.org.*"%>	<!-- 使用Page指令导入 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
	<%
		simpleBean simple=new simpleBean();
		simple.setName("小明");
		simple.setAge("19");
	%>
	<h3>姓名:<%=simple.getName() %></h3>
	<h3>年龄:<%=simple.getAge() %></h3>
</body>
</html>

2.使用useBean动作标签导入

除了使用import的语句之外,也可以使用JSP中提供的:<jsp:useBean>指令 完成操作,指令的操作语法如下所示:
• <jsp:useBean id=“实例化对象名称” scope=“保存范围” class=“包.类名称”/>
• 主要属性:
• id:表示实例化对象的名称
• scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、 application
• class:对象所对应的包.类名称

<%@ page contentType="text/html" pageEncoding="GBK"%>
<jsp:useBean id="simple" scope="page" class="com.org.simpleBean"/>
<html>
<head><title>JAVABEAN测试</title></head>
<body>
<%
    simple.setName("小明");
    simple.setAge(30);
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

三.JavaBean与表单交互

在JavaBean语法中实际上最大的特点就在于与表单的交互上,如果按照之前的做法,有一个表单提交了内容 给JSP,JSP中如果要是想进行接收的话,则需要通过request,分别进行接收,并设置到JavaBean对应的属性里。但是通过以下标签来简化获取:
• JSP中专门提供了JavaBean的属性设置标签:<jsp:setProperty>
• JSP中专门提供了JavaBean的属性取得标签:<jsp:getProperty>
• 设置和取得属性的标签依靠的是反射机制运行

4种设置方法

1、当Bean中的属性名跟参数名不一致时

<jsp:setProperty name="simple" property="name" param="userName"/>
等价于
String username=request.getParameter("userName");
simple.setName(username);

2.当Bean中的属性名跟参数名一致时

<jsp:setProperty name="simple" property="name"/>
等价于
String username=request.getParameter("name");
simple.setName(username);

3.给JavaBean的属性传具体的值

<jsp:setProperty name="simple" property="name" values="jack"/>
等价于
simple.setName("jack");

4.当参数名和Bean的属性名一一对应时的快捷设置方式

<jsp:setProperty name="simple" property="*"/>    
<jsp:getProperty name="simple" property="name"/>

交互案例

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>JavaBean与表单交互</title></head>
<body>
<%request.setCharacterEncoding("GBK");   %>
<jsp:useBean id="simple" scope="page" class="com.org.SimpleBean"/>
 
<%--将表单的所有参数传递给JavaBean对应的同名属性--%>
<jsp:setProperty name="simple" property="*"/>
 
<%--将表单的name参数传递给JavaBean的name属性--%>
<jsp:setProperty name="simple" property="name" param="name"/>
<jsp:setProperty name="simple" property="name"/><%--当参数名称和属性同名时可以省略param--%>>

<%--将值jack传递给JavaBean的name属性--%>
<jsp:setProperty name="simple" property="name" value="jack"/>
 
<%--获取JavaBean的属性值并输出给客户端--%>
<h3>姓名:<jsp:getProperty name="simple" property="name"/></h3>
<h3>年龄:<jsp:getProperty name="simple" property="age"/></h3>
</body>
</html>

在这里插入图片描述

四. JavaBean保存范围

<jsp:useBean>的指令上存在了一个scope属性,表示的是一个 JavaBean的保存范围,保存的范围一共是四种:
• page:保存在一页的范围之中,跳转之后此JavaBean无效
• request:一个JavaBean对象可以保存在一次服务器跳转范围中
• session:在一个用户的操作范围中保存,重新打开浏览器的时候才会声 明新的JavaBean
• application:在整个服务器上保存,服务器关闭时才会消失。

<jsp:useBean>的等价含义

<jsp:useBean id="cou" scope="session" class="com.org.Count"/> 等价于: 
com.org.Count cou=null; 
HttpSession scope=request.getSession(); 
cou=(com.org.Count)scope.getAttribute(“cou”); 
if(cou==null){ 
	cou=new com.org.Count(); 
	scope.setAttribute(“cou”,cou);
}

程序代码:

首先编写一个Count.java类,来分别测试四种属性范围。
Count.java :用户计数操作的JavaBean

package com.org;
public class Count {
    private int count = 0 ;
    public Count(){
        System.out.println("=========== 一个新的Count对象产生 ===========") ;
    }
    public int getCount(){
        return ++ this.count ;
    }
}

1.page范围的JavaBean
page范围的JavaBean只在本页有效,跳转后无效。

page_bean01.jsp: 定义page范围的JavaBean

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>page范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="page" class="cn.mldn.lxh.demo.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
<jsp:forward page="page_bean02.jsp"/>
</body>
</html>

page_bean02.jsp:跳转后的页面

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>page范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="page" class="cn.mldn.lxh.demo.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
</body>
</html>

2.request范围的JavaBean

request范围设置的JavaBean,则在一次服务器跳转中,将不会重复声明JavaBean对象。

request_bean01.jsp:设置request范围的JavaBean并跳转

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>request范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="request" class="com.org.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
<jsp:forward page="request_bean02.jsp"/>
</body>
</html>

request_bean02.jsp:跳转后的页面

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>request范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="request" class="com.org.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
</body>
</html>

3.session范围的JavaBean

当一个用户连接到JSP页面后,此session范围的JavaBean将会一直保留,直到会话结束。

session_bean.jsp:设置session范围的JavaBean

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>session范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="session" class="com.org.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
</body>
</html>

4. applica范围的JavaBean

application范围的JavaBean是所有用户所共享的,只要声明后就会在服务器端保存,所有用户都可以直接访问此对象。

application_bean.jsp:定义application范围的JavaBean

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>application范围的JavaBean</title></head>
<jsp:useBean id="cou" scope="application" class="com.org.Count"/>
<body>
<h3><jsp:getProperty name="cou" property="count"/>次访问!</h3>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值