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创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- 关于directshow的SmartTee
可以通过CLSID_SmartTee创建: CComPtr<IBaseFilter> pSmartTee; // Create the Smart Tee (CLSID_SmartTee) ...
- PHP ImageMagick
简介: ImageMagick是用C语言开发图片处理程序.可以对图片进行改变大小.旋转.锐化.减色或增加特效等操作.对图片的操作,即可以通过命令行进行,也可以用C/C++.Perl.Jav ...
- IDEA00 IDEA知识点汇总
一.从头搭建IDEA开发环境 https://mp.weixin.qq.com/s/6jXHzkU8JfubhDsQJbwl8Q 1 下载最新版IDEA 1.1 官网下载安装 1.2 专业版激活 2 ...
- freetype 编译
https://blog.csdn.net/yapingxin/article/details/51841039
- SqlMapConfig.xml配置文件中的mapper映射器标签
Mapper配置的几种方式: 1. <mapper resource=" "/> 使用相对于类路径的资源 如:<mapper resource="com ...
- 理解数据库中的undo日志、redo日志、检查点
数据库存放数据的文件,本文称其为data file. 数据库的内容在内存里是有缓存的,这里命名为db buffer.某次操作,我们取了数据库某表格中的数据,这个数据会在内存中缓存一些时间.对这个数据的 ...
- golang之递归
翠花,上代码 package main import ( "fmt" "time" ) /* 递归原则,一个大问题分解成相似的小问题 定义好出口条件,否则死循环 ...
- [模板]tarjan缩点+拓扑排序
题目:给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 题目简述:先t ...
- Java 设计模式系列(五)原型模式
Java 设计模式系列(五)原型模式 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 一.原型模 ...
- Mac 安装GCC
OS X上安装Homebrew和GCC的图文攻略 2016年08月31日 11:21:27 白马负金羁 阅读数:11380 标签: OS XGCCHomebrew 更多 个人分类: 应用技巧 版权 ...