javabean/jsp开发模式

什么是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>
JavaBean
package 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("运算符只能是:+ - * / ");
		}
		
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值