code/JSP

[JSP] servlet/서블릿을 이용한 계산기

shallot 2017. 4. 20. 15:01
servelt 생성은 new->servelt을 만드면 됩니다~
jsp는 WebContent에서 만들어 주세요!
첫번째 방법: 함수 호출

CalcServelt.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ 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>Insert title here</title>
</head>
<body>
    <h2 align="center">계산기</h2>
    <HR>
    <!-- 서블릿 버전 계산기 실행을 위해 계싼 버튼 클릭시 서블릿 호출 -->
    <center>
        <form name="f1" action=./calc method=post>
            <input type="text" name=num1 width="12" size="10"> <select name="operator">
                <option selected>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select> <input type="text" name=num2 width="12" size="10"> <input
                type="submit" value="계산" name="B1"> <input type="reset"
                value="다시 입력" name="B2">
        </form>
    </center>
</body>
</html>
 
CalcServlet.java 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
import java.awt.print.Printable;
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 clac
 */
//@WebServlet("/clac")
public class CalcServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CalcServlet() {
        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(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;
 
        response.setContentType("text/html; charset=euc-kr");
 
        PrintWriter out = response.getWriter();
 
        num1 = Integer.parseInt(request.getParameter("num1"));
        num2 = Integer.parseInt(request.getParameter("num2"));
        op = request.getParameter("operator");
        // clac()
 
        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("</body></html>");
    }
 
    public int calc(int num1, int num2, String op) {
        int result = 0;
        if (op.equals("+")) {
            result = num1 + num2;
        } else if (op.equals("-")) {
            result = num1 - num2;
        } else if (op.equals("*")) {
            result = num1 * num2;
        } else if (op.equals("/")) {
            result = num1 / num2;
        }
        return result;
    }
 
}
 




두번째 방법: 객체 생성 후

CalcServelt.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ 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>Insert title here</title>
</head>
<body>
    <h2 align="center">계산기</h2>
    <HR>
    <!-- 서블릿 버전 계산기 실행을 위해 계싼 버튼 클릭시 서블릿 호출 -->
    <center>
        <form name="f1" action=./calc method=post>
            <input type="text" name=num1 width="12" size="10"> <select name="operator">
                <option selected>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select> <input type="text" name=num2 width="12" size="10"> <input
                type="submit" value="계산" name="B1"> <input type="reset"
                value="다시 입력" name="B2">
        </form>
    </center>
</body>
</html>


CalcServlet.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 
import java.awt.print.Printable;
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 clac
 */
// @WebServlet("/clac")
public class CalcServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CalcServlet() {
        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(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;
 
        response.setContentType("text/html; charset=euc-kr");
 
        PrintWriter out = response.getWriter();
 
        num1 = Integer.parseInt(request.getParameter("num1"));
        num2 = Integer.parseInt(request.getParameter("num2"));
        op = request.getParameter("operator");
        // clac()
 
        Calc calc = new Calc(num1, num2, op);
        result = calc.getResult();
 
        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("</body></html>");
    }
}
 
class Calc {
    int num1,num2;
    int result;
    String op;
    
    public Calc(int num1, int num2, String op) {
        // TODO Auto-generated constructor stub
        this.num1=num1;
        this.num2=num2;
        this.op=op;
        
    }
 
    public int getResult() {
        // TODO Auto-generated method stub
        if (op.equals("+")) {
            result = num1 + num2;
        } else if (op.equals("-")) {
            result = num1 - num2;
        } else if (op.equals("*")) {
            result = num1 * num2;
        } else if (op.equals("/")) {
            result = num1 / num2;
        }
        return result;
    }
}
 




참고로 java에서 실행되면 오류가 뜨시는 걸 볼 수 있습니다! 그러니 jsp파일에서 실행해주세요!