JavaBean在Java Web开发中主要用来处理业务逻辑,JSP中的复杂数据操作通常会交给JavaBean来操作,JSP只从JavaBean中取出最终结果显示到客户端。这样可以很大程度上减轻JSP中大量使用Java脚本的负担。

我们看一个网页版计算器的例子,我们先写一个可以执行加减乘除运算的javaBean:

Calculator.java

package bean; public class Calculator { private String firOpd; private String sndOpd; private double result; private String operator; public void setFirOpd(String firOpd) { this.firOpd = firOpd;
    } public String getFirOpd() { return firOpd;
    } public void setSndOpd(String sndOpd) { this.sndOpd = sndOpd;
    } public String getSndOpd() { return sndOpd;
    } public void setOperator(String operator) { this.operator = operator;
    } public String getOperator() { return operator;
    } public double getResult() { return result;
    } public void calculate() { double fir = Double.parseDouble(firOpd); double snd = Double.parseDouble(sndOpd); try { if(operator.equals("+"))
                result = fir + snd; else if(operator.equals("-"))
                result = fir - snd; else if(operator.equals("*"))
                result = fir * snd; else if(operator.equals("/"))
                result = fir / snd;
        }catch (ArithmeticException ae) {
            ae.printStackTrace();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

接下来我们写一个jsp页面来调用这个javaBean: 
cal.jsp

"text/html;charset=UTF-8" language="java" %> <jsp:useBean id="cal" scope="request" class="bean.Calculator"> <jsp:setProperty name="cal" property="*"/> jsp:useBean> <html> <head> <title>Web Calculatortitle> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> head> <body> String CalRst = null;
      try {
          cal.calculate();
          CalRst = cal.getFirOpd() + cal.getOperator() + cal.getSndOpd() + "=" + cal.getResult();
      }catch (Exception e) {
          CalRst = e.getMessage();
      }
    %>  <form method=get action="cal.jsp"> <table> <tr> <td>简单计算器td> tr> <tr> <td>Result : td> <td><input type="text" name="result" value=> />td> tr> <tr> <td>FstOpd : td> <td><input type="text" name="firOpd" />td> tr> <tr> <td>Operator : td> <td><select name="operator"> <option value="+">+option> <option value="-">-option> <option value="*">*option> <option value="/">/option> select> td> tr> <tr> <td>SndOpd : td> <td><input type="text" name="sndOpd" />td> tr> <tr> <td colspan="2" bgcolor="#eeeeee"><input type=submit value=Calculate />td> tr> table> form> body> html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

我们先来看下cal.jsp这段代码,这里顺便补充说明JSP基本语法(三)中剩余的三个动作指令。

3行,JSP动作标签,格式为:

 

这个标签的用途为创建一个javaBean的实例并指定该实例的名称。创建该实例的类由class指定,该JavaBean的作用范围由scope指定,实例名由id指定。

在本例中,创建一个Calculator类实例,该实例名为”cal”,作用域为”request”,表明该JavaBean只能用于当前的用户请求中。

4行,JSP动作标签。格式为:

 

作用是给cal的属性赋值。如果property的值为*,表示用页面输入框内的值,给cal所有对应的属性赋值。本例中,4个输入框的name分别为result,firOpd,operator,sndOpd依次对应Calculator类中的4个同名变量。要注意,输入框的name和javaBean中的属性名要严格对应!如果property的值不为*,则要同时指明要赋的cal中的变量名和所要赋的值。如。

14~22行为嵌入的java代码,调用cal的实例方法calculate()根据操作数和运算符计算出结果,见Calculator.java的37~53行。

24~56行创建一个输入表单,提交给cal.jsp处理。

执行方法:

  • 在Tomcat目录下的webapps目录下创建一个新的文件夹”Calculator”。
  • 在Calculator目录内创建cal.jsp,代码见上文。
  • 在Calculator目录下创建WEB-INF文件夹。
  • 进入WEB-INF文件夹创建classes文件夹。
  • 进入classes文件夹创建bean文件夹。
  • 进入bean文件夹,放入Calculator.java编译好的Calculator.class文件。
  • 启动Tomcat,在浏览器中输入localhost:8080/Calculator/cal.jsp即可。

进入页面如下:

    JSP+JavaBean web计算器-LMLPHP

输入第一个和第二个操作数,选择任意操作符点击Calculate

    JSP+JavaBean web计算器-LMLPHP

得到以下结果:

    JSP+JavaBean web计算器-LMLPHP

12-18 12:45