1. 서블릿(Servlet)
- JAVA 코드로 HTML을 작성할 수 있도록 해주는 JAVA 프로그램
- 사용자가 서버에게 요청을 보낼 때 정적인 요청은 상관이 없지만 동적인 요청은 서버에서 못하기 때문에 웹 컨테이너에서 동적인 요청을 정적인 것으로 정제해서 응답해준다.
- 그 안에는 서블릿 클래스라는 게 있고 그 클래스가 들어온 동적인 요청을 정적으로 HTML틀에 데이터까지 위치시켜서 그대로 보내준다.
- 요청이 GET 방식이면 doGet메소드를 실행시키고 POST 방식이면 doPost를 실행시킨다.
- 이 와 같이 서블릿에서 직접 HTML 틀까지 만들어서 응답으로 보내준다.
- 이렇게 하나하나 쓰기 불편함으로 JSP를 쓰는 것이다.
out.print("<html>");
out.print("<head>");
out.print("<body>");
...
2. 서블릿의 매핑
- 서블릿은 매핑을 해야 사용자가 요청을 할 때 간결하고 간단하게 요청을 할 수 있고, 보안성을 높일 수 있다.
- 매핑하는 방법에는 두 가지가 있는데, web.xml에 하는 방법과 서블릿 클래스 파일 내에서 어노테이션을 이용하는 방법이다.
- 매핑을 하게 되어서 우리가 설정한 주소값으로 요청을 하면 서블릿을 실행하게 되는 것이다.
localhost:9090/test -> web.xml 또는 어노테이션으로 매핑해 놓은 서블릿 찾기
서블릿은 클래스이기 때문에 서블릿 실행
3. 서블릿 실행과정
① Thread에 의해서 서블릿에 있는 service() 메소드 호출
② 전송 방식을 파악해서 doGet() 또는 doPost() 메소드 호출
③ 각 메소드 안에 작성해 놓은 내용 실행(각 메소드 내에서 동적인 것들을 정적으로 바꿔서 보냄)
④ 소멸 단계
- WAS는 Response 객체를 HttpResponse형태(정적)로 바꿔서 웹 서버에 전달하고 생성된 Thread를 종료
- 그리고 HttpServletRequest, HttpServletResponse 객체를 제거
4. 예시
- <form> 태그에서 submit 버튼을 누르게 되면 설정되어 있는 MyServlet에 매핑되어 있는 서블릿으로 get방식으로 요청하게 된다.
- 위와 같이 서블릿 클래스를 만들게 되면 doGet 메소드와 doPost 메소드가 있는데, 전송방식에 따라 실행하는 메소드가 달라진다.
- <form> 태그에서 전송방식을 get으로 하고 action을 어노테이션으로 매핑한 MyServlet이기 때문에 이 서블릿 클래스의 doGet 메소드를 실행하게 돼서 응답을 보내주게 된다.
- 위 사용자 화면에서 사용자는 두 개의 입력값을 입력해서 요청하게 된다.
- 요청할 때 서블릿에게 보내는 것이기 때문에 request 안에 있는 메소드인 getParameter를 쓰면 입력값을 받을 수 있다.
- 사용자 화면에서 <input> 태그에서 name 속성으로 요청에 보내게 되는데 그래서 request.getParameter("식별이름")으로 입력값을 받을 수 있다.
- 이제 서블릿에서 응답을 보내줘야 하는데 응답은 response를 사용해서 응답해 줄 수 있다.
- response.setContentType("text/html; charset=UTF-8") 은 응답의 타입과 인코딩 등을 설정해주는 것이다.
- 응답의 타입을 html로 하고 인코딩을 UTF-8로 한다는 뜻이다.
- PrintWriter out = response.getWriter(); 는 응답의 데이터를 작성하기 위한 객체를 생성해 준 것이다.
- 이것을 통해 out.print()를 사용해 html로 응답을 해 줄 수 있게 된다.
'웹개발 > JSP' 카테고리의 다른 글
[JSP] 쿠키(Cookie) (0) | 2022.05.22 |
---|---|
[JSP] 내장 객체, Form 유효성 검사 및 예제 (0) | 2022.05.22 |
[JSP] 액션 태그 (0) | 2022.05.20 |
[JSP] 디렉티브 태그(Directive Tag) (0) | 2022.05.20 |
[JSP] JSP(Java Server Page), 스크립트 태그 (0) | 2022.05.19 |