본문으로 바로가기

서블릿에 대해

category 웹/JSP 2018. 9. 10. 21:08

서블릿(servlet)

 

이번 서블릿에 대해 포스팅하겠습니다.

우선 서블릿은 서블릿 클래스로부터 만들어진 것입니다.

웹 컨테이너가 이 액션을 취해줍니다.

즉 서블릿 클래스를 가지고 서블릿 객체를 만든 후 객체를 초기화하여 웹 서비스 할 수 있는 형태로 만들어줍니다.

 

       (인스턴스화)                        (초기화)

서블릿 클래스----------------->서블릿 객체----------------> 서블릿

 

 

여기서 웹컨테이너에서 멀티 스레드로 할지 단일 스레드로 할지 정해야합니다.

멀티스레드는 필요한 서블릿 수가 적을 때 시스템 자원과 서블릿이 차지하는 메모리를 절약할 수 있는 장점이 있지만

공유 문제에 신경써야합니다.(동시에 사용)

단일세르데는 공유 문제는 신경 안쓰셔도 되지만 시스템 자원 메모리에 큰 낭비가 오게됩니다.

적절히 사용하도록 합시다.

 

앞에서 얘기드렸듯이 서블릿을 작성하기 위해서 규칙이 있습니다.

  1. javax.servlet.http.HttpServlet 클래스 상속
  2. doGet 메소드 doPost 메소드 안에 기술
  3. HTML문서는 doGet,doPost 메서드 두 번째 파라미터 이용

 

 

javax.servlet.http.HttpServlet 클래스 상속을 하는데 public 형으로 선언하여합니다. 남들도 사용 하기 위해서죠.

public class HundredServlet extends HttpServlet{

 

}

이 클래스 안에 doGet or doPost를 선언합니다.

여기에는 javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletResponse 파라미터를 받고

예외처리로 ServletException과 IoException을 던집니다.(throws)

 

우선 doGet메소드부터 보시죠.

 

public class HundredServlet extends HttpServlet{

 public void doGet(HttpServletRequest request, HttpServletResponse reponse) throws ServletException, IOException{

}

}

이런 식으로 메소드를 이용하시면 됩니다. doGet과 doPost의 차이는 다음에 설명드리도록 할게요.

실행 결과를 출력하기 위해서는 doGet메소드의 두번째 파라미터를 이용합니다.

PrintWriter writer=reponse.getWriter();

를 이용해서 출력합니다. 간단한 서블릿 클래스를 봅시다.

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

public class HundredServlet extends HttpServlet{
   public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
   int total=0;
   for(int cnt=1; cnt<101; cnt++)
      total+=cnt;
   PrintWriter out=response.getWriter();
   out.println("<HTML>");
   out.println("<HEAD><TITLE>Hundred Servlet</TITLE></HEAD>");
   out.println("<BODY>");
   out.printf("1+2+3+...+100=%d",total);
   out.println("</BODY>");
   out.println("</HTML>");
   }
}

1부터 100까지 더하는 코드입니다. reponse를 이용하여 출력해줍니다.

즉 파란색 부분이 HTML로 만들어 웹 브라우저로 출력하는 명령문입니다.

 

우선 이코드를 컴파일을 해야합니다.

cmd창을 열고

 javac -cp "아파치 톰캣 내 lib에서 servlet-api.jar 파일 경로명" HunderedServlet.java

명령어를 칩니다.

그러면 .class 파일이 만들어집니다.

이 파일을 아파치 톰캣 내 webapps 디렉토리가서 만든 아무 폴더에 WEB-INF 서브 디렉토리 생성합니다.

거기 안에서 classes라는 폴더를 만들고 거기다 집어넣어줍니다.

클래스 파일을 설치해줬다면 마지막으로 등록을 해줘야합니다.

등록은 web.xml 에서 해줍니다.

WEB-INF 서브 디렉토리에서 web.xml파일을 만들어줍니다.

그다음 <web-app> 시작 태그 안에 다음 내용을 추가합니다.

 

<web-app xmlns=http://java.sun.com/xml/ns/javaee version="2.5">

<servlet>

<servlet-name>hundred-servlet</servlet-name>

      <servlet-class>HundredServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>hundred-servlet</servlet-name>

<url-pattern>/hundred</url-pattern>

</servlet-mapping>

</web-app>

그다음 http://localhost:8080/폴더명/url-pattern 값 을 쳐서 들어가서 확인해봅니다.

ex)http://localhost:8080/brain/hundred

 

' > JSP' 카테고리의 다른 글

JSP의 기초(2)  (0) 2018.10.03
JSP의 기초  (0) 2018.09.19
서블릿에 대해(2)  (0) 2018.09.12
간단한 JSP 페이지 작성하기  (0) 2018.09.05
JSP와 서블릿 기초  (0) 2018.09.04