Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- static
- 자바빈즈
- opener
- target
- session.removeAttribute
- scanner
- 미래직장
- Alert
- 페이지이동
- 데이터사이언스
- iframe
- 영감
- 동기 부여
- session.setAttribute
- Import
- 버리자
- 페이지 이동
- \
- 빈즈
- 향상된 for문
- 파일 호출
- 로그인화면
- 파일호출
- 동기부여
- session.getAttribute
- "
- javaBeans
- ;
- BEANS
- 팝업창
Archives
- Today
- Total
갈림길 이정표
[JSP] javaBeans *개념 미완성* 본문
구구단 예제는 하도 많이 풀어봐서 for문을 써야 된다는 원리는 잘 알고 있다. 만약 Gugudan이라는 1~9와 곱한 결과를 배열로 저장시키는 java Class (POJO) 를 생성하고 JSP를 이용하여 호출할 경우 <% ... %>태그안에 Gugudan 객체 생성 (호출할 때마다 새로운 객체를 생성하므로 비효율적), 혹은 인스턴스를 생성 [Singleton패턴] 및 공유하며 HTML문서와 왔다갔다 하느라 코드의 길이가 길어지고 가독성이 떨어진다.
하지만 만약 이 과정을 한줄 코드로 사용 가능하다면 어떨까?
오늘은 이것을 가능하게 해주는 javaBeans에 대해 알아보자
javaBeans (자바빈즈)
자바로 작성된 소프트웨어 컴포넌트이다. (Servlet & JSP 책 참고)
[gugu.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>beans구구단</title>
</head>
<body>
'beans'를 사용한 구구단 출력 <br>
<form action="gugu.jsp" method="post">
단 입력: <input type="text" name="dan">
<input type="submit">
</form>
</body>
</html>
[Gugudan.java]
package pack;
public class Gugudan { //POJO (순수 자바 멤버들로 구성된 클래스)
private static Gugudan gugudan = new Gugudan(); //GOF의 Singleton 패턴
public static Gugudan getInstance() {
return gugudan; //한번만 생성(?)
}
public Gugudan() {
}
public int[] computeGugu(int dan) {
int[] gu = new int[9];
for (int i = 1; i < 10; i++) {
gu[i-1] = dan * i;
}
return gu;
}
}
[gugu.jsp]
<%@ page import="pack.Gugudan"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
**(beans를 알기 전)현재 내 기술로 할 수 있는 방법 **<br>
<%
int dan = Integer.parseInt(request.getParameter("dan"));
out.println(dan + " 단 출력<br>");
//Gugudan gugudan = new Gugudan();
/*(상속(is a)은 할 수 없어) 클래스 포함(has a)관계 → 하지만 매번 새로운 객체를 생성하기 때문에 비효율적 ∴해결책: 싱글톤*/
Gugudan gugudan = Gugudan.getInstance();
/*Singleton 패턴(객체 생성 X, Instance 한개 생성해 하나의 주소를 공유) → 포함관계로써 여전히 부담스러움. ∴해결책: BEANS*/
int re[] = gugudan.computeGugu(dan);
for(int a = 0; a < 9; a++){
out.println(dan + "*" + (a + 1) + "=" + re[a] + " ");
} //나중에 ELJST를 이용해 해결 가능
%>
<hr>
**Beans 사용 **<br>
<jsp:useBean id="gugu" class="pack.Gugudan" scope="page"/>
<!-- 새로 만들 객체명, PATH명을 정확히 배워야 함 (싱글톤 패턴을 내부적으로 해줌) -->
<!-- scope="page"가 default = 현재 jsp 페이지에서만 유효하다는 뜻
| application: 서비스가 되는 모든 페이지에 유효(너무 범용적이라 안씀)
| session: 하나의 클라이언트의 모든 파일에서 유효 (초기화되지 않음)
| page, request: 클라이언트가 부를 때마다 계속 초기화됨-->
<%
int re2[] = gugu.computeGugu(dan); //gugu!
for(int a = 0; a < 9; a++){
out.println(dan + "*" + (a + 1) + "=" + re2[a] + " ");
}
%>
</body>
</html>
위 코드블럭에서 보듯이 javaBeans에는 규칙이 있다.
'Programming Language > Servlet & JSP' 카테고리의 다른 글
[JSP] 레코드 단위 처리 Bean (Form Bean) (0) | 2020.08.26 |
---|---|
[JSP] Bean을 통한 값 전달 (0) | 2020.08.26 |
[JSP] Session test (0) | 2020.08.26 |
[JSP] Redirect / Forward test 2 (feat. WEB-INF) (0) | 2020.08.26 |
[JSP] Redirect / Forward 방식 (0) | 2020.08.26 |
Comments