◆ 무한한 가능성/& JAVA

[Session] Session Timer 세션 타이머 세션 시간

치로로 2014. 2. 17. 19:23

출처> http://okjsp.pe.kr/lecture/lec04/bean02.htm

 

 

 

useBean : session bean : bean 활용 #1 : Bean 활용 #2

JSP 강좌 > useBean > session bean

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.3\bin 이 잡혀있어야 합니다. 그리고, classpath 에는 E:\jdk1.3\lib\tools.jar 가 잡혀있어야 합니다. 환경변수 설정하는 법은 [다른 강좌]를 참고해주세요. 그리고, bean이 돌기 위해서는 E:\jakarta-tomcat\webapps\ROOT\WEB-INF\classes 가 classpath 에 추가되어야 합니다. 다른 곳에서(톰캣의 환경설정파일) 설정하는 법은 저도 탐색중입니다. 일단 어디든 classpath 가 설정되어 있다면 빈이 돌아갈 수 있습니다.

 

이제 WEB-INF\classes\bean\TimerBean.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

 

 

 

 

<html>
<head>
<title>타이머 예제 </title>
</head>
<body>

<h2> 타이머 예제</h2> <hr>
<jsp:useBean id="timer" clas="javacan.bean.TimerBean" scope="session" />
세션 시작됩니다. 타이머 작동을 시작합니다.
</jsp:useBean>
타이머 빈의 프라퍼티를 마지막 접근한 뒤에 경과된 시간은
<jsp:getProperty name="timer" property="elapsedTimeAfterLastAccess" />
초 입니다. <br>
<jsp:setProperty name="timer" property="restart" />
타이머를 마지막 리셋한 뒤에 경과된 시간은
<jsp:getProperty name="timer" property="elapsedTime" />
초 입니다. <br>
타이머가 시작된 뒤에 경과된 시간은
<jsp:getProperty name="timer" property="elapsedTimeAfterInst" />
초입니다.<br> (세션이 시작된 뒤에 흐른 시간)<br>

<form name=form action="timer.jsp" method=post>
<input type="submit" name="check" value="경과시간 확인">
<input type="submit" name="restart" value="타이머 리셋">
</form>

</body>
</html>