<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'Calculator.jsp' starting page</title> </head> <body> <jsp:useBean id="Calculator" class="cn.itcast.domain.Calculator"></jsp:useBean>
<jsp:setProperty property="*" name="Calculator"/> <%
try{
Calculator.calculate();
}catch(Exception e){
out.write(e.getMessage());
}
%> <br/>--------------------------------------------<br/>
计算的结果是:
<jsp:getProperty name="Calculator" property="firstnum"/>
<jsp:getProperty name="Calculator" property="operator"/>
<jsp:getProperty name="Calculator" property="secondnum"/>
=
<jsp:getProperty name="Calculator" property="result"/>
<br/>--------------------------------------------<br/>
<br/>
<form action="/JSPDemo/Calculator.jsp" method="post" style="text-align:center;">
<table width="40%" border="1">
<tr>
<td colspan="2">简单的计算器</td>
</tr>
<tr>
<td>第一个参数</td>
<td>
<input type="text" name="firstnum" />
</td>
</tr>
<tr>
<td>操作符</td>
<td>
<select name="operator" >
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
</td>
</tr>
<tr>
<td>第二个参数</td>
<td>
<input type="text" name="secondnum" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="计算" />
</td>
</tr>
</table>
</form> </body>
</html>

Calculator.jsp

 package cn.itcast.domain;

 import java.math.BigDecimal;

 //封装计算器数据的bean
public class Calculator { private String firstnum = "0";
private String secondnum = "0";
private char operator = '+';
private String result; public void calculate(){
BigDecimal first = new BigDecimal(this.firstnum);
BigDecimal second = new BigDecimal(this.secondnum); switch(this.operator){
case '+':{
this.result = first.add(second).toString();
break;
}
case '-':{
this.result = first.subtract(second).toString();
break;
}
case '*':{
this.result = first.multiply(second).toString();
break;
}
case '/':{
if(second.doubleValue()==0){
throw new RuntimeException("被除数不能为0");
}
this.result = first.divide(second,20,BigDecimal.ROUND_HALF_UP).toString();
break;
} default:
throw new RuntimeException("运算符只能+-*/");
} } public String getFirstnum() {
return firstnum;
} public void setFirstnum(String firstnum) {
this.firstnum = firstnum;
} public String getSecondnum() {
return secondnum;
} public void setSecondnum(String secondnum) {
this.secondnum = secondnum;
} public char getOperator() {
return operator;
} public void setOperator(char operator) {
this.operator = operator;
} public String getResult() {
return result;
} public void setResult(String result) {
this.result = result;
}
}

Calculator

jsp开发模式和web计算器案例的更多相关文章

  1. JSP开发模式2(计算器)

    CalculatorBean———————————————————————————————————————————— public class CalculatorBean {    private ...

  2. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  3. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  4. 十五 JSP开发模式&MVC设计模式

    JSP开发模式: JavaBean + JSP  : 缺点:页面代码过多,不利于维护,JSP页面代码变得臃肿 Servlet + JavaBean + JSP :MVC设计模式 M:model   模 ...

  5. Tip: JSP开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean模式适合开发业务 ...

  6. JavaEE——JSP开发模式(model1)

    model1开发模式 工作流程: ①浏览器请求,JSP页面接收 ②JSP根据请求和JavaBean进行交互 ③JavaBean进行业务处理,JDBC操纵数据库 ④JSP将请求结果返回浏览器页面 利用m ...

  7. MVC开发模式与web经典三层框架

    MVC:Model(模型)-View(视图)-Controller(控制器) ----是一种软件架构模式,一般把软件系统拆分为这三个层次. 视图View层:前端交互界面或者后端系统界面,它从模型中获取 ...

  8. JSP开发模式2_JSP/Servlet/JavaBean(简单注册功能)

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class RegisterBean {    privat ...

  9. JSP开发模式1(简单注册功能)

    ———————————————————————————————————————————————— import java.util.regex.Matcher;import java.util.reg ...

随机推荐

  1. Codeforces Round #375 (Div. 2) - B

    题目链接:http://codeforces.com/contest/723/problem/B 题意:给定一个字符串.只包含_,大小写字母,左右括号(保证不会出现括号里面套括号的情况),_分隔开单词 ...

  2. mac OS X操作 -- 常用

    显示/隐藏默认隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true/false 重置ROOT密码: http://www. ...

  3. CSS3实现动画

    CSS3实现一个简单的动画 可以改变任意多的样式任意多的次数,用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%. ...

  4. Redis Tools

    1. Resources Redis Desktop Manager http://redisdesktop.com/ Redis命令的中文文档 http://redisdoc.com/ Redis安 ...

  5. HTML元素的offsetWidht、clientWidth、scrollWidth属性区别

    每个HTML元素都有以下属性 offsetWidth:内容+内边距(padding)+边框+滚动条宽度,以css像素返回它的屏幕尺寸. offsetHeight:(同上) offsetLeft:如果o ...

  6. DrawingContext.Pop Method

    The following example shows the effect of the Pop command. using System; using System.Windows; using ...

  7. Visual Studio: 暂时?绕过 fatal error C1083: Cannot open precompiled header file

    可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头.

  8. ccc let

    let,其实就是块级作用域申明变量的var.之前JS的var关键字是非块级作用域的,而是函数级的. 例如arr=[0,1,2],我们经常写循环 for(var i=0,len=arr.length; ...

  9. 熟悉熟悉常用的几个算法用JS的实现

    (1)数组去重 原理:定义一个对象obj,然后把数组元素作为obj的属性名,利用属性名是否重复进行判重 1 var unique = function(arr){ 2 let obj = {}; 3 ...

  10. BZOJ 2733 & splay的合并

    题意: 带权联通块,添边与查询联通块中第k大. SOL: splay合并+并查集. 我以为splay可以用奇技淫巧来简单合并...调了一下午终于幡然醒悟...于是就只好一个一个慢慢插...什么启发式合 ...