티스토리 뷰

FRONT-END/JSP

[JSP] 간단한 계산기

진심스테이크 2018. 4. 10. 16:11

 

 

                   

                   

 

 

 

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
    license agreements. See the NOTICE file distributed with this work for additional 
    information regarding copyright ownership. The ASF licenses this file to 
    You under the Apache License, Version 2.0 (the "License"); you may not use 
    this file except in compliance with the License. You may obtain a copy of 
    the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
    by applicable law or agreed to in writing, software distributed under the 
    License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
    OF ANY KIND, either express or implied. See the License for the specific 
    language governing permissions and limitations under the License. -->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1" metadata-complete="true">

    <display-name>Welcome to Tomcat</display-name>
    <description>
     Welcome to Tomcat
  </description>

    <servlet>
        <servlet-name>Calculator</servlet-name>
        <servlet-class>Calculator</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Calculator</servlet-name>
        <url-pattern>/calc</url-pattern>
    </servlet-mapping>

</web-app>

 

 

Calculator.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!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=EUC-KR">
<title>Calculator</title>
</head>
<center>
    <body>
        <form name=form1 method=post action="calc">
            <h1>계산기</h1>
            <input type="text" name="num1" width="200" size="5"> <select
                name="op">
                <option selected>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select> <input type="text" name="num2" width="200" size="5"> <input
                type="submit" value="계산" name="B1"> <input type="reset"
                value="다시입력" name="B2">
        </form>
    </body>
</center>
</html>

 

 

Calculator.java

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

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

/**
 * Servlet implementation class Calculator
 */
@WebServlet("/Calculator")
public class Calculator extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Calculator() {
        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());

        // doPost()
        doPost(request, response);
    }

    /**
     * @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);

        // 변수 선언
        int num1, num2;
        int result;
        String op;

        // 클라이언트 응답시 전달 될 컨텐츠에 대한 mime type과 캐릭터셋 지정
        response.setContentType("text/html; charset=euc-kr");

        // 클라이언트 응답을 위한 출력 스트림 확보
        PrintWriter out = response.getWriter();

        // HTML form을 통해 전달 된 num1, num2 패러미터 값을 변수에 할당
        // 이때 getParameter() 메소드는 문자열을 리턴하므로 숫자형 데이터의 경우 Integer.parseInt()를 사용
        // request를 통해서 jsp 파일에 있는 num1, num2를 받아옴
        num1 = Integer.parseInt(request.getParameter("num1"));
        num2 = Integer.parseInt(request.getParameter("num2"));
        op = request.getParameter("op");

        // calc() 메소드 호출로 결과 받아옴
        result = calc(num1, num2, op);

        // 출력
        out.println("<HTML>");
        out.println("<HEAD><TITLE>계산기</TITLE></HEAD>");
        out.println("<BODY><center>");
        out.println("<H2>계산결과</H2>");
        out.println("<HR>");
        out.println(num1 + " " + op + " " + num2 + " = " + result);
        out.println("<br>"); //한줄 띄워줌
        out.println("<input type=\"button\" value=\"되돌아가기\" onclick=\"history.back();\">"); //되돌아가기 버튼
        out.println("</BODY></HTML>");
    }

    public int calc(int num1, int num2, String op) {
        int result = 0;
        switch (op) {
        case "+":
            result = num1 + num2;
            break;
        case "-":
            result = num1 - num2;
            break;
        case "*":
            result = num1 * num2;
            break;
        case "/":
            result = num1 / num2;
            break;
        }
        return result;
    }
}

'FRONT-END > JSP' 카테고리의 다른 글

[JSP] ATTRIBUTE & SCOPE - 속성과 영역  (0) 2018.04.12
[JSP] 오류 예외처리  (0) 2018.04.12
[JSP] 한글 처리  (0) 2018.04.12
[JSP] 내장 객체  (1) 2018.04.12
[JSP] 구구단 테이블  (0) 2018.04.11
댓글