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. leetcode110

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  2. IOS 上传ipa文件失败

    ** No suitable application records were found. Verify your bundle identifier 'com.***' is correct. i ...

  3. 怎么查看在centos中创建的用户组

    用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/pass ...

  4. hibernate查询出的实体,set值后,自动更新到数据库

    1.问题症状描述      最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这个 ...

  5. PatBlt

    PatBlt     该函数使用当前选入指定设备环境中的刷子绘制给定的矩形区域.通过使用给出的光栅操作来对该刷子的像素和表面像素进行组合. 原型: BOOL PatBlt(     HDC hdc,  ...

  6. MVC表单提交写法1

    初学MVC,感觉跟以前的aspx页面差别很大,我们就先来看看MVC的表单是怎么提交的吧. 现在我们用一个最简单的例子来看一看MVC是怎么提交表单的(这一个例子中,我们的关注点是如何提交表单,所以不涉及 ...

  7. 获取openid回调两次

    解决了好久,请教了各路大神也没找到解决方案. 最后灵感一现,是不是参数顺序问题?按照官网示例的先后顺序从新调用了一次,回调一次,成功解决. 官网文档:https://mp.weixin.qq.com/ ...

  8. Binary Watch二进制时间

    [抄题]: A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the b ...

  9. c语言define和typedef区别和使用

    define完全可以理解替换,typedef代表别名.听着差不多的意思,那2者区别在哪? 先来个简单例子查看基本使用. //define和typedef区别 #define DB double //替 ...

  10. a标签href="javascript:;"

    //点击a链接,执行一段js代码 <!DOCTYPE html> <html> <head> <title></title> </he ...