什么是JavaBean
JavaBean是一个遵循特定写法的java类
特点:
1.这个java类必须有一个无参的构造函数
2.属性必须私有化
3.私有化属性必须通过public方法暴露给其他程序(setter属性修改器/getter属性访问器)方法的命名必须遵守一定的命名规范
作用:
通常用于封装数据,其他程序可以通过反射技术实例化JavaBean对象
通过反射遵守命名规范的方法,获知JavaBean属性,进而调用属性保存数据
在JSP中使用javabean
JSP技术提供了三个关于javabean组件的动作元素(JSP标签)
<jsp:useBean>标签:查找或实例化一个JavaBean
<jsp:useBean id="beanName" class="package.class"
scope="page|request|session|application">body</jsp:useBean>
id指定JavaBean实例对象引用名称和存储在域范围的名称
class指定JavaBean的完整类名(必须带包名)
scope指定JavaBean实例对象所存储的域范围(默认是page)
body内容创建JavaBean实例对象才执行
<jsp:setProperty>:设置一个JavaBean的属性(为创建的javabean设置属性)
<jsp:setProperty name="xxx" property="*">?带的所有请求参数为bean赋值
param 用?带的请求参数赋值/支持?带的参数-->8种基本数据类型 不是基本数据类型可以接受表达式 value="<%=new Date() %>"
<jsp:getProperty>:获取一个JavaBean的属性 调用getter方法 读取属性值转换成字符串
插入输出的响应正文 null会输出"null"的字符串
JSP开发模式
JSP+JavaBean
业务逻辑不太复杂的web应用 JavaBean封装业务数据 JSP处理用户请求和显示数据
Servlet+JSP+JavaBean(MVC)
开发复杂的web应用 servlet处理用户请求 jsp显示数据 javabean封装数据
层次清晰 推荐
JSP+JavaBean 编写一个计算机页面
小数用BigDecimal精确计算
JSP页面
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>计算器</title>
</head>
<body style="text-align: center;">
<jsp:useBean id="calculatorBean" class="com.it.cat.CalculatorBean" />
<jsp:setProperty name="calculatorBean" property="*" />
<%
try{
calculatorBean.calculate();
}catch(Exception e){
out.write(e.getMessage());
}
%>
<br/>-------------------------------------------<br/>
计算结果是:
<jsp:getProperty name="calculatorBean" property="firstNum"/>
<jsp:getProperty name="calculatorBean" property="operator"/>
<jsp:getProperty name="calculatorBean" property="secondNum"/>
=
<jsp:getProperty name="calculatorBean" property="result"/>
<br/>-------------------------------------------<br/>
<form action="/test/calculator.jsp" method="post" >
<table width="40%" border="1" style="margin: 0 auto;">
<tr>
<td colspan="2">简单的计算器</td>
</tr>
<tr>
<td>第一个参数</td>
<td>
<input type="text" name="firstNum">
</td>
</tr>
<tr>
<td>操作符</td>
<td>
<select name="operator">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
</td>
</tr>
<tr>
<td>第二个参数</td>
<td>
<input type="text" name="secondNum">
</td>
</tr>
<tr>
<td>
<input type="submit" value="计算">
</td>
</tr>
</table>
</form>
</body>
</html>
JavaBeanpackage com.it.cat;
import java.math.BigDecimal;
//封装计算器数据的bean
public class CalculatorBean {
private String firstNum = "0";
private String operator = "+";
private String secondNum = "0";
private String result;
public String getFirstNum() {
return firstNum;
}
public void setFirstNum(String firstNum) {
this.firstNum = firstNum;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getSecondNum() {
return secondNum;
}
public void setSecondNum(String secondNum) {
this.secondNum = secondNum;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public void calculate(){
BigDecimal first = new BigDecimal(this.firstNum);
BigDecimal second = new BigDecimal(this.secondNum);
switch (this.operator) {
case "+":{
this.result = first.add(second).toString();
break;
}
case "-":{
this.result = first.subtract(second).toString();
break;
}
case "*":{
this.result = first.multiply(second).toString();
break;
}
case "/":{
if(second.doubleValue()==0){
throw new RuntimeException("被除数不能为0!");
}
this.result = first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString();
break;
}
default:
throw new RuntimeException("运算符只能是:+ - * / ");
}
}
}