[JSP/Servlet] 방문자 카운트 올리는 예제 <JSP, BEAN>

JSP로만 구현할 때


counter_file.jsp

<%@page import="java.io.PrintWriter"%>

<%@page import="java.io.FileReader"%>

<%@page import="java.io.BufferedReader"%>

<%@ page language="java" contentType="text/html; charset=EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<title>Insert title here</title>

</head>

<body>

<%!

int visitCount;

String path;

public void jspInit(){

// 이클립스의 경로가 아닌 실제 저장된 경로

//C:\lsh\java\web_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeanTagProject\

BufferedReader br = null;

try{

path = getServletContext().getRealPath("/");

br = new BufferedReader(new FileReader(path + "\\counter.txt"));

String strCounter = br.readLine();

visitCount = Integer.parseInt(strCounter);

}catch(Exception err){

err.printStackTrace();

}finally{

if(br!=null){

try{

br.close();

}catch(Exception err){}

}

}

}

void setFile(){

PrintWriter pw = null;

try{

pw = new PrintWriter(path+"\\counter.txt");

pw.println(visitCount);

}catch(Exception err){

err.printStackTrace();

}finally{

if(pw!=null){

try{

pw.close();

}catch(Exception err){}

}

}

}

public void jspDestroy(){

setFile();

}

%>

<%

if(session.isNew()){

visitCount++;

setFile();

}

%>

<h2>총 방문자 수 : <%=visitCount%></h2>

</body>

</html>


counter.txt로 메모장 파일 하나 생성해서 0으로 값을 저장




결과



위의 소스에서 주석표시된 이클립스 경로가 아닌 실제 경로로 가서 counter.txt파일을 열여보면 방문자 수 카운트가 올라가는 것을 볼 수 있다.





자바빈으로 구현할 때




경로를 지정해 주기위해서 WEB-INF에 classes 폴더를 생성후 counter.txt파일을 넣어준다.


counter_file_bean.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"%>

<!DOCTYPE html>

<html>

<head>

<title>Insert title here</title>

</head>

<body>

<jsp:useBean id="visit" class="mybean.CounterBean" scope="application"/>

<%if(session.isNew()){%>

<jsp:setProperty property="counter" name="visit" value="1"/>

<%} %>

<h2>총 방문자 수 : <jsp:getProperty property="counter" name="visit"/> </h2>

</body>

</html>


CounterBean.java

package mybean;


import java.io.BufferedReader;

import java.io.FileReader;

import java.io.PrintWriter;

import java.net.URL;


public class CounterBean {

private int visitCount;

private String path;

public CounterBean() {

BufferedReader br = null;

try{

URL url = getClass().getResource("/");

path = url.getPath().substring(1) + "counter.txt";

br = new BufferedReader(new FileReader(path));

String strCounter = br.readLine();

visitCount = Integer.parseInt(strCounter);

}catch(Exception err){

err.printStackTrace();

}finally{

if(br!=null){

try{

br.close();

}catch(Exception err){}

}

}

}

@Override

protected void finalize() throws Throwable {

setFile();

}


void setFile(){

PrintWriter pw = null;

try{

pw = new PrintWriter(path);

pw.println(visitCount);

}catch(Exception err){

err.printStackTrace();

}finally{

if(pw!=null){

try{

pw.close();

}catch(Exception err){}

}

}

}

public void setCounter(int num) {

visitCount++;

setFile();

}

public int getCounter() {

return visitCount;

}

}




결과



댓글

Designed by JB FACTORY