본문 바로가기
lang/java web

[Boostcourse] DB 연결 웹 - 3. JSP (Java Server Pages)

by Wordbe 2019. 11. 18.
728x90

1. JSP

Microsoft의 ASP(Acitve Server Pages) (1998)와 같은 스크립트형 개발 방법이 인기를 끌면서,

1997년 발표된 서블릿은 ASP 비하여 상대적으로 개발방식이 불편했기 때문에

자바 진영에서는 이에 대응하여 JSP(Java Server Pages)(썬마이크로시스템스, 1999)를 발표합니다.

JSP는 스크립트 언어입니다.

JSP는 서블릿 기술을 사용합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  • jsp 파일 안에 java언어가 있음.

  • 컨텐츠타입 = text/html

  • 문자형식 UTF-8

  • 페이지 인코딩 = UTF-8

<% %> 안에는 java 코드를 넣을 수 있습니다. 이 java코드는 servlet으로 바뀌어서 실행됩니다.

<%=total %>

이것은 out.print(total)과 같습니다.

2. JSP Life cycle

WAS는 웹 브라우저로부터 JSP에 대한 요청을 받게 되면, JSP코드를 servlet 소스코드로 변환한 후 컴파일하여 실행합니다.

servlet으로 컴파일되어 실행될 때 실행되는 다양한 method를 익혀봅니다.

objectives

  • jsp 라이프 사이클의 이해
  • jsp 이용하여 init, destroy 메소드 이용
_jspInit();
_jspDestory();
_jspService();
밑에는 servlet 파일로 전환된 html 내용들

jsp 파일 저장위치 (wtpwebapps)

\eclipse_workspace\.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\firstweb\jsp

jsp 변환 파일(java) 저장위치 (work)

\eclipse_workspace\.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\firstweb\org\apache\jsp\jsp

sum10.jsp 실행 시

eclipse_workspace/.metadata ... work ... 폴더안에

​ sum10_jsp.java 파일이 생성됩니다.

​ _jspService() 메소드 안에 jsp파일의 내용이 변환되서 들어가 있습니다.

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

JSP 실행순서

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

2) 브라우저가 요청한 JSP 최초로 요청했을 경우 (JSP engine이 Jsp life cyle을 가동)

- JSP로 작성된 코드가 서블릿 코드로 변환됩니다.(java 파일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환합니다. (class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성합니다.

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


JSP 라이프싸이클 실습

// jspService() 메서드 안에 내용이 새겨짐.
<%
    System.out.print("jspService()");
%>

// jspService() 바깥에 내용이 새겨짐
<%!
    public void jspInit(){
        System.out.print("jspInit()");
    }
%>

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

1) 브라우저로 최초 요청했을 때

​ 결과: jspInit()jspService()

2) 브라우저로 두번째 요청했을 때

​ 결과: jspService()

3) lifecycle.jsp를 수정한 후 요청했을 때(예를들어 15줄에서 맨 뒤에 ! 2개를 더 붙이면)

​ 결과: jspDestroy() ! jspInit()jspService()

3. JSP 문법

JSP는 HTML 태그와 java코드를 섞어 개발할 수 있습니다.

스크립트 요소의 이해

  1. 선언문(Declaration) <%! %> : 전역변수 선언 및 메소드 선언

    JSP페이지 내에서 필요한 멤버변수메소드가 필요할 때 선언해서 사용합니다.

  2. 스크립트릿(Scriptlet) <% %> : 프로그래밍 코드 기술에 사용

    주로 프로그래밍의 로직을 기술할 때 사용합니다.

    스크립트릿에서 선언된 변수는 지역변수 입니다.

  3. 표현식(Expression) <%= %> : 화면에 출력할 내용 기술에 사용

    응답 결과를 반환합니다.

    JSP 페이지에서 웹 브라우저에 출력할 부분을 표현합니다.

    스크립트릿 내에서 출력할 부분은 내장객체인 out의 print() 또는 println() 메소드를 사용해서 출력합니다.

선언문은 _jsp.java 파일 내에서 org.apache.jasper.runtime.JspSourceImports {} 내부에 쓰여집니다.

스크립트릿과 표현식은 jspService() 내에 쓰여집니다.

주석(Comment)

  • JSP페이지에서 사용할 수 있는 주석

    HTML주석, java주석, JSP주석

  • HTML주석

    웹 서비스 화면에서 보이지 않음.

  • JSP 주석

    JSP 페이지에서만 사용

    <%-- --%>

  • java 주석

    //, /**/

4. JSP 내장객체(Implicit object)

JSP에서는 개발자가 선언하지 않아도, 미리 선언된 변수가 존재합니다.

이를 내장객체라고 합니다.

  • request
  • response
  • out
  • application
  • page
  • session

JSP 내장 객체

  • JSP를 실행하면 서블릿 소스가 생성되고 실행됩니다.

  • JSP에 입력한 대부분의 코드는 생성되는 서블릿 소스의 _jspService() 메서드 안에 삽입되는 코드로 생성됩니다.

  • _jspService()에 삽입된 코드의 윗 부분에 미리 선언된 객체들이 있는데, 이 객체들은 jsp에서도 사용이 가능합니다.

  • request, response, out, application, page, session 등의 변수를 내장객체라고 합니다.

실습예제 (example.jsp)

<%
    StringBuffer url = request.getRequestURL();

    out.print("url : " + url.toString());
    out.print("<br>");
%>

결과:

url : http://localhost:8080/firstweb/jsp/exam1.jsp

내장객체 종류


reference
[https://www.edwith.org/boostcourse-web/lecture/19878/]

728x90

댓글