Servlet 서블릿
서블릿이란 server + applet 으로 url 요청을 처리하는 api이다. was에서 동작하는 자바 클래스로 동적 컨텐츠를 제공한다고 보면 된다.
더 쉽게 말하자면 jsp에서 요청을 받아 클라이언트에게 요청 정보를 전달해 dao에서 메소드를 통해 요청을 처리해주는 것이다.
이제까지 jsp 실습을 하며 mvc 패턴에서 기능을 구현할 때 controller.jsp를 사용했었다. 이젠 이걸 서블릿 (java파일)으로도 처리할 예정이다.
jsp 나 servlet 둘 중 하나만 쓰면 되지 않나? 라는 생각이 들었는데
둘을 적절히 조화롭게 사용해야 최상의 결과를 얻을 수 있다고 한다. (어렵다..)
둘의 간단한 차이점으로는
jsp는 html 코드 안에 java 코드 이고 servlet은 java 코드 안에 html 코드이다.
1. 기본 Servlet 구조
2. 기본 MVC패턴의 Servlet Controller 구조
3. 확장된 MVC 패턴의 Servlet Controller 구조
mvc 패턴으로 웹개발을 할때 일반적으로 jsp를 view로 controller를 servlet으로 사용한다고들 한다.
▶ mvc 패턴이란 여기서 참고
WAS는 서블릿 요청을 받으면 서블릿이 메모리에 있는지 확인하고 메모리가 없다면 올린다.(객체 생성 -> init( ) 메소드 실행)
메모리가 있다면 요청에 응답 -> service( ) 실행
WAS 종료 -> destroy( ) 실행
웹 브라우저가 서버에게 요청할때 -> doGet( ) / doPost( )
요청이 Get일때
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
요청이 Post일때
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- request : 요청에 관한 정보들 넣어줌
- response : 응답에 관한 정보들 넣어줌
참고로 get방식은 기본적인 service 메소드로 외부와 소통하기 위해 사용하는 경우가 많다. 이는 URL로 정보가 넘어가는 방식이라 주소창에 정보가 노출되어 보안에 취약하고 대량의 데이터 전송엔 좋지 않다.
post방식은 html header로 정보가 넘어가는 방식으로 외부에 노출하는 작업이 아닌 유저의 작업을 처리하는 경우에 사용한다.
이제 작성법에 대해 보자면
servlet은 버전에 따라 작성법이 나뉜다.
- 3.0 이상에서는 web.xml 파일을 사용하지 않고 어노테이션을 사용한다.
- 3.0 미만에서는 web.xml 파일을 사용한다.
3.0 이상이라고 하더라도 web.xml 을 쓰지 않는 건 아니다.
스프링이나 다른 걸 쓸때 또 설정 부분을 xml 에 추가하기도 하니까 만들어 두는 게 좋다고 한다.
web.xml 은 프로젝트를 만들때 만들어도 되고 나중에 이렇게 추가해도 된다.
참고
www.boostcourse.org/web316/joinLectures/12943
댓글