Javaweb 学习记录—JSP与JavaBean

Javaweb 学习记录—JSP与JavaBean

 1.介绍
  JavaBean 是一种特殊的 Java 类,以封装和重用为目的,在类的设计上遵从一定的规范,以供其它组件根据这种规范来调用。
  JavaBean 最大的优势在于重用,同时它又具有以下特性:

  • 易于维护、使用、编写;
  • 封装了复杂的业务逻辑;
  • 可移植性;
  • 便于传输,既可用于本地也可用于网络传输。

  JavaBean 可分为两种:一种是有用户界面(UI,User Interface)的JavaBean,例如一些 GUI 组件(按钮、文本框、报表组件等);另一种是没有用户界面、主要负责封装数据、业务处理的 JavaBean。JSP通常访问的是后一种 JavaBean。
 JSP 与 JavaBean 搭配使用,具有以下优势:

  • JSP 页面中的 HTML 代码与 Java 代码分离,便于页面设计人员和 Java 编程人员的分工与维护;
  • 使 JSP 更加侧重于生成动态网页,事务处理由 JavaBean 来完成,使系统更趋于组件化、模块化。

 JavaBean 的这些优势,使系统具有了更好的健壮性和灵活性,使得JSP+JavaBean 和 JSP+Servlet+JavaBean 的组合设计模式成为目前开发Java Web应用的主流模式。

 2.JavaBean规范
 一个标准的 JavaBean 需要遵从以下规范:

  • JavaBean 是一个公开的(public)类,以便被外部程序访问;
  • 具有一个无参的构造方法(即一般类中默认的构造方法),以便被外部程序实例化时调用;
  • 提供 setXxx() 方法和 getXxx() 方法,以便让外部程序设置和获取其属性。

 JavaBean 中的 setXxx() 方法和 getXxx() 方法也被称为 setter 方法和getter 方法,是针对 JavaBean 方法的一种命名方式。方法的名称由字符 “ set+ 属性名 ” 和 “ get+ 属性名 ” 构成, “ 属性名 ” 是将 JavaBean的属性名称首字母大写后得来。 JavaBean 通过这种方法的命名规范,以及对类的访问权限和构造函数的要求,使得外部程序能够通过反射机制来实例化 JavaBean 和查找到这些方法,从而调用这些方法来设置和获取 JavaBean 对象的属性。

 3.JavaBean的属性
 在 JavaBean 中,对于属性的定义也不同于普通类中的属性定义。JavaBean 的属性是指 setter 和 getter 方法名中所包含的属性名,即使在 JavaBean 类中没有定义此名称的实例变量,也可称为 JavaBean 的属性。这种定义方式扩展了属性的定义,融入了对 JavaBean 所封装的业务功能状态的表示。

 4.JavaBean的属性
 JSP提供的访问 JavaBean 的3个动作元素:

  • : 创建或查找 JavaBean实例对象;
  • : 设置 JavaBean对象的属性值;
  • :获取 JavaBean 对象的属性值。

(1)
元素用于在某个指定的作用域范围内查找一个指定名称的JavaBean 对象,如果存在则直接返回该 JavaBean 对象的引用,如果不存在则实例化一个新的 JavaBean 对象,并将它按指定的名称存储在指定的作用域范围内。
元素的语法格式:

<jsp:useBean id="beanInstanceName" class="package.class"
scope="page|request|session|application"/>
  • id 属性用于指定JavaBean对象的引用名称和其存储域属性名;
  • class 属性用于指定JavaBean对象的完整类名;
  • scope 属性用于指定JavaBean 对象的存储域范围,其取值只能是page 、request 、session 、application 四个值中的一个,默认为page。

(2)
元素用于设置 JavaBean 对象的属性,相当于调用 JavaBean 对象的 setter 方法。
语法:

< jsp:setProperty  name="beanInstanceName"
property="propertyName" value=" propertyValue"|
property="propertyName" param=" parameterName"|
property="propertyName"|
property="*"
/>
  • name 属性用于指定JavaBean 对象的名称,其值应与标签中的id属性值相同;
  • property 属性用于指定JavaBean对象的属性名;
  • value 属性用于指定JavaBean 对象的某个属性的值,可以是一个字符串也可以是一个表达式,它将被自动转换为所要设置的JavaBean属性的类型,该属性可选;
  • param 属性用于将一个请求参数的值赋给JavaBean 对象的某个属性,它可以将请求参数的字符串类型的返回值转换为JavaBean 属性所对应的类型,该属性可选。value 和param 属性不能同时使用。

(3)
元素用于读取 JavaBean 对象的属性,等同于调用JavaBean 对象的 getter 方法,然后将读取的属性值转换成字符串后输出到响应正文中 。
语法:

< jsp:getProperty  name="beanInstanceName" property="propertyName"/>
  • name 属性用于指定JavaBean 对象的名称,其值应与标签的id 属性值相同;
  • property 属性用于指定JavaBean对象的属性名。

 5.JavaBean 应用—处理Form表单

演示:
创建product.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



"UTF-8">
Insert title here


	<jsp:useBean id="product" class="com.bean.ProductBean" />


创建ProductBean.java

package com.bean;

public class ProductBean {
	private String pName;
	private int num;

	public String getpName() {
		return pName;
	}

	public void setpName(String pName) {
		this.pName = pName;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

}

创建UserBean.java

package com.bean;

public class UserBean {
	private String username;
	private String password;
	private char sex;
	private String tooltip;
	private String answer;
	private String email;
	private String[] message;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

	public String getTooltip() {
		return tooltip;
	}

	public void setTooltip(String tooltip) {
		this.tooltip = tooltip;
	}

	public String getAnswer() {
		return answer;
	}

	public void setAnswer(String answer) {
		this.answer = answer;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String[] getMessage() {
		return message;
	}

	public void setMessage(String[] message) {
		this.message = message;
	}

	public String getMessageChoose() {
		String messageChoose = "";
		if (message != null) {
			for (String mess : message) {
				messageChoose += mess + ";";
			}
		}
		return messageChoose;
	}

}

创建registerStep1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



"UTF-8">
Insert title here



	

"center">第一步

"registerStep2.jsp" method="post"> "1" width="50%" align="center">
用户名: "text" name="username" />
密码: "password" name="password" />
"submit" value="下一步" />

创建registerStep2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



"UTF-8">
Insert title here


	<%
		request.setCharacterEncoding("utf-8");
	%>

	<jsp:useBean id="user" class="com.bean.UserBean" scope="session">
		<jsp:setProperty property="username" name="user" />
		<jsp:setProperty property="password" name="user" />
	jsp:useBean>

	

"center">第二步

"registerConfirm.jsp" method="post"> "1" width="50%" align="center">
性别: "radio" name="sex" checked="checked" value="男" />男 "radio" name="sex" checked="checked" value="女" />女
密保信息:
密保答案: "text" name="answer">
复选: "checkbox" name="message" value="新闻">新闻 "checkbox" name="message" value="产品广告">产品 "checkbox" name="message" value="招聘">招聘
"submit" value="完成" />

创建registerConfirm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



"UTF-8">
Insert title here


	<%
		request.setCharacterEncoding("utf-8");
	%>

	<jsp:useBean id="user" class="com.bean.UserBean" scope="session" />

	<jsp:setProperty property="*" name="user" />

	

"center">确认信息

"" method="post"> "1" width="50%" align="center">
用户名: <jsp:getProperty name="user" property="username" />
密码: <jsp:getProperty name="user" property="password" />
性别: <jsp:getProperty name="user" property="sex" />
提示信息: <jsp:getProperty name="user" property="tooltip" />
提示答案: <jsp:getProperty name="user" property="answer" />
愿意接收信息: <jsp:getProperty name="user" property="messageChoose" />

运行
Javaweb 学习记录—JSP与JavaBean_第1张图片
Javaweb 学习记录—JSP与JavaBean_第2张图片
Javaweb 学习记录—JSP与JavaBean_第3张图片
 6.总结

  • JavaBean 是一种特殊的 Java 类,以封装和重用为目的,在类的设计上遵从一定的规范,以供其它组件根据这种规范来调用。
  • JavaBean 可分为两种:一种是有用户界面(UI , User Interface)的JavaBean;另一种是没有用户界面、主要负责业务逻辑(如数据运算,操纵数据库)的 JavaBean;JSP 通常访问的是后一种JavaBean。
  • 一个标准的 JavaBean 需要遵从以下规范:是一个公开的(public)类,以便被外部程序访问;有一个无参的构造方法(即一般类中默认的构造方法),以便被外部程序实例化时调用;提供 setXXX() 方法和 getXXX() 方法,以便让外部程序设置和获取其属性 。
  • JSP 还提供了3个动作元素来访问 JavaBean ,分别为: 。其中, 用于查找或创建 JavaBean 实例对象; 用于设置 JavaBean对象的属性值; 用于获取 JavaBean 对象的属性值。

你可能感兴趣的:(Javaweb 学习记录—JSP与JavaBean)