idea: Java코드는 가변성 높음 -> JSP 점점 복잡 可 -> 단순화 필요 -> useBean 사용
서버 실행용 HTML을 다음과 같이 작성한다. (newCalcForm.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 useBean 이용한 jsp 간소화</title>
</head>
<body>
<h2>계산기 use bean</h2>
<hr>
<form method="post" action="calc.jsp">
<input type = "text" name = "n1" size ="10"><select name="op">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select><input type="text" name="n2" size="10">
<input type="submit" value="실행">
</form>
</body>
</html>
action부분에 "calc.jsp" 입력으로 jsp 실행을 유도한다.
자바코드 작성용으로 Calculator 클래스를 src/main/java에 생성한다.
package ch07;
public class Calculator {
private int n1;
private int n2;
private String op;
public long calc() {
long result = 0;
switch(op) {
case "+": result = n1 + n2; break;
case "-": result = n1 - n2; break;
case "*": result = n1 * n2; break;
case "/": result = n1 / n2; break;
}
return result;
} // 일단 여기까지 기존 jsp에 들어갔던 코드 작성을 마무리한다.
// 필드값이 모두 private이므로 이에 대한 호출 유연성이 필요하다. 그러므로
// 이 밑 부분은 Source -> generate getter and setter 전체 선택으로 자동작성한다.
public int getN1() {
return n1;
}
public void setN1(int n1) {
this.n1 = n1;
}
public int getN2() {
return n2;
}
public void setN2(int n2) {
this.n2 = n2;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
}
자바코드는 java파일에 대부분이 작성되므로 useBean을 적용한 jsp 파일은 다음과 같이 단순해진다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--useBean 방법을 사용하기 위해 아래 두 줄을 추가한다.--%>
<jsp:useBean id="calc" class="ch07.Calculator" />
<jsp:setProperty name="calc" property="*" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>계산기 useBean</title>
</head>
<body>
<h2>계산 결과 useBean</h2>
<hr>
<%--useBean을 사용한 호출--%>
결과: <%=calc.calc() %>
</body>
</html>
이를 실행하면
jsp를 이용한 계산기가 되었다.
728x90
반응형
'Programming > Java' 카테고리의 다른 글
API(POST, PUT, DELETE) 만들기 (1) | 2023.10.25 |
---|---|
AOP (Aspect-Oriented Programming) 관점지향 프로그래밍 (0) | 2023.10.24 |
Servlet (0) | 2023.10.19 |
Javascript를 넣은 회원가입창 만들기 (1) | 2023.10.18 |
[Java web] Hello JSP (2) | 2023.10.17 |