A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hacket 高级黑马   /  2013-3-27 22:24  /  1801 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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()這個幾個方法會運行兩邊?



评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
为啥还木有同志来看呢。
回复 使用道具 举报
本帖最后由 何衍其 于 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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
请及时处理帖子~  继续追问,或将分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马