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="">
<tr align="center">
<td colspan="">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=""><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 == ){
                       throw new RuntimeException("被除数不能为0");
                   }
                   this.result = this.num1 / this.num2;
                   break;
        }
        // 对于计算的计算结果进行处理(四舍五入)
        BigDecimal big = new BigDecimal(this.result);
        // 操作
        big = big.setScale(, BigDecimal.ROUND_HALF_UP);
        // 取出操作好的数据
        this.result = big.doubleValue();
    }
}
以上的代码在JSP中直接出现了业务逻辑,因此不便于美工人员的后期维护,可见以上的MVC模式是不推荐使用的。
java学习笔记—web计算器(36)的更多相关文章
- Java学习笔记4
		
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
 - 《Java学习笔记(第8版)》学习指导
		
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
 - Java学习笔记--Swing用户界面组件
		
很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel lab ...
 - Java学习笔记31(IO:Properties类)
		
Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...
 - Java学习笔记心得——初识Java
		
初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...
 - 20155234 2016-2017-2第十周《Java学习笔记》学习总结
		
20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...
 - 20145316许心远《Java学习笔记(第8版)》课程总结
		
20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...
 - Java学习笔记之---Servlet
		
Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...
 - 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
		
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
 
随机推荐
- 什么是“堆”,"栈","堆栈","队列",它们的区别?
			
堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象.堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值: ·堆总是一棵完全二叉树. 将根节点最大的堆叫做最大堆 ...
 - java 序列化时排除指定属性
			
java 序列化对象如何排除指定属性呢? java 中序列化对象有多种方式:struts2 ,jackson,json-lib (1)使用struts2 json插件 依赖的jar包:struts2- ...
 - Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱
			
前情提要:由于苹果要求2015年2月1日上架的新app必须支持64位的arm64,旧的app也得在6月1日支持64位,来源.于是unity3d弄出了il2cpp这种花式的玩法来进行64位支持,而对于当 ...
 - springboot中的任务(异步任务--定时任务--邮件任务)
			
1.pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
 - 使用jedis2.8.0连接redis
			
下载了最新的jedis客户端jedis2.8.0,在网上找了找jedis使用连接池的工具类,拿来发现都是低版本的jedis写法: returnResource(); returnBrokenResou ...
 - Android内核的编译与测试
			
1.下载Android内核 source.android.com/source->Downloading and Building Building Kernels 大概要花2个小时,其源码在培 ...
 - Java程序设计19——类的加载和反射-Part-B
			
接下来可以随意提供一个简单的主类,该主类无须编译就可使用上面的CompileClassLoader来运行它. package chapter18; public class Hello { publi ...
 - mongo学习-TTL索引  过期数据
			
在mongo中我们可以设置文档的过期时间,超过时间,文档会自动删除.(2.x版本中 固定结合也支持,但是到了3.x中 固定集合这个索引不好用) 用法: 1.创建一个db:db.createColle ...
 - 四)Spring + Quartz
			
使用Quartz默认配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
 - Jmeter Cookie管理器  获取JSESSIONID
			
1.打开jmeter.抓包添加Web请求后,添加Cookie管理器.直接添加就行.值要不要都一样 添加值:${COOKIE_JSESSIONID 域:${server} 2.点击载入到当前脚本 3.到 ...