ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [부스트 코스] JSP - BE
    CS기초/웹 2020. 6. 7. 13:22
    728x90
    반응형

    JSP 란? 

     

    <%@ 는 page 지시자. jsp파일 안에서 자바언어로 작성된 코드가 나올 것이다. content type에 응답 결과. 

    이런 지시를 듣는 것은 jsp를 실행하는 WAS 이다. 그 다음은, html코드가 나오는데, html 안에서 jsp를 쓰는 이유는, html 안에서 프로그램을 실행시켜 주고 싶기 때문이다. <% %> 부분이 자바 코드가 들어가는 부분이다. 이렇게 생긴 애를 scriptlet이라고 한다. 서블릿에서 자바 코드를 실행시킨다고 해도, response 객체에 출력문을 넣어주지 않는다면 실제 응답으로 들어가지 않는 것처럼, 여기에서도, 반드시 사용자의 브라우저로 응답 결과로 주고싶다고 하면, <%= %> 안에 값을 넣어주어야 한다. 이 부분을 표현식이라고 한다. 이 예제에서 <%= %> 이 부분은, out.print(); 로 바뀐다고 생각하면 된다. 항상 jsp가 서블릿으로 바뀔때 scriptlet은 어떻게 바뀔까? 를 생각해보는 것이 좋다. 

     

    JSP의 등장 배경

    - ASP라고 하는 웹을 쉽게 개발할 수 있는 스크립트 엔진을 발표했고, 썬마이크로시스템즈에서

    ASP에 대항하기 위해 JSP를 만들었다.

    - JSP는 서블릿으로 바뀐다. 바뀐 서블릿이 실행되는 것이다.  

    - 서블릿으로 바뀐 후에는 서블릿의 라이프사이클과 똑같은 방식으로 실행된다. 

     

    JSP 라이프 사이클

    톰캣이 jsp를 서블릿으로 바꾼다. 자바 파일을 열어서 보면, 실제로 자바로 바뀌어서 있다. 

    위에서 했던 예시를 살펴보면, 아래와 같이 sum10_jsp.java 파일이 만들어진다.

     

    Init - Destroy - Service 일을 하는 메서드를 볼 수 있다. 

    jsp 가 서블릿으로 만들 때, 알아서 만들어 놓는 객체들도 존재하는데, 이를 내장객체라고 한다. 

    out.write() 안에 아까 html 코드들과 scriptlet 코드들이 들어있다.

     

    정리해보면, sum10.jsp가 실행될 때, 

     

    - 이클립스 워크스페이스 아래의 .metadata 폴더에 sum10_jsp.java 파일이 생성된다.

    - 해당 파일의 _jspService() 메서드 안을 살펴보면 jsp 파일의 내용이 변환되서 들어가있는 것을 확인할 수 있다.

    - sum10_jsp.java 는 서블릿 소스로 자동으로 컴파일 되면서 실행되서 그 결과가 브라우저에서 보여진다.

     

    jsp 실행 순서

    1. 브라우저가 웹서버에 JSP 에 대한 요청 정보를 전달한다.

    2. 브라우저가 요청한 JSP 가 최초로 요청했을 경유만 

       1) JSP로 작성된 코드가 서블릿 코드로 변환한다. (java 파일 생성)

       2) 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)

       3) 서블릿 클래스를 로딩하고 인스턴스를 생성한다.

    3. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

     

    jsp 라이프 사이클

    매번 호출되는 것은 service 이기 때문에, 응답은 무조건 service 메서드 안에 포함되어 있다.

     

    그렇다고, 항상 jsp를 service에밖에 쓰는 것은 아니다. <%! 라고 쓰는 선언식 안에,

     

    <%!
         public void jspInit(){
    
               System.out.print("JspInit()");
    
         }
    %>

    이런식으로 코드를 넣으면, Service 메서드 바깥쪽에 해당 코드들이 만들어지게 할 수 있다. 

     

    JSP 문법

    스크립트 요소

    • 선언문 <%! %> : 전역변수 선언 및 메소드 선언에 사용
    • 스크립트릿 <% %> : 프로그래밍 코드 기술에 사용
    • 표현식 <%=%> :  화면에 출력할 내용 기술에 사용

    선언문은 jsp 페이지 내에서 필요한 멤버변수나 메소드가 필요할 때 선언해 사용하는 요소다. 이 선언문을 사용하면, 서비스 메서드가 아니라 클래스 바디 쪽에 해당 코드가 바뀌는 것을 볼 수 있다. 

     

    스크립트릿은 가방 일반적으로 많이 쓰이는 스크립트 요소로, 프로그래밍 로직을 기술할 때 사용한다. 스크립트릿에서 선언된 변수는 지역변수다. (다 서비스 안에 선언되는 변수이다.)

     

    JSP 내장 객체

    선언한적은 없지만 사용하고 있음. 

    request

    out

     

     

     

     

     

     

    728x90

    댓글

Designed by Tistory.