目录
- 5.1 编写JavaBean
- 5.2 在JSP中使用JavaBean
- 5.2.1 动作标记useBean
- Rectangle类
- example5_2.jsp测试文件
- 5.2.2 动作标记getProperty
- NewRetangle类
- useGetProperty.jsp
- 5.2.4 实践环节---使用JavaBean计算三角形周长和面积
5.1 编写JavaBean
- JavaBean的定义
是遵循一定标准、用Java语言编写的一个类,该类的一个实例称为一个JavaBean,称Bean。JavaBean具有可重用、升级方便,不依赖平台等特点。JavaBean又可以分为业务bean和数据bean。业务bean用于封装业务逻辑,数据库操作:数据bean用于封装数据。
- 简单来说,编写一个javabean就是编写一个java类。当然,也不是简单的java类那么简单,还需要遵循以下要求
- 类成员变量必须要有获取和更改其值的方法。拿name属性来书,必须提供以下两种方法
getName():用来获取属性name
setName():用来设置属性name
- 对于boolean类型的成员变量,允许使用is去代替get或是set
- 类中方法的访问权限必须是public
- 如果有构造方法,必须有一个无参构造方法。
//对于Car类来说,必须要有以下构造方法
public Car(){
// 内容视情况而定,可以不写,也可以直接在这里给成员变量进行赋值
}
5.2 在JSP中使用JavaBean
- 使用前准备,使用page指令的import导入创建的bean的类
<%@ page import=“com.bean.*”>
5.2.1 动作标记useBean
- useBean有点类似于Java的实例化
分析下面的程序:
<jsp:useBean id="bean的名字" class="创建Bean的类" scope="bean的有效范围" />
id有点类似于我们所写的类的实例化,例如车中宝马这个实例
class有点类似于Car引用
scope用来表示用用范围
- 下面是我创建的某个例子,有一个Rectangle的java类和一个名为example5_2的测试文件。
Rectangle类
package com.bean;
public class Rectangle {
private double length;
private double width;
public Rectangle(){
length =20;
width = 10;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double computerArea(){
return length*width;
}
public double computerLength(){
return (length+width)*2;
}
}
example5_2.jsp测试文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>example5_2.jsp</title>
</head>
<body>
<jsp:useBean id="rectangle" class="com.bean.Rectangle" scope="page"/>
<p>矩形的长是:<%=rectangle.getLength()%></p>
<p>矩形的宽是:<%=rectangle.getWidth()%></p>
<p>矩形的面积是:<%=rectangle.computerArea()%></p>
<p>矩形的周长是:<%=rectangle.computerLength()%></p>
</body>
</html>
运行结果:
5.2.2 动作标记getProperty
- 通过getProperty动作标记可以可以获取你创建的实例的属性,语法格式如下
<jsp:getProperty name= "bean的名字" property= "bean的属性" />
或者
<jsp:getProperty name="bean的名字" property ="bean的属性" />
</jsp:getproperty>
- 如果将其放在jsp文件中,那么其值显示就为对应属性的值
- 为了验证以上说法,我创建了NewRetangle类和useGetProperty.jsp文件
NewRetangle类
package com.bean;
public class NewRectangle {
private double length;
private double width;
double rectangleArea;
double rectangleLength;
public NewRectangle(){
length = 20;
width =10;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
}
useGetProperty.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>useGetProperty.jsp</title>
</head>
<body>
<jsp:useBean id="pig" class="com.bean.NewRectangle" scope="page"/>
<%pig.setLength(30);
pig.setWidth(20);
pig.computerArea();
pig.computerLength();%>
<p>矩形的长是<jsp:getProperty name="pig" property="length"/></p>
<p>矩形的宽是<jsp:getProperty name="pig" property="width"/></p>
</body>
</html>
运行结果:
5.2.4 实践环节—使用JavaBean计算三角形周长和面积
- 创建一个Java类Triangle
package com.bean;
public class Triangle {
private double edge1;
private double edge2;
private double edge3;
public double getEdge3() {
return edge3;
}
public void setEdge3(double edge3) {
this.edge3 = edge3;
}
public double getEdge2() {
return edge2;
}
public void setEdge2(double edge2) {
this.edge2 = edge2;
}
public double getEdge1() {
return edge1;
}
public void setEdge1(double edge1) {
this.edge1 = edge1;
}
public double computerPerimeter(){
return edge1+edge2+edge3;
}
}
- 创建输入页面,用来输入三角形的三边inputTriangle.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>inputTriangle.jsp</title>
</head>
<body>
<form action="showTriangle.jsp" name="" method="post">
<p>输入三角形三边</p>
边A<input name="edg1" type="text"><br>
边B<input name="edg2" type="text"><br>
边C<input name="edg3" type="text"><br>
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重新输入">
</form>
</body>
</html>
- 创建输出页面,通过setProperty,setProperty等动作标记得出结果showTriangle
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>showTriganle.jsp</title>
</head>
<body>
<%-- 获取表单提交的三条边--%>
<%
double edg1=Float.parseFloat(request.getParameter("edg1"));
double edg2=Float.parseFloat(request.getParameter("edg2"));
double edg3=Float.parseFloat(request.getParameter("edg3"));
%>
<%--进行三角形判断--%>
<%--创建三角形对象--%>
<jsp:useBean id="tri1" class="com.bean.Triangle" scope="page"/>
<%--设置三边长度--%>
<jsp:setProperty name="tri1" property="edge1" value="<%=edg1%>"/>
<jsp:setProperty name="tri1" property="edge2" value="<%=edg2%>"/>
<jsp:setProperty name="tri1" property="edge3" value="<%=edg3%>"/>
<p>三角形的三边是:</p>
边A:<jsp:getProperty name="tri1" property="edge1"/>
边B:<jsp:getProperty name="tri1" property="edge2"/>
边C:<jsp:getProperty name="tri1" property="edge3"/><br><br>
<%
//判断是否能构成三角形
if (edg1+edg2>edg3&&edg1+edg3>edg2&&edg3+edg2>edg1){
out.print("这三边能构成三角形吗? true<br><br>");
out.print("周长是:"+tri1.computerPerimeter());
}else {
out.print("这三边能构成三角形吗? false<br>");
}
%>
</body>
</html>