a(+;-;*;/)b-----demo----bai

页面:

<%@ 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 ‘index.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">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  <script type="text/javascript" src="js/jquery.js">
  </script>
  <script>
    $(document).ready(
    	function()
    	{
			//1 按钮关联事件
			$("#btn").click(
				function ()
				{
					//构造ajax参数
					var paras = "a="+$("#a").val()+"&b="
					+$("#b").val()+"&op="+$("#op").val();

					//发起ajax请求
					$.ajax(
						{
							type:"get",
							url:"CalculatorServlet",
							data:paras,
							dataType:"json",
							cache:false,
							success:function(c)
							{
								var info = "";
								//使用增强for,遍历json对象的所有属性
								if(c.a!=undefined)
								{
									alert(c.a+c.show_op+c.b+"="+c.result)
								}
								else
								{
									alert("错误编号:"+c.errcode+",错误信息:"+c.errmsg);
								}
							}
						}
					);
				}

			);
    	}

    );
  </script>
  <body>
    请输入a值:<input id="a" value="1"/>
    <select id="op">
    	<option value="add">+</option>
	    <option value="sub">-</option>
	    <option value="multi">*</option>
	    <option value="div">/</option>

    </select>
    请输入b值:<input id="b" value="2"/>
    <input id="btn" type="button" value="获得结果"/>
  </body>
</html>

  

控制器:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

public class CalculatorServlet extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public CalculatorServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 *
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		//1 中文处理
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		Gson gson = new Gson();
		//2 读取入参
		int a = -1;
		int b = -1;
		try {
			a = Integer.parseInt(request.getParameter("a"));
			b = Integer.parseInt(request.getParameter("b"));
		} catch (Exception e)
		{
			//创建1个错误消息对象,用json写回。方法提前终止。
			Msg m = new Msg(1, "输入的数字格式有误!");
			String json = gson.toJson(m);
			response.getWriter().print(json);
			response.getWriter().flush();
			response.getWriter().close();
			return;
		}
		String op = request.getParameter("op");
		//3 创建calculator对象
		Calculator c = new Calculator(a, b, op);
		c.cal();//执行计算,算出结果
		//4 转成json字符串返回
		String json = gson.toJson(c);
		response.getWriter().print(json);
		response.getWriter().flush();
		response.getWriter().close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 *
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

  

//用于提示错误信息的类
public class Msg
{
	private int errcode;
	private String errmsg;
	public int getErrcode() {
		return errcode;
	}
	public void setErrcode(int errcode) {
		this.errcode = errcode;
	}
	public Msg(int errcode, String errMsg) {
		super();
		this.errcode = errcode;
		errmsg = errMsg;
	}

}

  

public class Calculator
{
	private int a;
	private String op;
	private int b;
	private String show_op;
	private int result;

	public Calculator(int a, int b, String op) {
		super();
		this.a = a;
		this.b = b;
		this.op = op;
	}
	public String getOp() {
		return op;
	}
	public void setOp(String op) {
		this.op = op;
	}
	public int getResult() {
		return result;
	}
	public void setResult(int result) {
		this.result = result;
	}
	//执行计算,算出result
	public void cal()
	{
		if("add".equals(op))
		{
			result = a+b;
			show_op = "+";
		}
		else if("sub".equals(op))
		{
			result = a-b;
			show_op = "-";
		}
		else if("multi".equals(op))
		{
			result = a*b;
			show_op = "*";
		}
		else if("div".equals(op))
		{
			result = a/b;
			show_op = "/";
		}
	}

}

  

时间: 2024-10-21 10:07:31

a(+;-;*;/)b-----demo----bai的相关文章

通过Android studio编写用户注册信息表单(实现用户交互)小demo

通过Android studio编写用户注册信息表单(实现用户交互)小demo,话不多说直接上小demo 1.activity_ main.xml中的约束布局设计原型样式图:  2.在模拟器中演示效果:  3.实现约束布局代码,代码存放在activity_ main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayou

Android 人脸特征点检测(主动形状模型) ASM Demo (Active Shape Model on Android)

目前Android平台上进行人脸特征识别非常火爆,本人研究生期间一直从事人脸特征的处理,所以曾经用过一段ASM(主动形状模型)提取人脸基础特征点,所以这里采用JNI的方式将ASM在Android平台上进行了实现,同时在本应用实例中,给出了几个其他的图像处理的示例. 由于ASM (主动形状模型,Active Shape Model)的核心算法比较复杂,所以这里不进行算法介绍,我之前写过一篇详细的算法介绍和公式推导,有兴趣的朋友可以参考下面的连接: ASM(主动形状模型)算法详解 接下来介绍本应用的

AOP(面向切面编程)初识Demo

刚学习了AOP的前值增强和后置增强,个人感觉就是在调用一些方法前,或调用一些方法后绑定一个方法,让这些方法被调用之前或者调用结束后执行这个方法. 例子: MyAdvice类:存放调用service方法前或后需要执行的方法: public class MyAdvice { /* * * @param jp 表示一个方法调用 */ public void beforeLog(JoinPoint jp) { // jp.getTarget() 表示连接点所属的对象 // jp.getSignature

大数据【四】MapReduce(单词计数;二次排序;计数器;join;分布式缓存)

   前言: 根据前面的几篇博客学习,现在可以进行MapReduce学习了.本篇博客首先阐述了MapReduce的概念及使用原理,其次直接从五个实验中实践学习(单词计数,二次排序,计数器,join,分布式缓存). 一 概述 定义 MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间. 适用范围:数据量大,但是数据种类小可以放入内存. 基

Python(输入、输出;简单运算符;流程控制)

一 输入输出 python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input 1.res=input("python3: ") 2.res=raw_input("python2: ") 3.res=raw_input("python2: ") 1,2无论接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res #!/usr/bi

如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。(某人的签名)

FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层.FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录.相比于HTTP,FTP协议要复杂得多.复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令:另一个是数据链路,用来上传或下载数据.FTP是基于TCP协议的,因此iptable

hadoop学习;datajoin;chain签名;combine()

hadoop有种简化机制来管理job和control的非线性作业之间的依赖,job对象时mapreduce的表现形式.job对象的实例化可通过传递一个jobconf对象到作业的构造函数中来实现. x.addDeopendingJob(y)意味着x在y完成之前不会启动. 鉴于job对象存储着配置和依赖信息,jobcontrol对象会负责监管作业的执行,通过addjob(),你可以为jobcontrol添加作业,当所有作业和依赖关系添加完成后,调用jobcontrol的run()方法,生成一个线程提

winform学习日志(二十九)----------根据标点符号分行,StringBuilder的使用;将字符串的每个字符颠倒输出,Reverse的使用

一:根据标点符号分行,上图,代码很简单 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lines { public partial class Fr

二柱子问题扩充:1、题目避免重复; 2、可定制(数量/打印方式); 3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

程序设计思想 程序的主要设计思想为用字符串数组保存生成的运算题,将操作数采用单独算法处理,然后进行类型转换和操作符一起存入数组中,鉴于字符串的特性,可以对字符串的长度进行随意添加而不必考虑长度问题,最后进行字符串数组的输出产生客户要求的运算题; 源代码 #include<stdlib.h> #include<conio.h> #include<time.h> #include<iostream> #include<string> #include

python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)

斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素 调用上述函数,完成如下功能: 用户输入一个整数n,输出所有不超过n的斐波那契数列元素.输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割 此题目为自动评阅,请严格按照要求规范输入和输出. def jebona(n): if n==0: return 0 elif n == 1