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模式是不推荐使用的。

时间: 2024-07-29 19:58:47

java学习笔记—web计算器(36)的相关文章

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

Java学习笔记——动态代理

所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记--RMI"中的远程代理,其中客户端服务对象就是一个远程服务对象的代理,这个代理可以使得客户在操作时感觉像在操作本地对象一样,远程对象对于客户是透明的.我们可以看出这里的远程代理,是在程序中事先写好的,而本节我们要讨论的远程代理,是由JVM根据反射机制,在程序运行时动态生成的.(以上是本人的理解,如果有不正确的地

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName

java学习笔记10--泛型总结

java学习笔记系列: java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note10.html,转载