서블릿
- 클라이언트의 요청을 받으면 서버에서 처리한 후 응답으로 결과값만 보내는 구조
- 자바 언어를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양
- 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종
- 서블릿: 기본적으로 JAVA→ HTML 작성시 불편 .. ↔ JSP: 기본적으로 HTML, 필요한 부분만 JAVA 삽입

- MVC 패턴:하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러와 뷰, 모델 영역으로 역할을 나눈 것
- 컨트롤러(1개): HTTP 요청을 받아서 파라미터를 검증, 비즈니스 로직을 실행. →뷰에 전달할 결과 데이터를 조회, 모델에 저장
- 모델: 뷰에 출력할 데이터 보관
- 뷰: HTML을 생성하는 부분
- 다이나믹 프로젝트 생성시

특징
-
URL 매핑 필수
- 요청을 받아 처리하는 것이 jsp가 아니고 자바 클래스이므로 자바 클래스와 연결되는 url 이 필요(url 설계: 프로젝트 시작시에 설계)
- 애노테이션 사용 : @WebServlet(urlPatterns = {배열})
- web.xml 에서 servlet 태그로 설정하기
-
서블릿 클래스는 javax.servlet.http.HttpServlet 를 상속한다.
-
생명 주기(life cycle) 존재, 이에 따른 메소드 동작
- init() : 메모리에 없을 때 요청을 받았다면 초기화 메소드로 가장 먼저 실행
- service() : 요청이 오면 실행되는 메소드. GET과 POST 모두 처리, service()메소드가 구현한 내용이 실행되면(재정의 메소드로 정의되어 있으면)
doGet() 또는 doPost()는 실행 X
- doGet() : Get 요청일 때 실행하는 메소드
- doPost() : POST 요청일 때 실행하는 메소드
- destroy() : 메모리에서 서블릿이 제거가 될때 실행되는 메소드
- 일반적으로 service() 만 사용하거나 또는 doGet() 과 doPost() 만 사용
-
service, doGet, doPost 메소드의 인자 : 메소드로 전달해 사용
- HttpServletRequest request : 요청
- HttpServletResponse response : 응답
-
jsp 내장객체는 요청,응답 외에는 서블릿에서 직접 선언해서 사용
- session 은 HttpSession 객체로 선언
- out 은 PrintWriter 객체로 선언
* 주의 사항 : 서블릿의 url 이름이 동일하거나 url 에 오류가 있으면 톰캣 시작 X
코드
- @WebServlet(urlPatterns = {"/"},description = "모든 요청을 받는 서블릿")
- urlPatterns = {"/customers.cc"} → .cc 라는 임의의 페이지를 만들어냄 →해당 주소로 a 태그를 통해 이동 가능
- doGet(req,resp) & throws 필수
@WebServlet(urlPatterns = {"/customers.cc"}, description="고객 전체 조회")
public class CustomerServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(CustomerServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
JSP와 서블릿 차이
- 서블릿에서는 jdbc 관련된 실행만 하고, 조회결과는 jsp에서 웹페이지 만들어 확인
| 서블릿 | JSP |
|---|
| 자바코드 안에서 전체 HTML 작성 | HTML 코드 안에서 필요한 부분만 자바코드를 스크립트 형태로 추가 <% %> |
| 변수 선언 및 초기화 필수 선행 | 기능을 내장 객체로 제공, 즉시 사용가능 |
| 컨트롤러를 만들때 사용 | 처리된 결과를 보여주는 뷰 만들때 사용 |