본문 바로가기

Spring/짧고굵게배우는JSP웹프로그래밍과스프링프레임워크

[JSP] 자바 웹 개발 개요_ 서블릿과 JSP

728x90

서블릿과 JSP
    1. 서블릿
        -자바 기반의 웹 프로그램 개발을 위해 만들어진 기술
        -자바로 작성된 프로그램을 실행 할 수 있는 서버 소프트웨어(톰캣)를 통해 관리된다
        -서블릿을 실행하기 위해서는 톰캣과 같은 서블릿 컨테이너가 필요하며 
         이러한 서버 소프트웨어는 WAS(web application server)로 불린다
        -웹 프로그램은 서버에 접속해야만 화면을 볼 수 있고, 

          로그인이나 기타 기능은 모두 서버에서 실행된 이후 결과만 웹 브라우저에 보이는 구조이다

        1) 웹 요청과 응답과정
            1.클라이언트(웹 브라우저)가 서버에 페이지(html)를 요청한다
            2.서버는 클라이언트에 요청받은 파일을 응답한다
            3.클라이언트는 수신받은 파일의 내용을 해석하여 화면에 표시한다

            -html은 정적인 파일이므로 실시간으로 변하는 정보등을 가지고 있을 수 없다
            -따라서 별도의 프로그램을 통해 데이터베이스에서 가지고 온 정보를 html로 재구성해서 클라이언트에게 전달
            -여러 정보를 비교하고 올리기 위해서는 데이터베이스에 저장하는 과정이 필요하다
            -서블릿은 이러한 기능을 수행할 수 있도록 설계된 특수한 목적의 자바 프로그램이다

        2) 서블릿 동작구조
            1. 클라이언트(웹브라우저)가 서버 페이지(url)를 요청한다
            2. 서버는 요청url에 매핑되는 서블릿을 호출하면 파라미터를 전달한다
            3. 서블릿이 실행되고 파라미터로 전달된 값을 처리하거나 데이터베이스와 연동한다
            4. html과 데이터를 조합하여 재구성한 다음 클라이언트에 전달한다
            5. 웹 브라우저는 수신받은 html내용(css, 자바스크립트)을 해석해서 화면에 표시한다
                -서블릿은 html과 데이터를 조합하는 방식이 있다

                out.println("<h2>" + username + "<h2>");

                -out은 서블릿에서 클라이언트에 데이터를 전송하기 위한 출력 스트림이다
                -html코드와 자바코드를 문자열 결합으로 처리한다
                -html코드구성을 위해 위와 같은 자바언어로 작성하는 것은 비효율적이다 -> JSP등자


    2. JSP
        -서블릿에서 html과 데이터 결합을 손쉽게 처리하기 위해 만들어졌다
        -자바 중심의 서블릿과 달리 html중심으로 데이터를 처리한다
        -html에서 자바코드를 사용할 수 있는 구조이다
        -html에 자바코드를 더한 형태로, 

         컨테이너에 의해 서블릿형태의 자바코드로 변환 후 컴파일되어 컨테이너에 적재되는 구조이다

            <html>
            <h2><%= username %></h2>
            </html>

            -JSP 문법자체는 page 지시어 선언부분을 제외하면 html파일구조와 동일하다
            -css, 자바스크립트 사용 형식 또한 동일하다
            -<%= %>란 JSP 출력문으로 사칙연산, 간단한 변수의 출력등에 사용된다
            
        -데이터를 반복해서 출력하거나 조건을 체크해야 하는 경우 

         단순한 html문법만으로 처리할 수 없기 때문에 중간에 자바코드를 사용해야 한다
         <% ... %>는 스크립트릿으로 해당 블록 안에서 자바코드를 자유롭게 사용할 수 있다
        -html 부분은 서블릿 컨테이너(톰캣)에 의해 out.println()을 사용하는 형태로 변환된다
        -JSP는 html이 아니라 궁극적으로 서블릿형태의 프로그램으로 변환되는 것이다

        1) JSPL / EL
            -JSP의 구조적 문제를 해결하기 위해 커스텀 태그를 기반으로 하는 JSPL 및 EL이 도입

            <table>
                <c:forEach var="m" items="${mlist}">
                    <tr>
                        <td>${m.name}</td>
                        <td>${m.email}</td>

            -<c:forEach>는 반복문을 제고아는 JSPL 커스텀 태그이다
            -${m.name}의 형태는 표현언어로 자바 객체의 멤버 출력이 가능하다

            -화면구조를 서버에서 빌드(SSR)하는 구조이기 때문에 모든 실행이 톰캣과 같은 서블릿 컨테이너를 통해야 한다
             즉, <c:forEach> ${m.name} <% ... %>와 같은 JSP구문은 웨브라우저가 해석할 수 없다
             사소한 디자인 변경도 서버를 통해 실행해야 한다

728x90