首先创建一个calculate.jsp

这是用Javascript代码来验证,代码如下:

<script type="text/javascript">

function check(){
if(form.n1.value==""&&form.value.n2==""){
window.alert("值不能为空");
return false;
}
if(isNaN(form.n1.value)&&isNaN(form.n2.vavlue)){
window.alert("请确认输入的是否是数字!");
return false;
}
if(form.operator.value=="/"&&form.n2.value=="0"){
window.alert("除数不能为0,请重新输入! ");
return false;
}
}
</script>

使用Java代码来计算,代码如下:

<%
String operator=request.getParameter("operator");
int n1=Integer.parseInt(request.getParameter("n1"));
int n2=Integer.parseInt(request.getParameter("n2"));
int result=0;
if("+".equals(operator)){
result= n1+n2;
}
else if("-".equals(operator)){
result=n1-n2;
}
else if("*".equals(operator)){
result=n1*n2;
}
else {
result=n1/n2;
}
request.setAttribute("n1", n1);
request.setAttribute("n2", n2);
request.setAttribute("result", result); //往request作用域里放一个值
request.getRequestDispatcher("calculate.jsp").forward(request,response);
%>

form表单来写一个简单的页面,代码如下:

<form name="form" action="calculate_do.jsp" method="post" >
<input name="n1" value="<%= request.getAttribute("n1")==null?"":request.getAttribute("n1") %>">
<select name="operator">
<option value="+" <%= "+".equals(operator)?"selected":"" %>>+</option>
<option value="-" <%= "-".equals(operator)?"selected":"" %>>-</option>
<option value="*" <%= "*".equals(operator)?"selected":"" %>>*</option>
<option value="/" <%= "/".equals(operator)?"selected":"" %>>/</option>

</select>
<input name="n2" value="<%= request.getAttribute("n2")==null?"":request.getAttribute("n2") %>">
<input type="submit" value="=" onclick="return check();" >
<input name="result" value="<%= request.getAttribute("result")==null?"":request.getAttribute("result") %>">
</form>

源代码:

<%@ 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 'calaulate.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">

function check(){
if(form.n1.value==""&&form.value.n2==""){
window.alert("值不能为空");
return false;
}
if(isNaN(form.n1.value)&&isNaN(form.n2.vavlue)){
window.alert("请确认输入的是否是数字!");
return false;
}
if(form.operator.value=="/"&&form.n2.value=="0"){
window.alert("除数不能为0,请重新输入! ");
return false;
}
}
</script>

</head>

<body>
<%
String operator=request.getParameter("operator");
int n1=Integer.parseInt(request.getParameter("n1"));
int n2=Integer.parseInt(request.getParameter("n2"));
int result=0;
if("+".equals(operator)){
result= n1+n2;
}
else if("-".equals(operator)){
result=n1-n2;
}
else if("*".equals(operator)){
result=n1*n2;
}
else {
result=n1/n2;
}
request.setAttribute("n1", n1);
request.setAttribute("n2", n2);
request.setAttribute("result", result); //往request作用域里放一个值
request.getRequestDispatcher("calculate.jsp").forward(request,response);
%>

<form name="form" action="calculate_do.jsp" method="post" >
<input name="n1" value="<%= request.getAttribute("n1")==null?"":request.getAttribute("n1") %>">
<select name="operator">
<option value="+" <%= "+".equals(operator)?"selected":"" %>>+</option>
<option value="-" <%= "-".equals(operator)?"selected":"" %>>-</option>
<option value="*" <%= "*".equals(operator)?"selected":"" %>>*</option>
<option value="/" <%= "/".equals(operator)?"selected":"" %>>/</option>

</select>
<input name="n2" value="<%= request.getAttribute("n2")==null?"":request.getAttribute("n2") %>">
<input type="submit" value="=" onclick="return check();" >
<input name="result" value="<%= request.getAttribute("result")==null?"":request.getAttribute("result") %>">
</form>

</body>
</html>

在一个jsp页面内实现简单计算器的更多相关文章

  1. 分别应用include指令和include动作标识在一个jsp页面中包含一个文件。

    分别应用include指令和include动作标识在一个jsp页面中包含一个文件. hello.jsp <%@ page language="java" import=&qu ...

  2. 在一个jsp页面中引用另一个jsp文件的路径的问题

    为了提高代码的重用性,经常需要在一个jsp页面中引用另一个jsp文件的代码.关于引用时的路径的问题.下面只介绍动态引用的,我觉得静态引用的应该也一样. 相对路径: 一.在同一个文件夹下,a.jsp中引 ...

  3. el: 在jsp页面内使用函数判断子字符串

    e.g. <c:forEach items="${datas}" var="data"> <c:if test="${not fn: ...

  4. 在一个JSP页面中包含另一个JSP页面的三种方式

    转载自://http://blog.163.com/neu_lxb/blog/static/179417010201121343132918/ (1)include指令          includ ...

  5. jsp页面元素和内置对象

    java server pages其根本是一个简化的servlet设计.实现了在java当中使用html标签.javaEE标准 一.页面元素 1.静态内容 html.js.css相关标签元素. 2.指 ...

  6. JSP页面以及简单的指令

    —JSP(Java Server Pages)是指: —在HTML中嵌入Java脚本语言 —由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令 —然后将生成的整个页面信息返回给客户端 页 ...

  7. JSP页面以及JSP九大隐式对象

    €JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. €JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...

  8. 在JSP页面中调用另一个JSP页面中的变量

    在jsp学习中,经常需要在一个jsp页面中调用另一个jsp页面中的变量,下面就这几天的学习,总结一下. jsp页面之间的变量调用有多种方法: 1.通过jsp的内置对象—request对象获取参数: ( ...

  9. jsp页面九大内置对象

    资源转载自网上,不可用于商用,学习可以.内置对象又叫隐式对象/隐含对象是由WEB容器加载的一组类的实例,不需要预先声明就可以在脚本代码和表达式中随意使用的对象. 这九大隐式对象可以按照期作用分类为: ...

随机推荐

  1. Node.js热部署代码,实现修改代码后自动重启服务方便实时调试

    写PHP等脚本语言的时候,已经习惯了修改完代码直接打开浏览器去查看最新的效果.而Node.js 只有在第一次引用时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,这种设计虽然有利于提高性能,却 ...

  2. servlet的几个函数

    request.getContextPath   上下文,例如 /bignews1 (自带 “ / ”) request.getScheme() 协议,例如HTTP request.getServer ...

  3. 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上)

    目录 一. 大作业说明 二.基本思路 三.视频纹理表面修复--UV映射 3.1 问题描述 3.2 纹理贴图的基本原理-UV映射 3.3 关键示例代码 四.小结 示例代码托管在:http://www.g ...

  4. 个人永久性免费-Excel催化剂功能第33波-报表形式数据结构转标准数据源

    一般来说,如果有标准的数据源结构,对后续的分析工作将会带来极大的方便.但现实中,许多的原始数据并不预期那样,一个主题的数据已经干净地存放在一个工作表中.今天Excel催化剂再次送上批量化操作,将不规则 ...

  5. pytest自定义动态添加描述信息

    先上效果图: 修改pytest-html报告,分三部分. pytest执行目录新建conftest.py文件 import pytest from py._xmlgen import html fro ...

  6. 【干货干货】hyperledger fabric 之动态添加组织/修改配置 (Fabric-java-sdk) 下

    我们接着上一节来讲: 在熟悉动态增加组织或修改配置的步骤后,我们就可以使用java的api来完成动态增加组织或修改配置了: 废话不多说,直接上干货: 1,预制条件 org3的证书以及组织3的MSP详情 ...

  7. oracle分隔字符串列转行

    1. DEMO: SELECT REGEXP_SUBSTR('1,2', '[^,]+', 1, LEVEL)          FROM DUAL        CONNECT BY REGEXP_ ...

  8. Cobbler-自动化部署神器

    Cobbler-自动化部署神器 前言: 网络安装服务器套件 Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业.自打若干年前 Red Hat 推出了 Kickstart,此后我们顿觉 ...

  9. 如何使用 nvm-windows 管理 nodejs 版本

    写在前边的话: (1). 路径一定不要包含空格,如 Program Files 这样,所以有把程序安装到 D:\Program Files 文件下的同学请注意了:(2). 为了避免 nvm 无法切换源 ...

  10. 带新手玩转MVC——不讲道理就是干(下)

    带新手玩转MVC——不讲道理就是干(下) 前言:废话不多说,直接开干 完整案例演示 案例代码 LoginServlet package servlet; import domain.User; imp ...