Java web从入门到放弃(2)

第七章、JavaBean技术

1、简单样例。主要是在html页面中输入一个字符串,然后调用java类判断这个字符串是否是一个邮箱地址

在项目的src文件中建立com.song.bean包,然后在里面新建Email类,负责处理email的逻辑
 
package com.song.bean;

import java.io.Serializable;

public class Email implements Serializable {
	// serialVersionUID值
	private static final long serialVersionUID = 1L;
	private String mailAdd;
	private boolean email;

	/**
	 * 默认无参的构造方法
	 */
	public Email() {

	}

	/**
	 * 构造方法
	 */
	public Email(String mailAdd) {
		this.mailAdd = mailAdd;
	}

	public boolean isEmail() {
		// 正则表达式,定义邮件格式,mailAdd是一个String,使用其中的matches函数与正则表达式相比较
		String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
		if (mailAdd.matches(regex)) {
			this.email = true;
		}
		return email;
	}

	public String getMailAdd() {
		return mailAdd;
	}

	public void setMailAdd(String mailAdd) {
		this.mailAdd = mailAdd;
	}

}

然后在编写index.jsp负责接收输入的email地址
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login</title>
</head>
<body>
	<form name="form1" method="post" action="result.jsp">
		<table align="center" width="300px" border="1" height="150">
			<tr>
				<td colspan="2" align="center"><b>邮箱认证系统</b>
				</td>
			</tr>
			<tr>
				<td align="right">邮箱地址:</td>
				<td><input type="text" name="mailAdd">
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="确定">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

再编写result,jsp文件负责调用Email类的使用以及展示判断结果
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Email"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>result</title>
</head>
<body>
	<div align="center">
		<%
			//获取邮箱地址
			String mailAdd = request.getParameter("mailAdd");
			//实例化Email
			Email email = new Email(mailAdd);
			if (email.isEmail()) {
				out.println(mailAdd + "<br>是一个邮箱地址!<br>");
			} else {
				out.println(mailAdd + "<br>不是一个邮箱地址!<br>");
			}
		%>
		<a href="index.jsp">返回</a>
	</div>
</body>
</html>


2、JavaBean的应用

2.1在一个jsp页面中对java类的属性进行获取和赋值

首先上java类,这里的类是Produce有四个私有属性和get/set
package com.song.bean;

public class Produce {
	private String name = "电吉他";
	private double price = 1880.5;
	private int number = 10;
	private String factoryAdd = "天津市津南区";

	public String getName() {
		return name;
	}

	public double getPrice() {
		return price;
	}

	public int getNumber() {
		return number;
	}

	public String getFactoryAdd() {
		return factoryAdd;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public void setFactoryAdd(String factoryAdd) {
		this.factoryAdd = factoryAdd;
	}

}

然后是获取java类中的属性的index.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Produce"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login</title>
</head>
<body>
	<jsp:useBean id="produce" class="com.song.bean.Produce"></jsp:useBean>
	<div>
		<ul>
<!-- 	注意这里的property里面的属性不是和Produce的属性对应的,而是和Produce的getXXXX函数中的XXXX对应的 -->
<!-- 	比如改变Produce中的属性值name——>nnnn,不会报错, -->
<!-- 	但是将Produce中的getName()函数的名字变为getNamex(),就会报错,说找不到name -->
<!-- 	将property中药寻找的属性值变为和getNamex()对应的namex之后,就会正常显示 -->
		<li>商品名称:<jsp:getProperty property="namex" name="produce"/></li>
		<li>价格:<jsp:getProperty property="price" name="produce"/></li>
		<li>数量:<jsp:getProperty property="number" name="produce"/></li>
		<li>厂址:<jsp:getProperty property="factoryAdd" name="produce"/></li>
		</ul>
	</div>
</body>
</html>

然后是设置类中属性的index.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Produce"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>login</title>
</head>
<body>
	<jsp:useBean id="produce" class="com.song.bean.Produce"></jsp:useBean>
	<jsp:setProperty property="name" name="produce" value="洗衣机"/>
	<jsp:setProperty property="price" name="produce" value="8888.8"/>
	<jsp:setProperty property="number" name="produce" value="80"/>
	<jsp:setProperty property="factoryAdd" name="produce" value="北京市朝阳区"/>
	
	<div>
		<ul>
<!-- 	注意这里的property里面的属性不是和Produce的属性对应的,而是和Produce的getXXXX函数中的XXXX对应的 -->
<!-- 	比如改变Produce中的属性值name——>nnnn,不会报错, -->
<!-- 	但是将Produce中的getName()函数的名字变为getNamex(),就会报错,说找不到name -->
<!-- 	将property中药寻找的属性值变为和getNamex()对应的namex之后,就会正常显示 -->
		<li>商品名称:<jsp:getProperty property="name" name="produce"/></li>
		<li>价格:<jsp:getProperty property="price" name="produce"/></li>
		<li>数量:<jsp:getProperty property="number" name="produce"/></li>
		<li>厂址:<jsp:getProperty property="factoryAdd" name="produce"/></li>
		</ul>
	</div>
</body>
</html>

2.2、JavaBean在page  request session  application 的生命周期的设置

这里举了一个填写person类信息的例子
首先上Person类,他有四个私有属性和get/set方法

package com.song.bean;

public class Person {
	private String name;
	private int age;
	private String sex;
	private String add;

	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 String getSex() {
		return sex;
	}

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

	public String getAdd() {
		return add;
	}

	public void setAdd(String add) {
		this.add = add;
	}

}

然后是在index.jsp页面中填写属性值
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Produce"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index</title>
</head>
<body>
	<form action="reg.jsp" method="post">
		<table width="400" align="center" height="200" border="1">
			<tr>
				<td align="center" colspan="2" height="40"><b>添加用户信息</b>
				</td>
			</tr>
			<!-- 	这里的input中的name里的参数需要和person类的变量对应,方便submit传输到reg.jsp中,
	然后使用setProperty方法一次接受全部的参数,并且传递给在reg.jsp页面中实例化的person对象中 -->
			<tr>
				<td align="right">姓名:</td>
				<td><input type="text" name="name">
				</td>
			</tr>
			<tr>
				<td align="right">年龄:</td>
				<td><input type="text" name="age">
				</td>
			</tr>
			<tr>
				<td align="right">性别:</td>
				<td><input type="text" name="sex">
				</td>
			</tr>
			<tr>
				<td align="right">住址:</td>
				<td><input type="text" name="add">
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="添加">
				</td>
			</tr>
		</table>

	</form>
</body>
</html>

然后是在reg.jsp页面中将刚刚输入的属性值赋给实例化的person,然后显示在页面中
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>reg</title>
</head>
<body>
	<%
		request.setCharacterEncoding("UTF-8");
	%>
	<jsp:useBean id="person" class="com.song.bean.Person" scope="page">
		<!-- 这里调用Person类,然后以person实例化,在后面的使用中, -->
		<!-- 这个person和后面的jsp:set/getPropert中的name里面的person相对应 ,后面的property是对应于这个person的属性方法-->

		<!-- 此处的   *  代表一次接受所有的参数        输入input中的name中的参数,需要和jsp:set/getProperty 中的property中的参数相对应 -->
		<jsp:setProperty name="person" property="*" />
	</jsp:useBean>

	<table width="400" align="center">
		<tr>
			<td align="right">姓名:</td>
			<td><jsp:getProperty property="name" name="person" /></td>
		</tr>
		<tr>
			<td align="right">年龄:</td>
			<td><jsp:getProperty property="age" name="person" /></td>
		</tr>
		<tr>
			<td align="right">性别:</td>
			<td><jsp:getProperty property="sex" name="person" /></td>
		</tr>
		<tr>
			<td align="right">住址:</td>
			<td><jsp:getProperty property="add" name="person" /></td>
		</tr>
	</table>
</body>
</html>

2.3另一个例子,电子时钟
首先建立一个DateBean的java类

package com.song.bean;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateBean {
	private String dateTime;
	private String week;
	private Calendar calendar = Calendar.getInstance();

	/**
	 * 获取当前日期以及时间
	 * 
	 * @return日期及时间的字符串
	 */
	public String getDateTime() {
//		这里需要从Calendar.getInstance()调用时间,而不是使用类的属性calendar,因为后者会导致时间固定为类实例化的时间(个人理解)
		Date currDate = Calendar.getInstance().getTime();
		SimpleDateFormat sdf = new SimpleDateFormat("yyy年MM月dd日  HH点mm分ss秒");
		dateTime = sdf.format(currDate);
		return dateTime;
	}

	/**
	 * 获取今天是星期几
	 * 
	 * @return 返回星期几字符串
	 */
	public String getWeek() {
		String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		int index = calendar.get(Calendar.DAY_OF_WEEK);
		week = weeks[index - 1];
		return week;
	}

}

然后再index.jsp中调用这个类,注意因为要达到时间随动效果所以要额外加入一行
<meta content="1" http-equiv="Refresh">
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Produce"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index</title>
<style type="text/css">
#clock {
	width: 420px;
	height: 80px;
	backgroung: #E0E0E0;
	font-size: 25px;
	font-weight: bold;
	border: sold 5px orange;
	padding: 20px;
}

#week {
	padding-top: 15px;
	color: #0080FF;
}
</style>
<meta content="1" http-equiv="Refresh">
</head>
<body>
	<jsp:useBean id="date" class="com.song.bean.DateBean"
		scope="application"></jsp:useBean>
	<div align="center">
		<div id="clock">
			<div id="time">
				<jsp:getProperty property="dateTime" name="date" />
			</div>
			<div id="week">
				<jsp:getProperty property="week" name="date" />
			</div>
		</div>
	</div>
</body>
</html>

2.4最后一个例子 
填写表单,将数据传递给后一个页面,然后将数据赋给实例化的paper,再利用javabean中的convert对数据做转换
先上Paper类,负责接收和输出数据

package com.song.bean;

public class Paper {
	private static final long seriVersionUID = 1L;
	private String[] languges;
	private String[] technics;
	private String[] parts;

	public static long getSeriversionuid() {
		return seriVersionUID;
	}

	public String[] getLanguges() {
		return languges;
	}

	public void setLanguges(String[] languges) {
		this.languges = languges;
	}

	public String[] getTechnics() {
		return technics;
	}

	public void setTechnics(String[] technics) {
		this.technics = technics;
	}

	public String[] getParts() {
		return parts;
	}

	public void setParts(String[] parts) {
		this.parts = parts;
	}
}

然后是数据转化的类Convert

package com.song.bean;

public class Convert {

	/**
	 * 将数组转化为字符串
	 * 
	 * @param arr 数组
	 * @return 字符串
	 */
	public String arr2str(String[] arr) {
		StringBuffer sb = new StringBuffer();
		if (arr != null && arr.length > 0) {
			for (String s : arr) {
				sb.append(s);
				sb.append(",");
			}
			if (sb.length() > 0) {
				sb = sb.deleteCharAt(sb.length() - 1);
			}
		}
		return sb.toString();
	}

}

下面是index.jsp也就是填写表达的界面
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="com.song.bean.Produce"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>index</title>
<style type="text/css">
</style>
</head>
<body>
	<form name="form1" action="reg.jsp" method="post">

		<div>
			<h1>调查问卷</h1>
			<hr />
			<ul>
				<li>你经常使用哪种开发语言:</li>
				<li><input type="checkbox" name="languges" value="JAVA">JAVA
					<input type="checkbox" name="languges" value="PHP">PHP 
					<input type="checkbox" name="languges" value=".NET">.NET 
					<input type="checkbox" name="languges" value="VC++">VC++
				</li>
			</ul>
			<ul>
				<li>你目前所掌握的技术:</li>
				<li><input type="checkbox" name="technics" value="HTML">HTML
					<input type="checkbox" name="technics" value="JAVA BEAN">JAVA BEAN 
					<input type="checkbox" name="technics" value="JSP">JSP
					<input type="checkbox" name="technics" value="SERVLET">SERVLET
				</li>
			</ul>
			<ul>
				<li>你学习中那一部分感觉有困难:</li>
				<li>
					<input type="checkbox" name="parts" value="JSP">JSP
					<input type="checkbox" name="parts" value="STRUTS">STRUTS
				</li>
			</ul>
			<input type="submit" value="提交">
		</div>
	</form>
</body>
</html>

然后是数据展示页面,负责接收index.jsp传输进来的数据,然后赋值给实例化的paper,在使用convert中的函数对数据进行转化,输出

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>reg</title>
</head>
<body>
	<jsp:useBean id="paper" class="com.song.bean.Paper"></jsp:useBean>
	<jsp:useBean id="convert" class="com.song.bean.Convert"></jsp:useBean>
	<jsp:setProperty property="*" name="paper"/>
	<div>
	<h1>调查结果</h1>
	<hr/>
	<ul>
		<li>你经常使用的编程语言:<%=convert.arr2str(paper.getLanguges()) %></li>
		<li>你目前所掌握的技术:<%=convert.arr2str(paper.getTechnics()) %></li>
		<li>你学习中那一部分感觉有困难:<%=convert.arr2str(paper.getParts()) %></li>
	</div>
	
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值