-
(JSP) 자바 빈즈를 활용한 계산기서버 프로그래밍 2021. 8. 26. 16:41
이전에 만들었던 기초적인 계산기에서 자바 컴포넌트(빈즈)를 활용하는 방법으로 재 구성 해보도록 하겠습니다.
<index.jsp>
12345678910111213141516171819202122232425262728293031323334353637383940<%@ 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>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package 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