代码
Cal.java(放在src.Calculation里)
package Calculation;
public class Cal {
private float num1;
private String op;
private float num2;
public float getNum1() {
return num1;
}
public void setNum1(float num1) {
this.num1 = num1;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public float getNum2() {
return num2;
}
public void setNum2(float num2) {
this.num2 = num2;
}
}
CalServlet.java(放在src.CalculationServlet里)
package CalculationServlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Calculation.Cal;
/**
* Servlet implementation class CalServlet
*/
@WebServlet("/CalServlet")
public class CalServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
/
public CalServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//doGet(request, response);
response.setCharacterEncoding("UTF-8");
Cal cal = new Cal();
cal.setNum1(Float.parseFloat(request.getParameter("num1")));
cal.setOp(request.getParameter("operator"));
cal.setNum2(Float.parseFloat(request.getParameter("num2")));
float result = 0;
switch(cal.getOp().charAt(0)) {
case '+': result = cal.getNum1() + cal.getNum2();break;
case '-': result = cal.getNum1() - cal.getNum2();break;
case '*': result = cal.getNum1() * cal.getNum2();break;
case '/': result = cal.getNum1() / cal.getNum2();break;
//可以加入一个default
}
//System.out.println(result);
request.setAttribute("result", result);
request.setAttribute("cal", cal); //---- 传值不过去???
//request.getSession().setAttribute("cal", cal);
//新知识
//下边的这个函数就是服务器之间跳转 注意需要先调用getRequestDispatcher来获取这个对象 我是这么理解的
request.getRequestDispatcher("Cal.jsp").forward(request, response);
}
}
Cal.jsp(放在web里)
<%--
Created by IntelliJ IDEA.
User: dell
Date: 2020/11/19
Time: 16:36
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>计算器</title>
</head>
<body>
<h2>简单的计算器</h2>
<form action="CalServlet" method="post" name="From" >
第一个参数:<input type="text" name="num1" value="${requestScope.cal.num1}"><br>
运算符:
<input type="radio" name="operator" value="+" ${requestScope.cal.op=="+"?"checked":""}>+
<input type="radio" name="operator" value="-" ${requestScope.cal.op=="-"?"checked":""}>-
<input type="radio" name="operator" value="*" ${requestScope.cal.op=="*"?"checked":""}>*
<input type="radio" name="operator" value="/" ${requestScope.cal.op=="/"?"checked":""}>/
<br>
第二个参数:<input type="text" name="num2" value="${requestScope.cal.num2}"><br>
<input type="submit" name="smt" value="计算"><br>
计算结果:<input type="text" name="result" value="${result}">
</form>
</body>
</html>