1.在JSP页面开发的初级阶段 并没有框架与逻辑分层概念的产生 需要将java代码嵌入到网页中 对JSP页面的一些业务逻辑进行处理
这种开发方式看似简单 但如果将大量java代码嵌入到JSP页面中 会给后期的维护及修改带来很多问题 如果能使HTML代码和java代码相分离开来,将java代码单独封装成一个处理某种业务逻辑的类,然后在JSP页面中调用此类,则可以降低HTML代码和java代码之间的耦合度,提高程序的重用性和灵活性,这种与HTML代码相分离,而使用java代码封装的类,就是一个javabean组件
实例如下
package test; import java.io.Serializable; public class Email implements Serializable { private static final long serialVersionUID=1L; private String mailAdd; private boolean email; public Email() { } public Email(String mailAdd) { this.mailAdd=mailAdd; } public boolean isEmail() { String regex="\\w+([-+.']*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; if(mailAdd.matches(regex)) { email=true; } return email; } public String getMailAdd() { return mailAdd; } public void setMailAdd(String mailAdd) { this.mailAdd=mailAdd; } }
2:在javabean对象中 为了防止外部直接对javabean属性的调用 通常将javabean中的属性设置为私有的 但需要为其提供公共的访问方法
下面创建名称为produce的类 创建商品属性并且提供相应的方法
public class Produce{ private String name="电吉他"; private double price=1880.5; private int count=100; private String factoryAdd="广东省珠海市"; public String getName(){ return name; } public String getPrice(){ return price; } public int getCount(){ return count; } public String getFactoryAdd(){ return factoryAdd; } }
在JSP页面中获取商品javabean中的属性信息 该操作通过JSP动作标签进行获取
<jsp:useBean id="produce" class="com.lyq.bean.Produce"></jsp:useBean> <div> <ul> <li> 商品名称<jsp:getProperty property="name" name="produce"/> </li> <li> 价格<jsp:getProperty property="price" name="produce"/> </li> <li> 数量<jsp:getProperty property="count" name="produce"/> </li> <li> 厂址<jsp:getProperty property="factoryAdd" name="produce"/> </li> </ul> </div>
3:对javabean属性赋值
对javabean对象提供setxxx方法就可以在JSP页面中通过<jsp:setProperty>
对其进行赋值
创建对应的类和方法如下
package com.lyq.bean; public class Produce{ private String name; private dobule price; private int conut; private String factoryAdd; public String getName(){ return namel; } public void setName(String name){ this.name=name; } 省略了其他的getxxx和setxxx方法 大致相同 }
创建JSP文件 在该页面中实例化Produce对象 然后对其属性进行赋值并输出
<jsp:useBean id="produce" class="com.lyq.bean.Produce"></jsp:useBean> <jsp:setProterty proterty="name" name="produce" value="洗衣机"/> <jsp:setProterty proterty="price" name="produce" value="88.88"/> <jsp:setProterty proterty="count" name="produce" value="88"/> <jsp:setProterty proterty="factoryAdd" name="produce" value="华南理工大学"/> <div> <ul> <li> 商品名称<jsp:getProperty property="name" name="produce"/> </li> <li> 价格<jsp:getProperty property="price" name="produce"/> </li> <li> 数量<jsp:getProperty property="count" name="produce"/> </li> <li> 厂址<jsp:getProperty property="factoryAdd" name="produce"/> </li> </ul> </div>
在JSP页面中应用javabean非常简单 主要通过JSP动作标签<jsp:useBean>
<jsp:getProperty>
<jsp:setProterty>
来实现对javabean对象的操作
在javabean对象应用到JSP页面中时,javabean的生命周期可以自行进行设置 它存在于4种范围内 分别为 page ,request ,session, application 默认情况下作用于page范围内
4:解决中文乱码的JavaBean
在JSP页面中 处理中文字符经常会出现字符乱码的现象 特别是通过表单传递中文数据时容易产生 它的解决办法有很多
创建对字符编码进行处理的javabean 在该类中编写toString方法对字符编码进行转换
package.com.lyq.bean; import java.io.UnsupportedEncodingException; public class CharactorEncoding{ public CharactorEncoding(){ } public String toString(String str){ String text=""; if(str!=null&&!"".equals(str)){ try{ text=new String(str.getBytes("ISO-8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e){ e.printStackTrace(); } } return text; } }
在JSP页面中用来显示时间的JavaBean
javabean是用java语言所写成的可重用组件 它可以是一个实体类对象 也可以是一个业务逻辑的处理
同样javabean可以将数组转换成字符串
package con.lyq.bean; public class Convert{ public String arr2Str(String[] arr){ String Buffer 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(); } }