1. init 메소드 사용하기
서블릿에서 init 메소드를 작성하면 서블릿이 초기화할 때 init메소드가 호출됩니다.
다음 예제는 init 메소드 사용 방법입니다.
위와 같이 서블릿 파일 한 개를 작성합니다.
FibonacciServlet.java
package com.exam.kch;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FibonacciServlet
*/
@WebServlet("/FibonacciServlet")
public class FibonacciServlet extends HttpServlet {
private BigInteger arr[];
//다음 init 메소드가 서블릿이 초기화할 때 반드시 호출된다.
public void init(){
arr = new BigInteger[100];
arr[0] = new BigInteger("1");
arr[1] = new BigInteger("1");
for(int cnt = 2; cnt < arr.length; cnt++)
arr[cnt] = arr[cnt-2].add(arr[cnt-1]);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String str = req.getParameter("NUM");
int num = Integer.parseInt(str);
if(num > 100)
num = 100;
resp.setContentType("text/html;charset=euc-kr");
PrintWriter out = resp.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>피보나치 수열</TITLE></HEAD>");
out.println("<BODY>");
for(int cnt = 0; cnt < num; cnt++)
out.println(arr[cnt] + " ");
out.println("</BODY>");
out.println("</HTML>");
}
}
실행 화면
다음과 같이 피보나치 수열이 잘 출력됩니다.
2. destroy 메소드 사용하기
init 메소드와 작성 방법이 비슷합니다. destroy 메소드는 서블릿의 마무리 작업 단계에서 웹컨테이너에 의해 자동으로 호출됩니다.
이번 예제는 다음 2개의 파일을 작성합니다.
InputName.html
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
이름을 입력하세요.<br>
<form action=GreetingServlet>
이름: <input type=text name=NAME>
<input type=submit value='확인'>
</form>
</body>
</html>
GreetingServlet.java
package com.exam.kch;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.GregorianCalendar;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class GreetingServlet
*/
@WebServlet("/GreetingServlet")
public class GreetingServlet extends HttpServlet {
private PrintWriter logFile;
@Override
public void init() throws ServletException {
try{
logFile = new PrintWriter(new FileWriter("C:\\Users\\kch\\Documents\\log.txt", true));//파일 열기
}catch(IOException e){
throw new ServletException(e);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("NAME");
String greeting = "안녕하세요, " + name + "님.";
if(logFile != null){
GregorianCalendar now = new GregorianCalendar();
logFile.printf("%TF %TT - %s %n", now, now, name);//파일에 쓰기
}
resp.setContentType("text/html;charset=euc-kr");
PrintWriter out = resp.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>인사하기</TITLE></HEAD>");
out.println("<BODY>");
out.println(greeting);//안녕하세요 누구님 값 띄우기
out.println("</BODY>");
out.println("</HTML>");
}
public void destroy(){
if(logFile != null)
logFile.close();//파일을 닫습니다.
}
}
실행 화면
InputName.html 을 먼저 실행하시고 다음과 같이 입력하면
다음과 같이 잘뜨는 것을 볼 수 있습니다.
저장한 경로의 파일을 열어보면 잘 저장된 것을 볼 수 있습니다. 파일에 저장이 안되면 close()메소드가 아직 호출안되서 그런것이니 서버를 restart 해주자.
'프로그래밍 > JSP Servlet' 카테고리의 다른 글
JSP/Servlet - 서버 및 서블릿 환경 정보 가져오기(ServletContext) (0) | 2016.01.05 |
---|---|
JSP/Servlet - jsp 페이지 초기화 파라미터 설정하기 (0) | 2016.01.04 |
JSP/Servlet - jspInit 메소드와 jspDestroy 메소드 활용 (0) | 2016.01.04 |
JSP/Servlet - 서블릿 초기화 파라미터 (0) | 2016.01.04 |
JSP/Servlet - 익셉션(exception) 타입별로 에러페이지 등록하기 (0) | 2016.01.02 |
JSP/Servlet - 서블릿 클래스에서 에러페이지 호출하기 (0) | 2015.12.30 |
JSP/Servlet - jsp 페이지에서 에러 발생시 다른 페이지로 이동하기 (0) | 2015.12.30 |
JSP/Servlet - JSP페이지에서 세션 사용하는 방법 (0) | 2015.12.29 |