java学习笔记—web计算器(36)

MVC模式

模式主要的任务是帮助开发者解决一类问题。

MVC模式主要是用于规划你的网站的开发的一个基本的结构。

Servlet记住充当的是控制器层。cn.itcast.controller

Java类主要处理业务逻辑。cn.itcast.bean

JSP主要负责的是数据页面显示。

对于一个比较传统的且业务不是很复杂的网站应用那么完全没有必要分别使用以上三种技术。因此可以使用JSP+JavaBean直接处理。

案例一: Web计算器

1. 编辑一个cal.jsp页面

<body>
     <!-- 创建JavaBean对象 -->
     <jsp:useBean id="calculator" class="cn.itcast.beans.Calculator" scope="page"></jsp:useBean>
     <!-- 封装用户数据 -->
     <jsp:setProperty name="calculator" property="*"/>
     <!-- 计算结果 -->
     <% 
       try{
         calculator.calculate();
       }catch(Exception e){
         // 将异常对象存储在page域中
         pageContext.setAttribute("msg",e);
       }
     %>
     <form action="/day09/cal.jsp" method="post">
        <table align="center" border="1">
           <tr align="center">
             <td colspan="2">WEB计算器</td>
           </tr>  
           <tr>
             <td>操作数1:</td>
             <td><input type="text" name="num1"></td>
           </tr>        
           <tr>
             <td>操作符:</td>
             <td>
                <select name="option">
                   <option value="+">+</option>
                   <option value="-">-</option>
                   <option value="*">*</option>
                   <option value="/">/</option>
                </select>
             </td>
           </tr>   
           <tr>
             <td>操作数2:</td>
             <td><input type="text" name="num2"></td>
           </tr>   
           <tr align="center">
             <td colspan="2"><input type="submit" value="计算"></td>
           </tr>  
        </table>
     </form>
     <br/>
     <hr/>
                    计算结果:
        <!-- 获取javabean中的值 -->
        <jsp:getProperty name="calculator" property="num1"/>
        <jsp:getProperty name="calculator" property="option"/>
        <jsp:getProperty name="calculator" property="num2"/>
        =
        <jsp:getProperty name="calculator" property="result"/>
     <hr/>
     <hr/>
                     错误信息:
        <% 
           Exception exp = (Exception)pageContext.getAttribute("msg");
           if(exp != null){
              out.write(exp.getMessage());
           }
        %>
     <hr/>
  </body>

2. 编写一个计算器的业务逻辑类Calculator.java

public class Calculator {
    // 指定属性
    private double num1 = 0.0;
    private char option = '+';
    private double num2 = 0.0;
    private double result = 0.0;
    // 提供一个计算的方式
    public void calculate(){
        switch (this.option) {
        case '+':  this.result = this.num1 + this.num2;
                   break;
        case '-':  this.result = this.num1 - this.num2;
                   break;
        case '*':  this.result = this.num1 * this.num2;
                   break;
        case '/':  
                   if(this.num2 == 0){
                       throw new RuntimeException("被除数不能为0");
                   }
                   this.result = this.num1 / this.num2;
                   break;
        }
        // 对于计算的计算结果进行处理(四舍五入)
        BigDecimal big = new BigDecimal(this.result);
        // 操作
        big = big.setScale(3, BigDecimal.ROUND_HALF_UP);
        // 取出操作好的数据
        this.result = big.doubleValue();
    }
}

以上的代码在JSP中直接出现了业务逻辑,因此不便于美工人员的后期维护,可见以上的MVC模式是不推荐使用的。

原文地址:https://www.cnblogs.com/zhenghongxin/p/4435161.html