Servlet 의미 / 생성과 사용
✍ JSP 공부 1일차.. Tomcat 웹 서버도 준비 됐겠다
악명높은 Servlet을 생성하고 사용해보자!
Servlet이란? ( 간략히 )
앞으로 아주 아주 많이 보게될거라는 Servlet.. 도대체 뭘까?
Servlet을 생성하고 사용하기 앞서 뭔지 간략하게 알아보자! 🤓
구글에 Servlet을 검색하면 위와 같이 나오는데, ( 출처 : 위키백과 )
쉽게 말하자면 ..
- Servlet은 웹과 Java가 소통할 수 있게 해주는 기술이다.
- 클래스로 이루어져 있으며 HttpServlet이라는 클래스를 상속받는다.
- 웹으로부터 클라이언트의 요청을 파라미터로 받을 수 있고, 응답 또한 파라미터를 사용하여 html 파일이라던지 jsp 파일에 띄워줄 수 있다.
Servlet-api.jar 설정
Servlet이 뭔지 대충 알았으니 Servlet을 한번 생성해볼건데, 그전에 해야할게 하나 있다.
내 웹 프로젝트의 라이브러리에 servlet-api.jar를 추가해줘야 하는데, 방법을 알아보자!
servlet jar 추가하기
- 웹 프로젝트 오른쪽 마우스 클릭 후 맨 밑의 Properties 클릭.
- 위와 같은 창이 나오는데 검색창에 "lib" 라고 검색하면 Java Build Path 가 나온다. 클릭 후
우측 상단 탭에 Libraries 클릭 - Classpath 클릭 - Add External JARs... 버튼 클릭!
- 잘 클릭 했다면 위와 같이 파일 탐색기가 나온다.
파일 탐색기에서 우리가 설치했던 Tomcat의 경로를 찾아 가면 위 사진과 같이 설치했던 Tomcat 폴더안에 lib 폴더가 있다.
lib 폴더에 들어가보자.
- lib 폴더에 수많은 .jar 파일이 있는걸 볼 수 있다.
우린 이중에 servlet-api.jar가 필요하다! 찾아서 선택 후 열기를 눌러주자.
- 위 사진과 같이 Classpath에 항아리 단지 모양의 servlet-api.jar가 추가 되었다면 성공! Apply and Close 로 나가주자.
이로서 Servlet-api.jar가 추가되어 Servlet을 생성할 수 있게 되었다!
Servlet 생성과 사용
자 이제 Servlet을 생성할 준비가 모두 되었다. 그럼 Servlet을 생성해보자!
- 웹 프로젝트 > Java Resources > src/main/java 에 패키지 만들고 그 안에 클래스 만들기.
( 패키지 이름은 회사의 이름을 따라간다고 한다. )
- MyServlet01 클래스를 진정한 Servlet으로 만들어주기 위해서는 HttpServlet 클래스를 상속받아야 한다.
-
위와 같이 HttpServlet을 상속받으면 여러가지 메서드들을 Override할 수 있는데 이중 service 메서드를 사용해 보자. override 받은 메서드 안의 내용은 지워도 된다.
중요한건 매개변수 HttpServletRequest 와 HttpServletResponse이다.
위 매개변수들을 사용하면 java내에서 html 파일이나 jsp 파일에 있는 값을 가져오거나 보내줄 수 있다.
-
자, 그럼 service() 메서드에 있는 HttpServletResponse 매개변수를 이용하여 웹사이트에 글을 써보자.
📌 응답 하기 ( Response )
위 사진과 같이 service() 메서드 안에 매개변수 HttpServletResponse를 이용하여 웹에 "Hello world"라는 응답을 보내줄 수 있다. 하지만 그 전에 해야할게 하나 있다. 바로 url(고객이 요청할 주소)을 설정해줘야 하는데, 이를 설정하려면 web.xml 파일을 설정해줘야 한다.
아래의 링크에서 web.xml이 뭔지, @Anntation이 뭔지 보고오자.
web.xml / @Annotation 설명
- 위 링크에서 web.xml과 @Annotation이 무엇인지 알고 왔다면, @WebServlet()을 이용해 url을 설정해주자.
- Client가 해당 url 요청을 했을 때 과연 우리가 설정한 "Hello World" 라는 응답이 보내지는지 테스트 해보자!
( url : localhost:8081/hello )
url 설명
- localhost : IP 주소
- 8081 : server port 번호
성공적으로 "Hello world"가 웹에 찍히는걸 볼 수 있다.
- 웹에 응답을 보냈으니 요청도 받아보자.
📌 요청 하기 ( Request )
요청은 GET 방식과 POST 방식이 있다.
GET / POST 방식이 무엇인지는 아래 링크에서 살펴보자.
GET 방식 / POST 방식
자 이제 본격적으로 Client의 요청(GET방식)을 받아보자!
💡 위 화면을 보자
웹에서 요청을 받을 때 html 파일의 태그 속성 중 name에 값이 담기는데, 이 담긴 값을 Servlet에서 HttpServletRequest 로 접근 할 수 있다.
- arg0.getParameter()
웹에서의 요청을 받아 넘겨 받은 값은 위 Java코드에 의해 console에 출력될 것이며 페이지 이동이 일어나고, submit completed!! 문구를 볼 수 있을 것이다.
( 🔑 form태그의 submit이 통신을 만들어냄 즉 제출 버튼을 누르는 순간( 클라이언트의 요청 ) 값들이 name에 담기며, form태그의 속성인 action에 작성된 path로 이동하게 된다. )
위 사진과 같이 url에 get방식으로 데이터가 전송되고 ( ? 뒤의 값 )
콘솔에 ID정보와 Password정보가 출력된다.
이로써 Servlet을 이용해 웹과의 통신 (요청과 응답)을 성공적으로 해냈다. ✌
📝
배운 내용을 최대한 자세히 적는다고 적어봤는데, 아직 Servlet과 jsp, 웹과의 통신 등 이해도가 완벽하진 않게 느껴진다.
Servlet은 앞으로의 개발 인생 에서 중요한 부분을 차지할거라고 얘기를 많이 들었으니 더욱더 Deep Dive 해보도록 하자. 🤓