웹개발 교육/jsp
[50일] jsp (15) - Java Bean
ewok
2022. 10. 7. 11:50
Java Bean
이번에는 Java Bean이라는 것을 이용하여 만들어보겠다.
jsp페이지에 나열되는 자바 처리 로직은 디자인 코드와 함께 매우 복잡한 코드를 구성한다.
이로 인해 디자인 변경 시 자바 코드가 영향을 받아 오류가 자주 발생되며, 코드 수정 시 코드를 알아볼 수 없어 유지보수가 어렵다.
또한 작업 도중 자바 코드가 JSP 페이지에 반복적으로 사용될 수 있으며, 코드의 노출로 저작권 등 보안에 심각한 문제가 발생된다.
이러한 반복되는 자바 코드들을 JAVA파일 안에 저장하여 사용하는 형태를 빈즈라고 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="net.testbean.*"%>
<jsp:useBean id="" class="" scope="page""></jsp:useBean>
bean을 사용하려면 이처럼 태그를 작성해줘야 한다. 이러한 태그를 액션 태그라고 한다.
<jsp:useBean id=""></jsp:useBean> 객체 생성(Object)
<jsp:forward page=""></jsp:forward> 페이지 이동
<jsp:include page=""></jsp:include> 공통 페이지 가져오기
여러 가지가 있지만 자주 사용하는 몇 가지만 적어봤다.
Java Bean도 객체를 생성하여 사용한다. 객체 생성은 태그 안에 속성을 적어주면 된다.
<jsp:useBean id="객체명" class="패키지명.클래스명" scope="page""></jsp:useBean>
scope에는 유효 범위가 있다.
scope="page" 현재 페이지에서만 유효. 생략 시 기본값
scope="request" 다른 페이지에서 공유
scope="session" 다른 페이지에서 공유
scope="application" 다른 페이지에서 공유
※ 참고
Java Bean(id)가 제대로 생성 안될 수도 있음.
해당 프로젝트 우클릭 -> Refresh, Validate
Project -> Clean 하고 테스트할 것!!
computeok3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="net.testbean.*"%>
<jsp:useBean id="comp" class="net.testbean.Compute" scope="page"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>computeok3.jsp</title>
</head>
<body>
<h3>* 계산 결과 *</h3>
<h4>3) Java Bean을 이용해서 객체 생성 후 메소드 호출</h4>
<%
int num1 = Integer.parseInt(request.getParameter("num1").trim());
int num2 = Integer.parseInt(request.getParameter("num2").trim());
out.print(num1 + "+" + num2 + "=" + comp.add(num1, num2));
out.print("<hr>");
out.print(num1 + "-" + num2 + "=" + comp.sub(num1, num2));
out.print("<hr>");
out.print(num1 + "*" + num2 + "=" + comp.mul(num1, num2));
out.print("<hr>");
out.print(num1 + "/" + num2 + "=" + comp.div(num1, num2));
out.print("<hr>");
out.print(num1 + "%" + num2 + "=" + comp.mod(num1, num2));
out.print("<hr>");
%>
</body>
</html>
이번에는 다른 기능을 가진 계산기를 만들어보자
calcForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>calcForm.jsp</title>
</head>
<body>
<h3>* 절대값/팩토리얼 구하기 *</h3>
<form>
<table border="1">
<tr>
<th>숫자</th>
<td><input type="number" name="num" size="5"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="계산">
</td>
</tr>
</table>
</form>
</body>
</html>
calcok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="net.testbean.*" %>
<jsp:useBean id="calc" class="net.testbean.CalcBean" scope="page"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>calcok.jsp</title>
</head>
<body>
<h3>* Java Bean 이용한 계산 결과 *</h3>
<%
int num = Integer.parseInt(request.getParameter("num").trim());
out.print("절대값 : " + calc.abs(num));
out.print("<hr>");
out.print("팩토리얼 : " + calc.fact(num));
%>
</body>
</html>
참고로 팩토리얼 때문인지 음수를 입력하면 StackOverflowError가 발생한다.