티스토리 뷰

Spring&Spring Boot/JSP

Servlet 개요

on1ystar 2019. 1. 11. 01:25
728x90
반응형

Servlet ?


Java를 이용해 웹 페이지를 만드는 동적인 언어로 Java파일 안에서 Java의 class 등을 이용해 작성합니다.

실제로 간단한 예제를 작성해 보면서 특징들을 알아보겠습니다.

프로젝트를 만드는 과정은 앞서 해봤던 JSP와 동일하기 때문에 넘어가겠습니다. (참조 : JSP 개요)

프로젝트가 생성됬으면 src폴더에 Servlet파일을 생성해 줍니다.


package 이름은 관행적으로 x.x.x로 만들어 줍니다. 이는 나중에 이름 충돌을 피하기 위함인데요, com.test는 회사의 도메인 이름이고 bnzn은 팀이름이 보통 오게 됩니다. 그리고 class name은 첫 문자를 대문자로 써줍니다. (어디까지나 일.반.적. 입니다 사실 개발자 마음입니다.)

그러면 왼쪽에 보이는 바와 같이 com.test.bnzn패키지 안에 HelloServlet.java파일이 만들어 졌습니다.

HelloServlet.java파일에 미리 몇가지 코드들이 작성되어 있네요.

사전에 배웠던 (미약한..) java문법 지식으로 살펴보면, public class HelloServlet으로 방금 만든 클래스가 있습니다. 이 클래스가 HttpServlet을 상속하고 있네요. 이 HttpServlet이 Http를 작성하기 위한 어떤 클래스 인 것 같습니다.

아래에는 값을 전달하는 방식인 doGet과 doPost메소드가 정의되어 있네요. 자세한 부분은 아직 공부하지 않아 잘 모르겠지만 일단 doGet함수에 HTML을 작성할 수 있다고 합니다. (차차 공부해 나갑시다 !)

PrintWriter 클래스에 response.getWriter() 메소드를 호출해 주면 out이라는 객체를 얻을 수 있습니다. PrintWrite는 문자열을 출력해주는 메소드를 가지고 있습니다.(참고로 PrintWriter객체를 생성하기 위해서는 위에 java.io.PrintWriter 클래스를 import해주어야 합니다 !)

이 out객체에서 print 메소드를 호출하고 파라미터 값으로 html태그들을 넣어줄 수 있습니다. html문서와 똑같이 작성해주면 됩니다.

그리고 서버로 실행시켜 주겠습니다.

Hello Servlet !! 이 잘 출력이 되네요. 

위에 Served at: /FirstTest는 미리 코딩된 response.gerWriter().append("Served at: ") ~에 의해 출력된 것 같습니다.

위 페이지에서 페이지 소스보기를 눌러보면

이렇게 java코드는 다 날아가고 출력시킨 문자열과 html문법들만 남아 있습니다. 이는 저번에 공부했던 내용으로 웹 브라우저는 java를 읽지 못하기 때문에 웹 컨테이너가 자바 문법을 해석해 html로 만들어 웹 서버에 전달하고 이를 다시 웹 브라우저에 전달했기 때문입니다.

참고로 위 브라우저는 Explorer인데요, chrome으로 열어보면

이렇게 페이지 소스보기를 클릭하지도 않았는데 html태그들이 그냥 바로 출력되어 버립니다.

이유를 몰라서 제가 구글링을 좀 해봤습니다.

크롬은 위의 코드를 객체 생성 전에 넣어주어야 하네요. "text/html;charset=UTF-8" 은 해당 문서의 text타입을 html로 하겠다는 의미입니다. html문서의 기본이 되는 문장인데 Internet Explorer에서는 자동으로 넣어주고 chrome에서는 아닌거 같네요. 

자세한 이유는 저도 잘 모르겠습니다...

이것으로 Servlet을 이용해 간단한 웹 페이지를 만들어 보았구요, JSP와의 비교는 끊고 다음 포스팅에서 이어가겠습니다 !


728x90
반응형

'Spring&Spring Boot > JSP' 카테고리의 다른 글

Servlet Mapping  (0) 2019.01.11
JSP와 Servlet 비교  (1) 2019.01.11
JSP 개요  (0) 2019.01.10
웹이란 ? 웹 프로그래밍의 개요  (0) 2019.01.10
개발 환경 구축하기(JDK,eclipse,tomcat)  (0) 2019.01.08
댓글