16
Servlets & JSP 2장

HeadFisrt Servlet&JSP Chapter 2

  • Upload
    j-b

  • View
    75

  • Download
    2

Embed Size (px)

Citation preview

Servlets & JSP

2장

What is ContainerA. 요청을 받아오면 컨테이너에서 처리한다.

톰캣?

What is TomcatResponse, Request 객체 생성

클라이언트의 요청에 대한 서블릿 스레드 생성

서블릿 스레드에 아까 만든 객체 넘김

service()가 작업한 response를 HTTP로 클라이언트에게 보냄

서블릿 service() 메소드 호출

어떤 스레드인지는 DD를 이용하여 알아냄

service()

• 요청에 따라 doGet() 혹은 doPost() 메소드를 호출

• doGet()/ doPost() 는 동적인 페이지를 생성

• doGet(), doPost()는 동적인 페이지를 어떻게 생성할까?

얘가 서블릿.

public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

String d = Integer.toSting((int) ((Math.random()*6)+1));

printWriter out = response.getWriter(); out.println(“<html> <body>”+ …); }

}

doGet이 요기있넹

얘가 서블릿.

public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

String d = Integer.toSting((int) ((Math.random()*6)+1));

printWriter out = response.getWriter(); out.println(“<html> <body>”+ …); }

}

아까 톰캣이 만든 객체

얘가 서블릿

public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

String d = Integer.toSting((int) ((Math.random()*6)+1));

printWriter out = response.getWriter(); out.println(“<html> <body>”+ …); }

}

똑똑한 놈이죠. 비즈니스 로직

얘가 서블릿

public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

String d = Integer.toSting((int) ((Math.random()*6)+1));

printWriter out = response.getWriter(); out.println(“<html> <body>”+ …); }

} 서기입니다. 프리젠테이션 로직

하지만 좋은 코드가 아닙니다.

MVC

• Model: 똑똑한 비즈니스 로직. 자바코드입니다.

• View: 글 잘쓰는 프레젠테이션 로직. JSP입니다.

• Control: 관리직이죠. 일을 받아와서 M과 V에게 줍니다.

M의 일은 M에게 V의 일은 V에게

얘가 서블릿

public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

String d = Integer.toSting((int) ((Math.random()*6)+1));

printWriter out = response.getWriter(); out.println(“<html> <body>”+ …); }

}

JSP(V)

자바코드(M)

서블릿(C)

얘가 MVC 디자인 패턴public class DatingServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletReponse response) throws IOException {

자바 클래스가 할 겁니다.

}

JSP가 할 겁니다.

서블릿(C)

What is DD

• 다른 URL로 들어왔는데 같은 서블릿이 필요하다면?

• 클라이언트가 서버에 직접 접근해온다면?

그래서 DD를 씁니다.

얘가 DD

<servlet> <servlet-name> Internal name1</servlet-name> <servlet-class>foo.servlet1<servlet-class> </servlet>

<servlet-mapping> <servlet-name>Internal name 1</servlet-name> <url-patten>/Public1</url-patten> </servlet-mapping>

이런 애들이 많이 있어요.

얘가 DD

<servlet> <servlet-name> Internal name1</servlet-name> <servlet-class>foo.servlet1<servlet-class> </servlet>

<servlet-mapping> <servlet-name>Internal name 1</servlet-name> <url-patten>/Public1</url-patten> </servlet-mapping>

이거는 클라이언트가 알아요 이거 주면 DD가 Internal name1을 알려줘여

얘가 DD

<servlet> <servlet-name> Internal name1</servlet-name> <servlet-class>foo.servlet1<servlet-class> </servlet>

<servlet-mapping> <servlet-name>Internal name 1</servlet-name> <url-patten>/Public1</url-patten> </servlet-mapping>

아까 URL로 알아왔죠? 이걸로 서블릿 이름 알 수 있어여

근데 아직 잘 모르겠죠? 괜찮아요 다음에도 다시 배울거래요