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即可。
进入页面如下:
输入第一个和第二个操作数,选择任意操作符点击Calculate
得到以下结果: