강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

session bean

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.gif title34.gif
2001-01-02 kenu

bean에 대해서 더 고급스럽게 알기가 참 힘드네요. 예제를 실행해보는 것도 벅차네요. 예제를 백가지 다뤄보면 빈에 대해서 자유롭게 코딩할 수 있고, 기획할 수 있기를 그냥 소망해 봅니다.

빈에는 scope 라는 속성이 있습니다. 요것을 조정하면 bean의 영향력을 맘대로(?) 조정할 수 있습니다. 스코프란 범위라는 말로 해석할 수 있습니다. session bean의 scope 속성에는 4가지가 있습니다. page, request, session, application 이렇게 4가지 입니다. 대충 의미로 때려맞출 수 있을 겁니다. 초보는 찍는 실력이 좋을수록 코딩에 과감하게 됩니다. 물론 수습할 수 있도록 bak 파일은 만들어 놓는 것이 좋죠.

이제 살펴 볼 예제는 책에서 빌려(베껴)온 것입니다. page마다 로딩될 때 그 사이트에 머물러 있는 시간을 표시해 주는 빈입니다.

TimerBean.java
package bean;
public class TimerBean {
	private long start;
	public TimerBean() {
		start = System.currentTimeMillis();
	}
	
	public long getElapsedMillis() {
		long now = System.currentTimeMillis();
		return now - start;
	}
	
	public long getElapsedSeconds() {
		return (long)this.getElapsedMillis()/1000;
	}
	
	public long getElapsedMinutes() {
		return (long)this.getElapsedMillis()/60000;
	}
	
	public void reset() {
		start = System.currentTimeMillis();
	}
	
	public long getStartTime() {
		return start;
	}
	
	public void setStartTime(long time) {
		if (time <= 0)
			reset();
		else
		  start = time;
	}
}

이 파일을 TimerBean.java 라는 이름으로 저장을 하고, WEB-INF/classes/bean 디렉토리 아래 위치시킵니다. 이제 컴파일을 시킵니다. resin 은 옵션에 따라서 컴파일하지 않아도 됩니다. tomcat의 경우는 컴파일 해주세요. 도스모드에서 컴파일하실 때, path 에 E:jdk1.3in 이 잡혀있어야 합니다. 그리고, classpath 에는 E:jdk1.3lib ools.jar 가 잡혀있어야 합니다. 환경변수 설정하는 법은 [다른 강좌]를 참고해주세요. 그리고, bean이 돌기 위해서는 E:jakarta-tomcatwebappsROOTWEB-INFclasses 가 classpath 에 추가되어야 합니다. 다른 곳에서(톰캣의 환경설정파일) 설정하는 법은 저도 탐색중입니다. 일단 어디든 classpath 가 설정되어 있다면 빈이 돌아갈 수 있습니다.

 

이제 WEB-INFclasseseanTimerBean.class 파일을 확인하시고, jsp 파일로 넘어갑니다.

spentTime.jsp

<jsp:useBean id="timer" class="bean.TimerBean" scope="session" />
<font color="8080FF" style="font-size:8pt">Surfing Time:
<jsp:getProperty name="timer" property="elapsedSeconds" /> Secs</font>

이 파일은 tomcat의 경우 ROOT 디렉토리에 넣어주세요. Resin의 경우 doc 디렉토리, 그리고, server.xml 이나 resin.conf 를 변경하셨다면 그곳에서 지정한 root 디렉토리에 집어넣어주시면 됩니다.

일단 설치가 다 되셨다면 http://localhost/spentTime.jsp 로 확인해 봅니다. 환경설정파일들을 변경하지 않으셨다면 http://localhost:8080/spentTime.jsp 하셔야겠죠.

Unable to load class TimerBean 에러가 나왔다면 다시 path와 classpath 를 확인해주세요. 그리고, 서버 죽였다가 살리고 다시 불러보세요. 있잖아요. 다운된 컴퓨터도 전원을 퍽 껐다가 키면 제대로 돌아가잖아요. --; 비유가 안 좋네요. 제 한계입니다. ^^;

화면에 Surfing Time : 0 secs 라고 나오죠? Reload 해보세요. 시간이 자꾸 올라갑니다. 이 파일을 다른 파일에서 불러오는 것입니다. 포함시키는 것이죠.

sessionBean.jsp

<html>
<head><title>Bean 공부
</title></head>
<body>
세션빈을 이용해서 사이트에서 머무는 시간을 표시해 줍니다.
<hr> &lt;jsp:include page="spentTime.jsp" flush="true" /><br>
<jsp:include page="spentTime.jsp" flush="true" />
<hr> &lt;%@ include file="spentTime.jsp" %><br>
<%@ include file="spentTime.jsp" %>
</body>
</html>

파일을 spentTime.jsp 가 있는 디렉토리에 저장합니다. 그리고 브라우저에
http://localhost/sessionBean.jsp 라고 입력하시면 아까 로딩된 시간에 이어서 시간이 올라갈 것입니다.

한가지 장난을 쳐 보겠습니다. <%@ include file="..."%> 과 <jsp:include page="..."/> 의 차이점을 대충 느끼실 것입니다. 그에 따른 설명은 하지 않겠습니다. 그냥 알고 계세요. 장난치는 방법은 spentTime.jsp 파일의 color 값인 "8080FF" 를 "808080" 으로 바꾸고 저장한 뒤에 http://localhost/sessionBean.jsp 을 reload 해 보세요.

아마도 <%@ include file %> 이 미워질 것 같습니다. 다른 장난은 음~ scope 값을 변경해서 테스트해 보세요. page, request, session, application 중에 하나를 spentTime.jsp 파일의 <jsp:useBean/> 태그의 scope 속성 값에 대입해서 실행해 보십시오. 차이를 느낄 수 있을 것입니다.

오늘 강의는 여기서 마치죠. 도움이 될래나... 그냥 초보강사였습니다.

 

참고 : Web Development with Java Server Pages, 인포북 192p

kenu: heogn@shinbiro.com
http://okjsp.pe.kr

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  119 명