Java web从入门到放弃(2)

来源:互联网 发布:华为p9的4g网络网速慢 编辑:程序博客网 时间:2024/05/16 14:27

第七章、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");//实例化EmailEmail 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>




原创粉丝点击