[JSP/Servlet] 방문자 카운트 올리는 예제 <JSP, BEAN>
- BACKEND/Servlet&JSP
- 2017. 12. 27. 16:44
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;
}
}
결과
'BACKEND > Servlet&JSP' 카테고리의 다른 글
[JSP/Servlet] Forward기능으로 간단한 인증 예제 (0) | 2017.12.31 |
---|---|
[JSP/Servlet] 리다이렉트 기능 사용해서 간단한 로그인 인증 예제 (0) | 2017.12.31 |
[JSP/Servlet] 자바빈으로 회원가입 폼 만들기 예제 (0) | 2017.12.27 |
[JSP/Servlet] 자바빈으로 주차장 구현 예제 (0) | 2017.12.27 |
[JSP/Servlet] 자바빈으로 Count 구하는 예제 (0) | 2017.12.27 |