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)的更多相关文章

  1. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  2. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  3. Java学习笔记--Swing用户界面组件

    很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel lab ...

  4. Java学习笔记31(IO:Properties类)

    Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...

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

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  6. 20155234 2016-2017-2第十周《Java学习笔记》学习总结

    20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...

  7. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

  8. Java学习笔记之---Servlet

    Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...

  9. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

随机推荐

  1. TMS Grid

    TMS Grid http://edn.embarcadero.com/article/42553

  2. VB中的正则表达式

    RegExp对象提供简单的正则表达式支持功能. RegExp对象的用法:Function RegExpTest(patrn, strng)Dim regEx, Match, Matches ' 建立变 ...

  3. update svn cache 慢

    eclipse 打开了一个工程,就进行了update svn cache,弄了2个多小时了还是在进行.观察这个过程在空文件夹上也进行了不少时间,我感觉到可能方法错了.试了下关闭SVN--> sv ...

  4. 【318】C# 学习笔记

    笔记 01:C# 数据结构 引用类型(Reference types) 引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用. 换句话说,它们指的是一个内存位置.使用多个变量时,引用类型可以指 ...

  5. Attribute与元数据

    在MSDN中,Attribute被定义为“是被指定给某一声明的一则附加的声明性信息”. 我们可以通过Attribute来定义设计层面的信息以及运行时(run-time)信息,也可以利用Attribut ...

  6. 30-python3 中 bytes 和 string 之间的互相转换

    转自:http://www.jb51.net/article/105064.htm password = b'123456' 等价于: pw = '123456' password = pw.enco ...

  7. 18-(unicode error) 'unicodeescape' codec can't decode bytes in position 16-17: truncated \uXXXX escape

    读取文件时碰到问题: 1.(unicode error) 'unicodeescape' codec can't decode bytes in position 16-17: truncated \ ...

  8. shiro 和spring集合 实现登录时输入验证码并校验(七)

    编写实现验证码的主体实现类:CaptchaCode import java.util.UUID; import javax.servlet.http.HttpServletRequest; impor ...

  9. FTP上传下载--python

    import socket import struct import json import subprocess import os class MYTCPServer: address_famil ...

  10. 是什么优化让 .NET Core 性能飙升?(转)

    欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ .NET Core(开放源代码,跨平台,x-copy可部署等)有许多令人兴奋的方面,其中最值得称赞的就是其性能了. 感谢所有社区 ...