JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性。

符合下面设计规则的任何Java类都是一个JavaBean

(1) 对于数据类型"protype"的每个可读属性,bean必须有下面签名的一个方法:public proptype getProperty(){}

(2) 对于数据类型"protype"的每个可写属性,bean必须有下面签名的一个方法:public setProperty(proptype x){}

(3)定义一个不带任何参数的构造函数

想要在JSP中调用JavaBean,就需要使用到 <jsp:useBean>动作指令,该动作指令主要用于创建和查找JavaBean的示例对象。语法格式如下:
<jsp:useBean id="对象名称" scope="存储范围" class="类名"> </jsp:useBean>

JavaBean的Scope属性

  对于JSP 程序而言,使用JavaBeans 组件不仅可以封装许多信息,而且还可以将一些数据处理的逻辑隐藏到JavaBeans 的内部,除此之外,我们还可以设定JavaBeans 的Scope属性,使得JavaBeans 组件对于不同的任务具有不同的生命周期和不同的使用范围。Scope属性具有四个可能的值分别是application 、session 、request、page分别代表JavaBeans 的四种不同的生命周期和四种不同的使用范围。bean只有在它定义的范围里才能使用,在它的活动范围外将无法访问到它。JSP为它设定的范围有:

page: bean的缺省使用范围

request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。
还可通过使用 Request对象访问bean,如request.getAttribute(beanName)

session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page、另一request里对此bean的调用。但必须在创建此bean的文件里事先用page指令指定了session=true。

application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request以及另一session里对此bean的调用。

例1:

Student.java

package com.jsp;

public class Student {
private long classno;
private String name;
private int age;
private boolean sex;
private String major; public Student(){ } public long getClassno() {
return classno;
}
public void setClassno(long classno) {
this.classno = classno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}

测试代码 input.html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JavaBean测试</title>
</head> <body bgcolor = "#FFFFFF">
<jsp:useBean id="student1" scope = "page" class = "com.jsp.Student"/>
利用标记获取JavaBean属性:
<jsp:getProperty name = "student1" property = "name"/>
<br> 利用对象方法获取JavaBean属性:
<%=student1.getName()%>
<br>
利用标记设置JavaBean属性name为temp
<jsp:setProperty name = "student1" property="name" value = "小明"/>
<br>
获取新的属性:
<jsp:getProperty name = "student1" property = "name"/>
<br> </body>
</html>

例2:

第一部分同例1的Student.java

input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<html>
<head>
<title>Param HTML</title>
</head> <body>
<form action ="param.jsp">
姓名:<input type = "text" name ="Username"><br>
年龄:<input type = "text" name = "age"><br>
专业:<input type = "text" name = "major"><br>
<input type ="submit" value="提交"> </form>
</body>
</html>

param.jsp
设置属性用这种方式:

   <jsp:setProperty name="student2" property="name" param="Username"/> 

如果input.jsp中的<input type = "text" name ="Username">,令name="name"而不是name="Username",即和Student.java中姓名的属性名一样时,那么在param.jsp中设置属性是可以省略param属性。代码如下:

   <jsp:setProperty name="student2" property="name"/> 

获取属性可以用下面这两种方式:

<jsp:getProperty name = "student2" property="name"/>
<%out.println(student2.getName()); %>

代码:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%request.setCharacterEncoding("gb2312");%> <html>
<head>
<title>利用请求参数设置JavaBean属性</title>
</head> <body bgcolor="#ffffff">
<jsp:useBean id = "student2" scope="page" class="com.jsp.Student"/>
<jsp:setProperty name="student2" property="name" param="Username"/>
<!-- 注意第三个参数名为param,因为上一个页面传过来的为参数
如果为valule="Username" 那么名字就会被设置为"Username"而不是参数值 -->
<jsp:setProperty name="student2" property="age" param="age"/>
<jsp:setProperty name="student2" property="major" param="major"/>
<table>
<tr>
<td>姓名</td>
<td><jsp:getProperty name = "student2" property="name"/></td>
<td><%out.println(student2.getName()); %></td>
</tr>
<tr>
<td>年龄</td>
<td><jsp:getProperty name = "student2" property="age"/></td>
<td><%out.println(student2.getAge()); %></td>
</tr>
<tr>
<td>专业</td>
<td><jsp:getProperty name = "student2" property="major"/></td>
<td><%out.println(student2.getMajor()); %></td>
</tr> </table>
</body>
</html>

页面效果:

JavaWeb学习笔记--3.JavaBean的更多相关文章

  1. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  2. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  3. 【JAVAWEB学习笔记】06_jQuery基础

    接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...

  4. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

  5. Javaweb学习笔记(一)

    一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...

  6. Javaweb学习笔记——(十二)——————JSP指令:page指令、include指令、taglib指令,JavaBean,内省,EL表达式

    JSP指令JSP指令分类 JSP有三大指令: *page指令 *include指令 *taglib指令 在JSP中没有任何指令是必须的. 但基本上每个JSP都是使用page指令============ ...

  7. JavaWeb学习笔记(十)—— JavaBean总结【转】

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  8. JavaWeb学习笔记——JavaBean的保存范围和删除

  9. JavaWeb学习笔记——javabean与表单

随机推荐

  1. poj 3335 Rotating Scoreboard

    http://poj.org/problem?id=3335 #include <cstdio> #include <cstring> #include <algorit ...

  2. HDU_2029——回文串的判断

    Problem Description “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串.请写一个程序判断读入的字符串是否是“回文”.   Input 输入包 ...

  3. OI生涯中三届NOIP(2012-2014)流水账

    NOIP2012: 才摸了三四个月OI就上阵当炮灰,果然一下就被轰得渣都不剩了. D1看到T1这道模拟水题时很激动,立马就把它A了.然后T2就不会了,果断写了个阶乘的暴力,根本没有想过什么排序贪心.T ...

  4. Problem with generating association inside dbml file for LINQ to SQL

    Question: I have created a dbml file in my project, and then dragged two tables from a database into ...

  5. SQL 查询某字段id为空(不为空)

    1 sql 查询某字段id为空 select *  from  表名 where  id  is   null  ; 2 sql 查询某字段id不为空 select * from   表名  wher ...

  6. Jmeter接口测试-badboy录制脚本(二)

    1.脚本录制,采用badboy进行录制,操作步骤很简单 2.badboy简介: Badboy是一款免费WEB自动化测试工具. 官方下载地址:http://www.badboy.com.au badbo ...

  7. mysql 建立加密连接

    加密连接可提高数据的安全性,但会降低性能.要进行加密连接,必须满足以下要求: user权限表里要有相关的SSL数据列.如果安装的MySQL服务器是4.0.0版的,user权限表已包含相关的SSL数据列 ...

  8. RHEL6.3进入单用户模式并重置root密码

    单用户模式类似于windows下的安全模式,允许root账号不输入密码直接启动并登录系统进行系统维护. 单用户模式只允许root账号登录,不允许其它用户使用ssh协议进行远程连接. 重启系统时按Ent ...

  9. How to recover after deleting the symbolic link libc.so.6?

    参考资料: http://stackoverflow.com/questions/12249547/how-to-recover-after-deleting-the-symbolic-link-li ...

  10. Sass混合宏、继承、占位符

    混合宏-声明混合宏如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无 ...