Servelt을 공부해 봅시다~!!

JSP페이지 기술만 사용하면 되지 Servlet기술을 왜 사용하냐구요?


JSP는 HTML문서에 자바코드가 들어가는 구조라는것을 기억하시나요?

실제 웹어플리케이션들의 코드는 복잡한 것들도 굉장히 많다고 해요

이럴때는 HTML의 구조를 가지고있는 JSP를 이해하기 어렵게 만든다고 합니다.

또한, 중요한 로직의 유출을 방지하고 자바언어를 모르는 사람이 실수로 중요한 코드를 건드리는 경우를 막기위해서는 

걸림돌이 된다고 합니다.


따라서 프로그래밍의 기능을 구현하는 복잡한 로직은 서블릿으로, 눈으로 보여지는 부분은 JSP페이지가 담당하도록 나눕니다.

그리고, JSP페이지를 실행하기 전에 서블릿클래스로 변환하기 때문에 서블릿에 대해 알아두어야 JSP의 작동원리를 이해하는데 도움이 된다고 합니다.


서블릿 클래스를 작성하기 위한 세가지 규칙을 먼저 알아봅시다


1. 서블릿클래스는 javax.servlet.http.HttpServlet클래스를 상속받도록 합니다.

2. doGet 혹은 doPost메소드를 오버라이딩하여 안에 웹브라우저로 부터 요청(request)이 왔을 때 실행 되기를 기대하는 코드를 기술합니다.

3. HTML문서는 doGet, doPost의 두번째 파라미터인 HttpServletResponse를 사용하여 출력을 합니다.


1부터 100까지의 합을 구하는 서블릿 클래스를 만들면서 공부해보겠습니다.




저는 HundredServlet이라는 이름의 클래스를 만들었습니다.

HttpServlet을 상속받고있구요~

HttpServlet클래스의 doGet메소드를 사용하겠습니다.


doGet메소드 안을 들여다 보면 제가 한글출력을 위해서 두번째 파라미터인 HttpServletResponse타입의 파라미터의

setContentType메소드를 사용했습니다.


그 다음 1부터 100까지 더하는 명령문을 작성했습니다

그리고 그 결과를 출력하기 위한 코드를 18번라인부터 25번라인까지 작성하였습니다.

타입이 HttpServletResponse인 두번쨰 파라미터를 이용하여 getWriter메소드를 호출해서 PrintWriter객체를 생성하였습니다.

이 PrintWriter객체는 웹 브라우저로 데이터를 출력할 수 있게 해줍니다

println, printf와 같은 메소드를 이용해 파라미터로 HTML코드들을 넘겨주면 웹 브라우저로 전송해 줄겁니다.


이렇게 하여 위의 이미지와 같은 서블릿클래스가 완성되었습니다.


참, 하나 더 아셔야 하는 것은 doGet, doPost메소드의 익셉션 부분인데요

익셉션이 필요하지 않다면 생략을 하셔도 됩니다.

IOException, ServletException 두가지의 익셉션이 던져지는데요 이 이상의 익셉션이 던져질 수는 없습니다.


이제 작성된 서블릿클래스를 등록하여야합니다.

어디에다 등록하냐구요?

WEB-INF폴더 안의 web.xml에 등록을 해줍니다.


위의 그림과 같이 등록을 해주면 되는데요

xml문서는 영어대소문자를 구분하니 주의하셔야합니다.

그리고 항상 태그가 끝나는것을 알려주어야합니다 

' / ' 슬래쉬 기호로 끝 표시를 해준다는 점 아시죠? ^^


위의 이미지와 같은 형식으로 web.xml에 여러 서블릿 클래스를 등록하여 사용합니다.

<sevlet-name>엘리먼트의 사용한 서블릿이름은 <servlet-mapping>에서의 <servlet-name>과 같게 적어야합니다

(해당되는 이름의 서블릿클래스를 참조하기 떄문이죠)


이렇게 서블릿클래스를 작성하고 등록을 하였으니~ 실행을 시켜봐야겠습니다


위와 같이 나왔다면 성공~!!

제가 주소표시줄에 빨간색으로 밑줄 쳐 놓은 부분보이시나요~?

web.xml에 <url-pattern>엘리먼트에 적었던 그 URL이네요~ ^^


만약 404에러가 나오셨다면

웹서버가 URL에 맞는 파일을 찾지 못했기 때문입니다.

이럴 경우는 서블릿클래스의 등록에서 오타가 났거나 경로가 잘못 적혀져 있는 가능성이 많으므로 다시 한번 확인하여 수정하시면 됩니다.


또한 500에러가 나오셨다면 서블리클래스의 소스코드부분이 잘못된 경우가 큽니다.

하지만 에러페이지를 잘 읽어보시면 어느부분이 에러인지 알려주니 그 부분을 다시 한번 살펴 보시고 수정하시면 됩니다.


다음 포스팅에서는 데이터값을 입력받고 출력해보는 서블릿클래스를 작성해보겠습니다^^