实验二JavaBean在JSP中的应用(第2次实验,2学时,设计性)一、实验目的和要求1.理解JavaBean的含义;2.掌握JavaBean的编写方法:3.熟练JavaBean在JSP中的使用方法。二、实验内容使用JSP和JavaBean实现一个简易的计算器。要求:实现基本的加减乘除运算:并且,进行除法运算时,当除数为零时要给出错误提示。三、实验原理1.JavaBean规范:·JavaBean必须声明为public类型,类名与文件名相同。·JavaBean的属性一般定义为private类型。·属性应该由一组读写方法(getXxx和setXxx)来访问。·必须有一个无参构造方法。2.在JSP下使用JSP动作访问JavaBean:·<jsp:useBean>:使用JavaBean·<jsp:setProperty>:设置属性值<jsp:getProperty>:获取属性值四、实验步骤1.打开Eclipse,File->New->DynamilWebProject,命名test2。2.在WebContent目录下新建calculator.jsp和error.jsp。3.在JavaResources目录下新建class(JavaBean):cn.edu.ycu.sxxy.beans.calculator类。4.在web.xml中进行错误页面内容的配置;5.测试运行。五、参考程序1.计算器页面calculator.jsp<%@page language-"java"contentType-"text/htmL;charset=UTF-8'pageEncoding="UTF-8"%><%@page errorPage="error.jsp"%><!DOCTYPEhtml PUBLIC"-//W3C//DTDHTML 4.o1Transitional//EN'"http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content-"text/htmL;charset=UTF-8"><title>使用SP+JavaBean实现一个简易的计算器</title></head>
1 实验二 JavaBean 在 JSP 中的应用 (第 2 次实验,2 学时,设计性) 一、实验目的和要求 1. 理解 JavaBean 的含义; 2. 掌握 JavaBean 的编写方法; 3. 熟练 JavaBean 在 JSP 中的使用方法。 二、实验内容 使用 JSP 和 JavaBean 实现一个简易的计算器。要求:实现基本的加减乘除运算;并且, 进行除法运算时,当除数为零时要给出错误提示。 三、实验原理 1. JavaBean 规范: JavaBean 必须声明为 public 类型,类名与文件名相同。 JavaBean 的属性一般定义为 private 类型。 属性应该由一组读写方法(getXxx 和 setXxx)来访问。 必须有一个无参构造方法。 2. 在 JSP 下使用 JSP 动作访问 JavaBean: • <jsp:useBean>:使用 JavaBean • <jsp:setProperty>:设置属性值 • <jsp:getProperty>:获取属性值 四、实验步骤 1. 打开 Eclipse,File->New->Dynamil Web Project,命名 test2。 2. 在 WebContent 目录下新建 calculator.jsp 和 error.jsp。 3. 在 Java Resources 目录下新建 class(JavaBean):cn.edu.ycu.sxxy.beans.calculator 类。 4. 在 web.xml 中进行错误页面内容的配置; 5. 测试运行。 五、参考程序 1. 计算器页面 calculator.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page errorPage="error.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>使用JSP + JavaBean实现一个简易的计算器</title> </head>
<body><jsp:useBean id="calcBean"class-"cn.edu.ycu.sxxy.beans.Calculator"x/jsp:useBean><jsp:setPropertyproperty-"*"name="calcBean"/>计算结果是:<jsp:getProperty property="firstName"name="calcBean"/><jsp:getProperty property="operator"name="calcBean"/><jsp:getProperty property="secondName"name="calcBean"/>=<jsp:getProperty property="result"name="calcBean"/><hr><formaction=""method="post"><tablestyle-"text-aiign:center;"><tr><tdcolspan="2">简单的计算器</td></tr><tr><td>第一个参数</td><td><inputtype="text"name="firstName"/></td></tr><tr><td><selectname="operator"<option value="+">+</option><optionvalue="_">-</option><optionvalue="*">*</option><optionvalue="/">/</option></select></td></tr><tr><td>第二个数</td><td><input type="text"name="secondName"/>/td></tr><tr><td><buttonname-"calc"type-"submit">计算</button></td></tr></table></form></body></html>2.Calculatorjava(JavaBean类,实现具体的计算操作)package cn.edu.ycu.sxxy.beans;import java.math.BigDecimal;public class Calculator(private String firstName;private String secondName;private String operator;private String result;public Caculator()(this.firstName-"o";this.secondName ="o";this.operator = "+";this.result -"";
2 <body> <jsp:useBean id="calcBean" class="cn.edu.ycu.sxxy.beans.Calculator"></jsp:useBean> <jsp:setProperty property="*" name="calcBean" /> 计算结果是: <jsp:getProperty property="firstName" name="calcBean" /> <jsp:getProperty property="operator" name="calcBean" /> <jsp:getProperty property="secondName" name="calcBean" /> =<jsp:getProperty property="result" name="calcBean" /> <hr> <form action="" method="post"> <table style="text-align: center;"> <tr> <td colspan="2">简单的计算器</td> </tr> <tr> <td>第一个参数</td> <td><input type="text" name="firstName" /></td> </tr> <tr> <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="secondName" /></td> </tr> <tr> <td> <button name="calc" type="submit">计算</button> </td> </tr> </table> </form> </body> </html> 2. Calculator.java(JavaBean 类,实现具体的计算操作) package cn.edu.ycu.sxxy.beans; import java.math.BigDecimal; public class Calculator { private String firstName; private String secondName; private String operator; private String result; public Caculator() { this.firstName = "0"; this.secondName = "0"; this.operator = "+"; this.result = "";
return firstName;public String getFirstName()(public void setFirstName(String firstName)(this.firstName=firstName;)public String getSecondName()(returnsecondName:1public void setSecondName(String secondName)(this.secondName= secondName;)public String getoperator()(return operator:1public void setoperator(stringoperator)(this.operator =operator;)public String getResult()(calculate();return result;)public void setResult(String result) (this.result = result; }冰水*Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算双精度浮点型变量doub1e可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处一理*但是Double.valueof(String)和Float.valueof(String)会丢失精度。*所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。*public void calculate()BigDecimal a =new BigDecimal(firstName);BigDecimal b =new BigDecimal(secondName)if("+".equals(operator))(result = a.add(b).tostring();Jelseif("_".equals(operator))(result = a.subtract(b).tostring();Jelse if("*".equals(operator))result = a.multiply(b).tostring();Jelseif("/".equals(operator))(if(b.intValue()==o)(thrownewRuntimeException("被除数不能为零!");result=a.divide(b,10,BigDecimal.ROUND_HALF_DOWN).toString();//public BigDecimal divide(BigDecimal divisor, int scale,introundingMode)//三个参数分别为:BigDecimal除数,整数小数位数,整数舍入模式:四舍五入)13.error.jsp<%@ page language="java"contentType-"text/htmL; charset=UTF-8"pageEncoding="UTF-8"%><%@pageisErrorPage="true"%><!DOCTYPE htmlPUBLIC"-//W3C//DTD HTML 4.e1 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content-"text/htmL; charset=UTF-8"><title>Inserttitlehere</title></head><body>Sorry!出错了!!<br><%=exception.getMessage()%>
3 } public String getFirstName() { return firstName; } public void setFirstName(String firstName) {this.firstName = firstName; } public String getSecondName() { return secondName;} public void setSecondName(String secondName) {this.secondName = secondName;} public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public String getResult() { calculate(); return result; } public void setResult(String result) { this.result = result; } /** * Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运 算。 * 双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小 的数进行运算和处理。 * 一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处 理, * 但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。 * 所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。 */ public void calculate() { BigDecimal a = new BigDecimal(firstName); BigDecimal b = new BigDecimal(secondName); if("+".equals(operator)){ result = a.add(b).toString(); }else if("-".equals(operator)){ result = a.subtract(b).toString(); }else if("*".equals(operator)){ result = a.multiply(b).toString(); }else if("/".equals(operator)){ if (b.intValue()==0) { throw new RuntimeException("被除数不能为零!"); } result = a.divide(b,10,BigDecimal.ROUND_HALF_DOWN).toString(); //public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) //三个参数分别为:BigDecimal除数,整数小数位数,整数舍入模式:四舍五入) } } } 3. error.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> Sorry!出错了!!<br> <%= exception.getMessage() %>
</body></html>4.关于错误页面内容的配置:在web.xml中添加如下内容,捕获Exception:<error-page><exception-type>java.lang.Exception</exception-type><location>/error.jsp</location></error-page>运行结果如下:口使用JSP+JavaBean卖*【口蒙使用SP+JavaBean×+C☆localhost:8080/test2/calculatorjsp》C★@localhost:8080/test2/calculatorjsp<图【图文】第三方支付谷歌D运城学院百度9《Tomcat与图【图文】《W第三方支付-口谷款运城学院鲁百度9Tomcat与计算结果是:0+0=0计算结果是:55+33=88简单的计算器简单的计算器第一个参数第一个参数++第二个数第二个数计算计算使用JSP+JavaBean实>C☆localhost8080/test2/calculatorjspD谷D运城学院百座(Tomcat图【图文】(第三方支付计算结果是:0+0=0D Insert title herex简单的计算器Clocalhost:880/test2/calculatorjsp第一个参数1D谷款口运城学院会百度3《Tomcat与)圆【图文】《第三方支付Sorry!出错了!!第二个数0被除数不能为零!计算
4 </body> </html> 4. 关于错误页面内容的配置: 在 web.xml 中添加如下内容,捕获 Exception: <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> 运行结果如下: