- 웹 서버는 정적인 페이지를 서비스한다.
- 웹 서버는 두 가지를 못한다.
- 동적인 컨텐츠 생성
- 서버 상에서 데이터를 저장
위의 문제들 때문에 Servlet 이 등장하였다.
Servlet 의 등장
- 동적인 컨텐츠를 삽입할 수 있다.
- 서블릿은 자바 코드 내에 HTML 내용을 삽입할 수 있다.
public class DemoServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("<p>Demo Servlet</p>");
out.println("</body>");
out.println("</html>");
}
}
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>sample.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demo-servlet</url-pattern>
</servlet-mapping>
- 클라이언트의 요청에 따라 doGet() 메소드가 실행되고, 이에 따라 브라우저 화면은 렌더링되면서 사용자에게 HTML 화면이 보여지게 된다.
- 위의 구문으로 서블릿을 작성하면 상당히 많은 양의 HTML 코드를 서블릿 단에서 적어야한다. 이는 결과적으로 수많은 리소스가 낭비된다.
- 해당 내용은 web.xml 에 설정해두어야 한다.
- 서블릿 이름과 어느 패키지에 속하였는지 명시
- 서블릿 이름과 해당 서블릿과 매핑할 URL 패턴을 명시
결과적으로 많은 리소스의 낭비로 인해서 JSP 가 등장하였다.
서블릿은 도움을 필요로 한다. (서블릿은 누군가의 도움이 필요하다.)
클라이언트로 요청이 들어온다면,
- 요청을 처리할 스레드를 만든다.
- 서블릿의 doPost() / doGet() 메소드를 호출한다.
- 두 메소드의 인자로 들어가는 하위 객체를 생성하고 서블릿으로 넘겨준다.
- HttpServletRequest
- HttpServletResponse
- 서블릿의 라이프 사이클을 관리한다.
서블릿에게 이러한 도움을 주는 개체는 컨테이너라 부르는 자바 애플리케이션이다.
reference
헤드퍼스트 디자인 패턴 : Servlet & JSP
'jvm lang' 카테고리의 다른 글
20190620 [java servlet] 자바 서블릿(Java Servlet) 03 : Filter (0) | 2019.06.20 |
---|---|
20190529 [java servlet] 자바 서블릿(Java Servlet) 02 : Container (0) | 2019.05.31 |
20190221 자바 객체를 해시테이블의 키 값으로 이용하자. (0) | 2019.02.21 |
20190216 자바, String (텍스트) 에서 괄호 다뤄보기 (0) | 2019.02.16 |
20190127 자바에서 XML 데이터 읽기 (배열형태) (0) | 2019.01.27 |