servlet实现简单的计算器

从今天开始,我会将这学期陆续学习的一些知识,发到网上,也会不断添加新的知识点。 今天,先用servlet编写一个简易的计算器。使用eclipse或myeclipse编写(需要配置jdk,tomcat.可以去其他博客下找教程) 首秀创建一个webproject工程,自己起名字。如果是用eclispe 编写的,那么要选择(Dynamic web project),并且一步一步的创建,最后一部要选择创建web.xml文件。

接下来进入正文:

本次共需要写4个部分: Cal.java :计算器的基本文件。即构成 CalServlet.java:逻辑文件,前台提交数据,进行处理,返回结果。 Cal.jsp:前台界面 ,用户输入信息并可得到结果。 web.xml:配置文件

Cal.jsp:

package Calculator;

public class Cal {
   private float num1;
   private String op;
   private float num2;
public float getNum1() {
    return num1;
}
public void setNum1(float num) {
    this.num1 = num;
}
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:

package CalServlet;

import java.io.IOException;

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

import Calculator.Cal;

public class CalServlet extends HttpServlet {

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

    /**
     * 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 {
        Cal cal=new Cal();
        cal.setNum1(Float.parseFloat( request.getParameter("num1")));
        cal.setNum2(Float.parseFloat( request.getParameter("num2")));
        cal.setOp(request.getParameter("op"));
        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();

        }
        request.setAttribute("cal", cal);
        request.setAttribute("result", result);
        request.getRequestDispatcher("../Cal.jsp").forward(request, response);
    }

    /**
     * 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 {

    }

}

Cal.jsp

<body>
      <form action="servlet/CalServlet"  method="get">
         操作数1:<input type="text" name="num1" value="${requestScope.cal.num1}"><br>
         操作符号:<input type="radio" name="op" value="+"${requestScope.cal.op=="+"?"checked":""}>+
            <input type="radio" name="op" value="-" ${requestScope.cal.op=="-"?"checked":""}>-
            <input type="radio" name="op" value="*" ${requestScope.cal.op=="*"?"checked":""}>*
            <input type="radio" name="op" value="/" ${requestScope.cal.op=="/"?"checked":""}>/<br>
         操作数2:<input type="text" name="num2" value=" ${requestScope.cal.num2 }"><br>
         <input type="submit" value="计算"><br>
         结果:   <input type="text" value="${requestScope.result} ">
      </form>
  </body>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>CalServlet</servlet-name>
    <servlet-class>CalServlet.CalServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>CalServlet</servlet-name>
    <url-pattern>/servlet/CalServlet</url-pattern>
  </servlet-mapping>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

运行结果:

如果有不懂的地方,欢迎评论。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏好好学java的技术栈

重温java web过滤器filter

Filter 技术是servlet 2.3 新增加的功能。Filter翻译过来的意思就是过滤器,能对客户端的消息进行预处理,然后将请求转发给其它的web组件,可...

14510
来自专栏好好学java的技术栈

七夕不送礼,送礼就送HttpServletResponse,一看就懂

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。获取网页提交过来的数据,...

11910
来自专栏Java架构师历程

Struts2的工作原理

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处?

12240
来自专栏开发之途

在 Android 设备上搭建 Web 服务器

一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Android 设备上搭建一...

1.3K30
来自专栏好好学java的技术栈

java后端开发每天遇到的jsp,了解一下

JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码(在<%%>不能定义方法)。语法:<%多行java代码 %>

29020
来自专栏好好学java的技术栈

一文读懂HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的...

16610
来自专栏专注研发

jetty服务器原理与maven集成

https://www.ibm.com/developerworks/cn/java/j-lo-jetty/

24630
来自专栏好好学java的技术栈

servlet就是这么简单

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库...

13620
来自专栏专注研发

IDEA环境下SSM整合------环境配置

一、做不出详细的概念叙述和文本设计,本文主要以实战步骤为主,少量解释为辅助,下面请大家牢记两幅图:

21110
来自专栏Java架构师历程

Tomcat与Servlet进行交互

3、Servlet容器创建一个HttpRequest对象,将客户请求的信息封装到这个对象中

89450

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励