第七章 JavaBean技术.docx

上传人:b****6 文档编号:3321276 上传时间:2022-11-21 格式:DOCX 页数:25 大小:135.12KB
下载 相关 举报
第七章 JavaBean技术.docx_第1页
第1页 / 共25页
第七章 JavaBean技术.docx_第2页
第2页 / 共25页
第七章 JavaBean技术.docx_第3页
第3页 / 共25页
第七章 JavaBean技术.docx_第4页
第4页 / 共25页
第七章 JavaBean技术.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

第七章 JavaBean技术.docx

《第七章 JavaBean技术.docx》由会员分享,可在线阅读,更多相关《第七章 JavaBean技术.docx(25页珍藏版)》请在冰豆网上搜索。

第七章 JavaBean技术.docx

第七章JavaBean技术

【7.1.1JavaBean概述】

纯JSP开发方式

JSP+JavaBean开发方式

【7.1.2JavaBean种类】

JavaBean:

支持组件的功能。

Java中的组件叫JavaBean。

Java(咖啡)Bean(豆)。

狭义的JavaBean是具有一个界面形式的体现;广义的JavaBean是普通的Java类。

满足两点要求:

(1)属性名第一个字母都是小写的,private的;

(2)一般具有getters和setters方法。

原因就是符合面向对象的特性,所以属性是私有的,别人不能访问,从而隐藏细节。

Getters是读取属性的值,setters是修改属性的值。

如果属性只能读不能改,那么只写getters方法即可。

如果属性只能改不能读,那么只写setters方法即可。

一般web中使用的JavaBean不具有图形界面的表现。

一般是用来实现某一业务逻辑或者取得特定结果。

【例7.1】封装邮箱地址的JavaBean

【Email.java】

packagecom.lyq.bean;

importjava.io.Serializable;

publicclassEmailimplementsSerializable{

//serialVersionUID值

privatestaticfinallongserialVersionUID=1L;

//Email地址

privateStringmailAdd;

//是否是一个标准的Email地址

privatebooleaneamil;

/**

*默认无参的构造方法

*/

publicEmail(){

}

/**

*构造方法

*@parammailAddEmail地址

*/

publicEmail(StringmailAdd){

this.mailAdd=mailAdd;

}

/**

*是否是一个标准的Email地址

*@return布尔值

*/

publicbooleanisEamil(){

//正则表达式,定义邮箱格式

Stringregex="\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

//matches()方法可判断字符串是否与正则表达式匹配

if(mailAdd.matches(regex)){

//eamil为真

eamil=true;

}

//返回eamil

returneamil;

}

publicStringgetMailAdd(){

returnmailAdd;

}

publicvoidsetMailAdd(StringmailAdd){

this.mailAdd=mailAdd;

}

}

【index.jsp】

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

邮箱认证系统

邮箱地址:

【result.jsp】

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

<%@pageimport="com.lyq.bean.Email"%>

Inserttitlehere

<%

//获取邮箱地址

StringmailAdd=request.getParameter("mailAdd");

//实例化Email,并对mailAdd赋值

Emailemail=newEmail(mailAdd);

//判断是否是标准的邮箱地址

if(email.isEamil()){

out.print(mailAdd+"
是一个标准的邮箱地址!


");

}else{

out.print(mailAdd+"
不是一个标准的邮箱地址!


");

}

%>

返回

在地址栏输入

http:

//localhost:

8080/ch5_example/index.jsp

得到

得到

【7.2.1获取JavaBean属性信息】

jsp:

useBean

在JSP中使用JavaBean。

一般来说,JSP或者Servlet里面的JavaBean具有的特点是:

(1)属性名第一个字母都是小写

(2)每个属性有对应的getter和setter方法。

此外,Bean的特点还有:

必须要有一个不带参数的构造器,在JSP元素创建Bean时会调用空构造器。

格式:

useBeanid=””scope=””class=””type=””/>

useBean…>

setProperty…>

getProperty…>

useBean>

【例】

新建JavaBean:

Produce

get和set方法可以自动生成。

生成默认的构造器。

【Produce.java】

packagecom.lyq.bean;

publicclassProduce{

privateStringname="电吉他";

privatedoubleprice=1880.5;

privateintcount=100;

privateStringfactoryAdd="山东济南";

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicdoublegetPrice(){

returnprice;

}

publicvoidsetPrice(doubleprice){

this.price=price;

}

publicintgetCount(){

returncount;

}

publicvoidsetCount(intcount){

this.count=count;

}

publicStringgetFactoryAdd(){

returnfactoryAdd;

}

publicvoidsetFactoryAdd(StringfactoryAdd){

this.factoryAdd=factoryAdd;

}

publicProduce(){

}

}

【index.jsp】

<%@pagelanguage="java"contentType="text/html;charset=GB18030"

pageEncoding="GB18030"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

useBeanid="produce"class="com.lyq.bean.Produce">

useBean>

setPropertyproperty="name"name="produce"value="洗衣机"/>

setPropertyproperty="price"name="produce"value="888"/>

setPropertyproperty="count"name="produce"value="56"/>

setPropertyproperty="factoryAdd"name="produce"value="山东济南"/>

  • 商品名称:

    getPropertyproperty="name"name="produce"/>

  • 价格:

    getPropertyproperty="price"name="produce"/>

  • 数量:

    getPropertyproperty="count"name="produce"/>

  • 厂址:

    getPropertyproperty="factoryAdd"name="produce"/>

在地址栏输入

http:

//localhost:

8080/ch5_example/index.jsp

得到

加上表单部分【login.jsp】

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

添加产品信息

名称:

价格:

数量:

厂 址:

修改【index.jsp】

<%@pagelanguage="java"contentType="text/html;charset=GB18030"

pageEncoding="GB18030"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

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

useBeanid="produce"class="com.lyq.bean.Produce">

useBean>

setPropertyproperty="*"name="produce"/>

  • 商品名称:

    getPropertyproperty="name"name="produce"/>

  • 价格:

    getPropertyproperty="price"name="produce"/>

  • 数量:

    getPropertyproperty="count"name="produce"/>

  • 厂址:

    getPropertyproperty="factoryAdd"name="produce"/>

地址栏输入

http:

//localhost:

8080/ch5_example/login.jsp

得到

【补充说明】

1.

useBeanid="produce"class="com.lyq.bean.Produce">

useBean>

id:

使用这个JavaBean创建的一个对象名

相当于Produceproduce=newProduce();

2.

useBeanid="produce"class="com.lyq.bean.Produce">

useBean>

是标签语法。

Produceproduce=newProduce();

是Java语法。

3.

useBeanid=””scope=””class=””type=””/>

scope默认是page

type是对象的类型,如type=”java.lang.Object”

相当于Objectcb=newProduce();

一般情况下不指定type,则就是class类型的对象。

不存在父类指向子类对象的情况。

4.

setPropertyname="produce"property="price"value="888"/>

注意name指定的名称必须已经有这个对象。

这句话相当于

produce.setPrice(888)

5.

getPropertyname="produce"property="price"/>

相当于produce.getPrice()

6.

jsp:

useBean各个参数的含义:

●id:

对象实例名称

●scope:

Bean作用范围,默认是page

●class:

Bean的类名称

●type:

Bean实例类型,可以是本类,或其父类,或其实现的接口,默认为本类(多态)

scope各个取值的含义:

●page:

仅涵盖使用JavaBean的页面。

每次访问页面时,重新生成一个。

【CounterBean.java】

packagebean;

//JSP中使用JavaBean,要求这个Bean放在包里面。

importjava.io.Serializable;

publicclassCounterBeanimplementsSerializable{

privateintcount=0;

publicCounterBean(){}

publicintgetCount(){

count++;

returncount;

}

publicvoidsetCount(intcount){

this.count=count;

}

}

【PageBean.jsp】

useBeanid="counterBean"scope="page"class="bean.CounterBean"/>

CounterBeanscope="page"Example

count:

<%=counterBean.getCount()%>

<%--上下两句效果一样--%>

getPropertyname="counterBean"property="count"/>

在地址栏输入

http:

//localhost:

8080/servlet_example1/PageBean.jsp,结果为

刷新页面,输出内容不变。

●request:

有效范围仅限于使用JavaBean的请求

【RequestBean.jsp】

useBeanid="counterBean"scope="request"class="bean.CounterBean"/>

<%--

bean.CounterBeancounterBean=request.getAttribute("counterBean");

if(counterBean==null){

counterBean=newbean.CounterBean();

request.setAttribute("counterBean",counterBean);

}

--%>

CounterBeanscope="request"Example

--往当前request对应的bean中设置-->

<%counterBean.setCount(100);%>

<%--和RequestBean2.jsp用的是同一个request,也是同一个counterBean对象--%>

--测试结果是101-->

forwardpage="RequestBean2.jsp"/>

<%--和RequestBean2.jsp用的不是同一个request,也不是同一个counterBean对象--%>

--访问RequestBean.jsp,跳转到RequestBean2.jsp,因为和当前request不是同一个request-->

--则产生一个新的request,产生一个新的bean对象,测试结果是1而不是101-->

<%--response.sendRedirect("RequestBean2.jsp");--%>

【RequestBean2.jsp】

useBeanid="counterBean"scope="request"class="bean.CounterBean"/>

CounterBeanscope="request"Example

count:

<%=counterBean.getCount()%>

在地址栏输入

http:

//localhost:

8080/servlet_example1/RequestBean.jsp,结果为

修改【RequestBean.jsp】

useBeanid="counterBean"scope="request"class="bean.CounterBean"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1