javabean/jsp开发模式

来源:互联网 发布:适合冥想的音乐 知乎 编辑:程序博客网 时间:2024/05/22 09:02

什么是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;//封装计算器数据的beanpublic 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("运算符只能是:+ - * / ");}}}