ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (JSP) 자바 빈즈를 활용한 계산기
    서버 프로그래밍 2021. 8. 26. 16:41

    이전에 만들었던 기초적인 계산기에서 자바 컴포넌트(빈즈)를 활용하는 방법으로 재 구성 해보도록 하겠습니다.

     

    <index.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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <jsp:useBean id="calc" class="test.CalcBean" /> <!-- 자바 빈즈 불러오기 -->
    <%-- CalcBean 클래스에서 calc의 객체를 생성 == 객체화 == 인스턴스화 --%>
    <%-- 결국 CalcBean calc = new CalcBean()  같은맥락 --%>
    <%-- 기본생성자를 기준으로 하기 때문에 기본생성자가 아니면 작동 xx --%>
     
    <jsp:setProperty property="*" name="calc"/>
    <%-- getter/setter와 같은 맥락, calcBean 클래스 안의 멤버 변수를 동기화한다. --%>
     
    <!DOCTYPE html>
     
    <%-- 계산하는 기능을 호출 --%>
    <% if(request.getMethod().equals("POST")){calc.calculate();} %>
     
    <html>
    <head>
    <meta charset="UTF-8">
    <title>계산기 실습2</title>
    </head>
    <body>
    <h2>계산기</h2>
    <hr>
    <form method="post" name="form1">
        <input type="text" name="num1" id="num1"> <!-- id는 css 유지보수를 위해 동일한 이름을 적어주었다.-->
        <select name="op">
            <option selected>+</option>
            <option>-</option>
            <option>*</option>
            <option>/</option>
        </select>
        <input type="text" name="num2" id="num2">
        <input type="submit" value="계산하기" name="btn1">
        <input type="reset" value="다시입력" name="btn2">
    </form>
    <hr>
    <!-- 자바에 작성한 함수를 불러오는 태그가 필요하다.(빈즈 자바 컴포넌트) -->
    <h3>계산결과: <jsp:getProperty property="result" name="calc"/></h3>
    </body>
    </html>
    cs

     

    <calcBean.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
    package test;
     
    public class CalcBean {
        // jsp의 name과 빈즈의 변수 이름은 동일해야 한다.
        // 보안을 위해 접근 지정자(private), getter/setter 사용
        private int num1;
        private int num2;
        private String op;
        private int result;
        public int getResult() {
            return result;
        }
        public void setResult(int result) {
            this.result = result;
        }
        public int getNum1() {
            return num1;
        }
        public void setNum1(int num1) {
            this.num1 = num1;
        }
        public int getNum2() {
            return num2;
        }
        public void setNum2(int num2) {
            this.num2 = num2;
        }
        public String getOp() {
            return op;
        }
        public void setOp(String op) {
            this.op = op;
        }
        // 계산하는 함수
        public void calculate() {
            
            switch(this.op){
            case "+":
                this.result = this.num1 + this.num2;
                break;
            case "-":
                this.result = this.num1 - this.num2;
                break;
            case "*":
                this.result = this.num1 * this.num2;
                break;
            case "/":
                this.result = this.num1 / this.num2;
                break;
            }
        }
     
    }
     
    cs

    - 주의해야 할 점은 HTML의 name 속성과 class의 변수명을 같게 해주어야 하고, 꼭 기본생성자가 있어야 한다는 점!

    결과는 이전과 동일하므로 생략합니다 :)

    '서버 프로그래밍' 카테고리의 다른 글

    (JSP) 포워딩과 리다이렉트  (0) 2021.08.26
    (JSP) 계산기를 만들어보자  (0) 2021.08.26
    (JSP/Servlet) 개념과 기초 정리  (0) 2021.08.24
    (Servlet) 개념과 특징 정리  (0) 2021.08.24
Designed by Tistory.