JSP技术开发--JavaBean技术

1、JavaBean概述

JavaBean组件就是利用Java语言编写的组件,就是一个封装好的容器,使用者不知道内部构造,但是它可以适应用户要求的功能。每个JavaBean都实现一个特定功能,通过合理的组织不同功能的JavaBean,可以快速生成一个全新的应用好吃呢关系。一个应用程序就是一个房间,一个JavaBean就是房间里的家居。

JavaBean优点

可以提高代码的重用性,使得整个代码更加具有逻辑性和整洁性,将各个功能进行分开。复杂简单化,将复杂需求分解成简单的功能模块,这些模块相互独立、可以继承、重用,这样为软件开发提供一个简单、紧凑、优秀的解决方案。

(1)一次性编写

(2)任何地方可执行

(3)任何地方可重用

JavaBean种类

(1)可视化JavaBean:具有GUI图形用户界面的JavaBean

(2)不可视JavaBean:没有GUI图形用户界面的JavaBean,对用户是不可见的。

          (a)值JavaBean严格遵循JavaBean的命名规范,用来封装表单数据,作为信息的容器。

UserInfo.java

/**
 * 
 */
package com.jc.bean;

/**
 * @author JC.Liu
 *
 * 2019年9月28日-上午11:01:51
 */
public class UserInfo {
	private String name;
	private String pwd;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public UserInfo(String name, String pwd) {
		super();
		this.name = name;
		this.pwd = pwd;
	}
	
}

                 (b)工具JavaBean可以不遵循JavaBean规范,通常用于封装业务逻辑,数据操作等。(连接数据库、对数据库进行增删改查等)。工具JavaBean可以实现业务逻辑与页面显示的分离,提高代码的可读性和易维护性。

Tools.java

package com.jc.tool;


public class Tools {
	public String change(String source) {
		source=source.replace("<", "&lt;");
		source=source.replace(">", "&gt;");
		return source;
		
	}
}

JavaBean规范

标准规范:

(1)实现java.io.Serializable接口:实现java.io.Serializable接口的类实例化的对象被JVM转化成一个字节序列,并且能够将这个字节序列完全恢复为原来的对象,序列化机制可以弥补网络传输中不同操作系统的差异问题。

(2)是一个公共类

(3)类中必须存在一个无参构造函数

(4)提供对应的setXXX()和getXXX()方法来获取类中的属性。方法中的“XXX”是属性名称,属性第一个字母应该大写。假如属性为布尔型,则可使用isXXX()方法代替getXXX()方法。

示例:

SimpleUserInfo.java

public class SimpleUserInfo implements java.io.Serializable{//继承接口

	private String name;
	private String pwd;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {						
		this.pwd = pwd;
	}
	public SimpleUserInfo() {								//创建无参构造函数
		
	}
	
}

2、JavaBean属性

JavaBean属性分类:

(1)简单属性 (2)索引属性 (3)绑定属性 (4)约束属性

简单属性:在JavaBean中对应了简单的setXXX()和getXXX()方法的变量。

格式如下:

       public void setXXX(type value);

       public type getXXX();

索引属性:需要通过索引访问的属性。

方法:

public void setXXX(type[] value);                 //用于给类型为数组的属性赋值。

public type[] getXXX();                                 //用于返回一个数组

public void setXXX(int index,type value);     //增加了一个索引参数,用于为数组中索引为index的元素赋值为value指定的值。

publilc type getXXX(int index);                      //增加了一个表示索引的参数,用来返回数组索引为index的元素值。

3、JavaBean应用

(1)创建JavaBean

         JavaBean实质就是一个遵循特殊规范的java类,所以创建一个JavaBean就是在遵循这些规范的基础上创建一个java类。

        步骤:

        (a)新建一个Book的Web项目

          (b)   创建一个类包,com.jc.bean中的Book类

        (c)创建相关的setXXX()、getXXX()方法

/**
 * 
 */
package com.jc.bean;

/**
 * @author JC.Liu
 *
 * 2019年9月28日-上午11:53:42
 */
public class Book {
	private String name;
	private String pwd;
	private String sex;
	private String qq;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getQq() {
		return qq;
	}
	public void setQq(String qq) {
		this.qq = qq;
	}
	public Book(String name, String pwd, String sex, String qq) {
		super();
		this.name = name;
		this.pwd = pwd;
		this.sex = sex;
		this.qq = qq;
	}
	
}

(2)在JSP页面中应用JavaBean

jsp中通常应用的是不可视JavaBean。当它被编译成class文件后,需要放在WEB-INF\classes目录下,才可以在jsp页面中被调用。

        (a)在jsp页面中应用值JavaBean

          值JavaBean作为信息的容器,通常用于封装表单数据,也就是将用户向表单字段中输入的数据存储在JavaBean对应的属性中。

运行代码:

不适用JavaBean的方法:

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<form action="showLogin.jsp">
	<h2>用户登录</h2>
	用户名:<input type="text" name="userName">
	<br>
	密&nbsp;&nbsp;码:<input type="password" name="userPass"><br>
	<input type="submit" value="登录">
	<input type="reset" value="重置">
</form>

showLogin.jsp

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

	String name= request.getParameter("userName");
	if(name==null){
		name="";
	}
	String pwd = request.getParameter("userPass");
	if(pwd==null){
		pwd="";
	}
%>
<center>
	<b>用户名:</b><%=name %>
	<b>密码:</b><%=pwd%>
</center>

运行结果:

 使用JavaBean方法

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<form action="showLogin.jsp">
	<h2>用户登录</h2>
	用户名:<input type="text" name="userName">
	<br>
	密&nbsp;&nbsp;码:<input type="password" name="userPass"><br>
	<input type="submit" value="登录">
	<input type="reset" value="重置">
</form>

Book.java

/**
 * 
 */
package com.jc.bean;

/**
 * @author JC.Liu
 *
 * 2019年9月28日-上午11:53:42
 */
public class Book {
	private String userName;
	private String userPass;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPass() {
		return userPass;
	}
	public void setUserPass(String userPass) {
		this.userPass = userPass;
	}
	public Book(String userName, String userPass) {
		super();
		this.userName = userName;
		this.userPass = userPass;
	}
	
}

showLogin.jsp

<%@ page language="java" import="com.jc.bean.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="user" class="com.jc.bean.Book">
	<jsp:setProperty name="user" property="*"></jsp:setProperty>

</jsp:useBean>
<center>
	<b>用户名:</b><jsp:getProperty name="user" property="userName"/>
	<b>密码:</b><jsp:getProperty name="user" property="userPass"/>
</center>

程序分析:

<jsp:useBean>标识用于创建一个Bean实例,标识中的id属性用来指定一个变量,程序中将使用该变量名对所创建的Bean实例进行引用,class属性指定一个完整的类名。

<jsp:setProperty>标识通常和<jsp:getProperty>一起使用,将用来调用由<jsp:useBean>标识创建的Bean实例中setXXX()方法将请求中参数赋给Bean中对应的属性。标识中的name属性用于指定一个Bean实例,property为标识必须存在的属性,可选值为"*"或者指定Bean中的属性。

       当取值为"*"时,则resquest请求中的所有参数值将被一一赋值给Bean中与参数具有相同名字的属性;

       当取值为Bean值时,则只会将request中与该属性同名的一个参数的值赋给这个Bean属性。

<jsp:getProperty>属性用来从指定的Bean中读取指定属性的值,并输出到页面中。

(3)在JSP页面中应用工具JavaBean

工具JavaBean通常用于封装业务逻辑、数据操作等,可以实现业务逻辑和前台程序的分离,提高代码的可读性和可维护性。

未使用JavaBean方法

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<form action="showLogin.jsp" method="post">
	<h2>用户留言</h2>
	标题:<input type="text" name="title" size="30">
	<br>
	内容:<textarea name="content" rows="5" cols="25"></textarea>
	<br><br>

	<input type="submit" value="留言">
	<input type="reset" value="重置">
</form>

showLogin.jsp

<%@ page language="java" import="com.jc.bean.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%

	request.setCharacterEncoding("utf-8");
	String title=request.getParameter("title");
	String content=request.getParameter("content");
	if(title==null){
		title="";
	}
	title=title.replace("<", "&lt;");
	title=title.replace(">", "&gt;");
	content=content.replace("<", "&lt;");
	content=content.replace(">", "&gt;");

%>
标题:<%=title%>
<br>
内容:<%=content%>

运行结果:

4、JavaBean应用实例

(1)应用JavaBean 解决中文乱码

在jsp程序开发中,通过表单提交的数据如果存在中文,传输到页面时会出现乱码。

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<form action="showLogin.jsp" method="post">
	<table border="1" rules="rows">
		<tr height="30">
			<td>留言者:</td>
			<td><input type="text" name="author" size="20"></td>
		</tr>
		<tr height="30">
			<td>留言标题:</td>
			<td><input type="text" name="title" size="40"></td>
		</tr>
		<tr height="30">
			<td>留言内容:</td>
			<td><textarea name="content" rows="8" cols="35"></textarea></td>
		</tr>
		<tr align="center" height="30">
			<td colspan="2">
				<input type="submit" value="提交">
				<input type="reset" value="重置">
			</td>
		</tr>
	</table>

</form>

WordSingle.java

/**
 * 
 */
package com.jc.word;

/**
 * @author JC.Liu
 *
 * 2019年9月28日-下午3:45:17
 */
public class WordSingle {
	private String author;
	private String title;
	private String content;
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public WordSingle(String author, String title, String content) {
		super();
		this.author = author;
		this.title = title;
		this.content = content;
	}
	public WordSingle() {
		
	}
}

Tools.java

/**
 * 
 */
package com.jc.tool;

import java.io.UnsupportedEncodingException;

/**
 * @author JC.Liu
 *
 * 2019年9月28日-下午3:46:43
 */
public class Tools {
	public static String toChinese(String str) {
		if(str==null) {
			str="";
		}
		try {
			str=new String(str.getBytes("ISO-8859-1"),"utf-8");
		}catch (UnsupportedEncodingException e) {
			str="";
			e.printStackTrace();
		}
		return str;
	}
}

showLogin.jsp

<%@ page language="java"  contentType="text/html; charset=utf-8"
    %>
<jsp:useBean id="myword" class="com.jc.word.WordSingle" scope="request">
	<jsp:setProperty name="myword" property="*"/>

</jsp:useBean>
<jsp:forward page="show.jsp"/>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.jc.tool.*"%>

<jsp:useBean id="myword" class="com.jc.word.WordSingle" scope="request">
	
	<table border="1" height="200" rules="rows">
		<tr>
			<td>留言者:</td>
			<td><%=Tools.toChinese(myword.getAuthor()) %></td>
		</tr>
		<tr height="30">
			<td align="center">留言标题:</td>
			<td><%=Tools.toChinese(myword.getTitle()) %></td>
		</tr>
		<tr>
			<td align="center">留言内容:</td>
			<td>
				<textarea rows="8" cols="35" readonly="readonly">
				<%=Tools.toChinese(myword.getContent()) %>
				</textarea>
			
			</td>
			
		</tr>
		<tr>
			<td colspan="2" align="center">
				<a href="index.jsp">继续留言</a>
			</td>
		</tr>
	</table>

</jsp:useBean>

运行结果:

 本期学习到此结束,欢迎各位关注交流。

        

发布了78 篇原创文章 · 获赞 5 · 访问量 8299

猜你喜欢

转载自blog.csdn.net/qq_36789311/article/details/101600927
今日推荐