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. Javascript typeof 用法

    在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组. if(document.mylist.length != "undefined" ...

  2. web.xml中配置spring.xml的三种方式

    我们知道spring在web.xml中可以有三种方式来配置其xml路径:org.springframework.web.servlet.DispatcherServletorg.springframe ...

  3. log.error(msg)和log.error(msg,e)的显示区别

    log.error(msg): [2017-10-18 11:31:07,652] [Thread-7] (CmsCtlDataUploadFileExchange.java:50) ERROR co ...

  4. 给mysql数据添加一个只拥有一张表的权限

    grant all privileges on [database].* to 'database'@'localhost' identified by 'password' 例如: grant al ...

  5. java集合:常用集合的数据结构

    List 有序可重复 ArrayList ArrayList数据结构是数组.查询快,增删慢.ArrayList是线程不安全的,允许元素为null . Vector 线程安全的数组,效率较差,已经过时不 ...

  6. codeforces:818G Four Melodies分析

    题目 题目大意是有一组自然数v1,...,vn,要求在其中找到四个非空子序列(从原来的自然数序列中挑选一部分数,并按原先后关系排序),这些子序列互不相交,且每个子序列中的前后元素的值要么差值的绝对值为 ...

  7. SpringBoot中使用LoadTimeWeaving技术实现AOP功能

    目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现A ...

  8. xshell评估过期解决办法

    1.登录网景官网的下载页面: https://www.netsarang.com/download/down_form.html?code=522 2.直接在页面中有红色*号的地方输入个人信息,lic ...

  9. 为什么数组没有实现Iterable接口,但可以使用foreach语句遍历

    在Java中,对于数组为什么能够使用foreach语句一直感觉很困惑. 对于能够使用foreach语句进行遍历的对象,只有两种情况,其中一种是遍历对象必须实现Iterable接口,实现ierator( ...

  10. VMTurbo:应对散乱虚拟机的强劲工具

    随着服务器虚拟化技术越来越成熟,虚拟机散乱(VM sprawl)和主机资源管理成为了虚拟化数据中心的管理员眼里的两大问题.面对这种情形,一种可行的解决办法就是使用一款名为VMTurbo(vmturbo ...