黑马程序员技术交流社区

标题: JSP内置标签-JavaBean标签疑问 [打印本页]

作者: hacket    时间: 2013-3-27 22:24
标题: JSP内置标签-JavaBean标签疑问
本帖最后由 hacket 于 2013-4-1 21:20 编辑
  1. JSP代碼:
  2. <div class="blockcode"><blockquote><%@ page language="java"  import="java.util.*"  pageEncoding="utf-8" %>
  3. <%@ page import="cn.zengfansheng.web.calculator.Calculator" %>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6.   <head>
  7.   </head>
  8.   <%--
  9.                   JSP计算器              
  10.   --%>
  11.   <body>  

  12.                   <%-- C --%>         
  13.                   <%-- 1.将取得的值存入JavaBean --%>
  14.                   <jsp:useBean          id="calculator"          class="cn.zengfansheng.web.calculator.Calculator"          scope="page"   />
  15.                   <%-- 将地址栏中的参数存入JavaBean --%>
  16.                   <jsp:setProperty property="*"  name="calculator" />
  17.                   
  18.                   <!-- <jsp:setProperty         property="firstNum"         name="calculator"         param="firstNum"/>
  19.                   <jsp:setProperty         property="operator"         name="calculator"         param="operator" />
  20.                   <jsp:setProperty         property="secondNum"         name="calculator"         param="secondNum" /> -->
  21.                   
  22.                 <%--2.处理计算结果--%>         
  23.                
  24.                         <%
  25.                                   calculator.operate();
  26.                           %>        

  27.                 <!-- 3.显示计算结果  -->
  28.                 计算结果是:
  29.                 <jsp:getProperty property="firstNum" name="calculator"/>
  30.                 <jsp:getProperty property="operator" name="calculator"/>
  31.                 <jsp:getProperty property="secondNum" name="calculator"/>=
  32.                   <jsp:getProperty property="result" name="calculator" />
  33.                   
  34.                   <%-- V --%>
  35.                   <hr />
  36.                             <form action="/myday10/calculator/calculator.jsp" method="get">
  37.                                 <table border="1px" align="center">
  38.                                         <tr>        
  39.                                                 <td>第一个参数:</td>
  40.                                                 <td><input type="text" name="firstNum" /></td>
  41.                                         </tr>
  42.                                         <tr>
  43.                                                 <td> 运算符:</td>
  44.                                                 <td>
  45.                                                         <select name="operator">
  46.                                                                 <option  value="+" selected>+</option>
  47.                                                                 <option  value="-">-</option>
  48.                                                                 <option  value="*">*</option>
  49.                                                                 <option  value="/">/</option>
  50.                                                         </select>
  51.                                                 </td>
  52.                                         </tr>
  53.                                         <tr>
  54.                                                 <td>第二个参数:</td>
  55.                                                 <td><input type="text" name="secondNum" /></td>
  56.                                         </tr>
  57.                                         <tr >
  58.                                                 <td colspan=2  align="center">
  59.                                                         <input type="submit" value="计算" />                                                        
  60.                                                 </td>
  61.                                         </tr>
  62.                                 </table>                  
  63.                           </form>
  64.   </body>
  65. </html>
复制代码
JavaBean代碼:
  1. package cn.zengfansheng.web.calculator;

  2. import java.math.BigDecimal;
  3. //        M
  4. public class Calculator {

  5.         double firstNum ;
  6.         double secondNum ;
  7.         char operator;
  8.         double result;
  9.         
  10.         public Calculator(){
  11.                 System.out.println("构造函数开始了");
  12.         }

  13.         public double getFirstNum() {
  14.                 System.out.println("getFirstNum success");
  15.                 return firstNum;
  16.                
  17.         }
  18.         public void setFirstNum(double firstNum) {
  19.                 this.firstNum = firstNum;
  20.                 System.out.println("setFirstNum success");
  21.         }
  22.         
  23.         
  24.         public double getSecondNum() {
  25.                 System.out.println("getSecondNum success");
  26.                 return secondNum;
  27.         }
  28.         public void setSecondNum(double secondNum) {
  29.                 this.secondNum = secondNum;
  30.                 System.out.println("setSecondNum success");
  31.         }
  32.         
  33.         
  34.         public char getOperator() {
  35.                 System.out.println("getOperator success");
  36.                 return operator;
  37.         }
  38.         public void setOperator(char operator) {
  39.                 this.operator = operator;
  40.                 System.out.println("setOperator success");
  41.         }
  42.         
  43.         
  44.         //结果保留小数点后一位
  45.         public double getResult() {
  46.                 System.out.println("getResult success");
  47.                 BigDecimal bd = new BigDecimal(this.result).setScale(2,BigDecimal.ROUND_HALF_UP);
  48.                 return bd.doubleValue();
  49.         }
  50.         public void setResult(double result) {
  51.                 this.result = result;
  52.                 System.out.println("setResult success");
  53.         }
  54.         
  55.         
  56.         public void operate(){
  57.                
  58.                 switch(this.operator){
  59.                         case '+':   this.result = this.firstNum+this.secondNum;break;
  60.                         case '-':        this.result = this.firstNum-this.secondNum;break;
  61.                         case '*':        this.result = this.firstNum*this.secondNum;break;
  62.                         case '/':        this.result = this.firstNum/this.secondNum;break;
  63.                 }
  64.                 System.out.println("operate success");
  65.         }
  66. }
复制代码
結果為:
  1. 构造函数开始了
  2. setOperator success
  3. setFirstNum success
  4. setSecondNum success
  5. setFirstNum success
  6. setOperator success
  7. setSecondNum success
  8. operate success
  9. getFirstNum success
  10. getOperator success
  11. getSecondNum success
  12. getResult success
复制代码
我想問一下,
存到JavaBean使用<jsp:setProperty property="*"  name="calculator" />時,爲什麽
setFirstNum()
setOperator()
setSecondNum()這個幾個方法會運行兩邊?




作者: hacket    时间: 2013-3-28 00:46
为啥还木有同志来看呢。
作者: 何衍其    时间: 2013-3-30 21:56
本帖最后由 何衍其 于 2013-3-30 22:06 编辑

把form中的name和JavaBean的属性名命名不一样时,就只会调用一次setFirstNum(),setOperator(),setSecondNum()

代码中修改的地方有:
  1. <!--<jsp:setProperty property="*" name="calculator" />-->

  2. <jsp:setProperty property="firstNum" name="calculator"  param="first"/>
  3. <jsp:setProperty property="operator"  name="calculator" param="ope" />
  4. <jsp:setProperty property="secondNum" name="calculator" param="second" />
复制代码
  1. <tr>
  2.     <td>第一个参数:</td>
  3.     <td><input type="text" name="first" /></td>
  4. </tr>
  5. <tr>
  6.     <td>运算符:</td>
  7.     <td><select name="ope">
  8.             <option value="+" selected>+</option>
  9.             <option value="-">-</option>
  10.             <option value="*">*</option>
  11.             <option value="/">/</option>
  12.     </select></td>
  13. </tr>
  14. <tr>
  15.     <td>第二个参数:</td>
  16.     <td><input type="text" name="second" /></td>
  17. </tr>
复制代码

作者: 陈丽莉    时间: 2013-3-31 22:06
请及时处理帖子~  继续追问,或将分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2