JSP도 서블릿을 기반으로 하기 때문에 servlet에 대한 내용도 알아두어야 한다.

웹서버 : 웹브라우저의 요청을 받아 그에 해당하는 웹페이지를 찾아 보내준다.

, 웹브라우저로부터 URL을 받아 해당한느 HTML 문서를 찾아 웹 브라우저로 보내주는 것

                                 

동적인 페이지를 보여주려면 단순히 웹 서버가 URL을 받아서 해당하는 HTML을 찾는 것으로는 부족하다.

HTML문서를 생성하는 프로그램을 호출해서 실행 결과를 보내줘야 하는데, 이때 호출하는 프로그램을 웹 애플리케이션이라 한다.

          

동적 HTML 문서 : 웹 애플리케이션이 생성

정적 HTML 문서 :   서버 쪽에 파일 형태로 저장

          

객체지향 프로그래밍 기법이 도입되면서 객체 형태로 웹 애플리케이션을 구현하는 기술이 등장했는데, 그 중 하나가 서블릿이다.

서블릿이란 자바를 기반으로 하는 웹 애플리케이션 프로그래밍 기술이다. 최초 썬마이크로시스템즈에 의해 개발되었으나 이후 자바표준을 담당하는 JCP로 이관되어 발전을 계속해왔다.

          

서블릿 클래스 작성 규칙

          

1. 서블릿 클래스는 javax.servlet 패키지에 속하는 Servlet 인터페이스를 구현하도록 만들어야 한다. how? javax.servlet.http.HttpServlet 클래스의 서브클래스를 작성한다.

          

2. doGet, doPost 메서드를 선언하고, 그 안에 서블릿 클래스 호출 시 해야 할 내용을 입력한다. 두 메서드는 각각 2개의 파라미터를 받아야하는데, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletReponse 이다.  또한 메서드 밖으로 java.io.IOException, javax.servlet.ServletException을 던질 수 있어야 한다.

          

3. 동적 HTML 문서를 생성하려면 doGet, doPost 메서드의 두 번째 파라미터를 이용해야 한다. getWriter 메서드를 호출하면 PrintWriter 타입의 객체가 리턴되는데, 그 객체에 대해 print, println 등의 메서드 호출로 웹 브라우저에 html 코드를 출력할 수 있다.

          

// 예제 : serveltTest 

 

           

서블릿 클래스 사용의 장점

          

1. 자바 기반으로 자바의 장점을 그대로 활용할 수 있다. 자바의 플랫폼 독립성은 어떤 운영체제에서든 활용이 가능하도록 한다.

2. 네트워크 환경에서 보안이 용이하고, 멀티쓰레드가 지원 된다.

          

서블릿 클래스의 단점

          

HTML 코드가 자바 코드 안에 들어가야 하는 큰 단점이 존재한다.

-> e.g out.print("<HTML>");

          

이후 Servlet의 장점을 그대로 가지면서 단점을 보완한 JSP가 등장한다.

          

## JSP 기술

          

JSP(javaServer Pages)

서블릿과 다르게 HTML 문서 안에 자바코드가 삽입되는 구조이다.

 

현재는 서블릿과 JSP를 혼용한 방식이 권장되고 있는데, 복잡한 로직은 서블릿 클래스 안에 넣고 해당 결과를 출력하는 부분은 JSP를 담당하도록 한다.

          

JSP 2.0 버전 이후로는 익스프레션 언어의 문법이 추가되었는데,  ${result} 태그를 사용하면 JSP 페이지에서 자바 코드를 완전히 제거할 수도 있다.

웹 서버는 JSP  페이지를 실행 전에 내부적으로 서블릿 클래스로 변환하기 때문이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ServletTest extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException{
        
        /*
        //Servlet 방식
        PrintWriter out = response.getWriter();
        out.print("<HTML>");
        out.print("<HEAD><TITLE>Sum of 1 to 50</TITLE></HEAD>");
        out.print("<BODY>");
        
        int total = 0;
        for(int i=1; i<=50; i++){
            total += total;
        }
        
        out.print("1+2+3+ ... + 50 = "+total);
        out.print("</BODY>");
        out.print("</HTML>");
         */
        
        //Servlet + JSP
        
        int total = 0;
        for(int i=1; i<=50; i++){
            total += total;
        }
 
        request.setAttribute("result", total);
        RequestDispatcher rd = request.getRequestDispatcher("jspTest.jsp");
        rd.forward(request, response);
    }
}
 
cs


+ Recent posts