JSP 입문 #01

개발 환경 구축하는데에 너무 오래 걸렸다..
이클립스랑 JDK 버전 문제 때문에....

  • WAS (Web Apllication Server) : 웹 애플리케이션이 실행될 수 있는 환경을 제공하는 소프트웨어(대표적인 예시 : Tomcat) 컴퓨터의 운영체제 느낌.
    (웹 서버, 웹 컨테이너로 구성)

  • 웹 서버 (Web Server) : 사용자, 웹 컨테이너로부터 받은 결과를 정적인 페이지로 생성하여 사용자에게 응답함.

  • 웹 컨테이너 (Web Container) : 웹 서버가 전송해준 요청을 기초로 동적인 페이지를 생성하여 웹 서버로 돌려줌..

  • 정적 웹 페이지 (Static) : 사용자가 어떤 형태의 요청을 하더라도 같은 페이지는 항상 동일한 모습을 보여줌.

  • 동적 웹 페이지 (Dynamic) : 동일한 페이지라도 내용이 달라질 수 있는 웹 페이지. 서버가 클라이언트의 요청에 적절하게 결과를 보여줌. 전처리 과정을 거친다.

JSP (Java Server Pages)

: 동적인 웹 페이지를 개발하기 위한 웹 프로그래밍 기술
HTML 코드 안에서 필요한 부분만 자바 코드를 삽입하는 형태.

출처 : 성낙현의 JSP 웹 프로그래밍 p.61

일반적인 웹 구동 방식

  1. 정적 페이지 요청 > 웹서버 > 정적 페이지 로드(.html) > 웹 서버 > 정적 페이지 응답
  2. 동적 페이지 요청 > 웹 서버 > 웹 컨테이너(서블릿 + JSP 엔진)에 동적 처리 요청 > JSP를 서블릿으로 변환하여 응답 페이지 생성 > 웹서버에 처리 결과 응답 > 동적 페이지 응답

JSP파일의 구조

HTML 파일에 지시어 + 스크립트 요소 가 추가된 형태

지시어(directive)

: JSP페이지를 자바코드로 변환하는 데 필요한 정보를 JSP엔진에 알려줌. 스크립트 언어, 인코딩 방식 등을 설정.
(page, include, taglib)

지시어의 기본 형태 : <%@ 지시어종류 속성1="값1" ... %>

  1. page 지시어 : JSP 페이지에 대한 정보 설정..

page 지시어의 속성

  • language : 스크립팅 언어 지정
  • contentType : 문서의 타입
  • pageEncoding : 소스 코드의 인코딩 방식
  • import : 필요한 외부 클래스를 임포트

기본 삽입되는 page 지시어
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

import 지시어
<%@ page import="java.util.Date"%>

  • errorPage, isErrorPage : try/catch 문법으로 에러가 생겼을때 에러 페이지를 보여줄 수 있지만 errorPage, isErrorPage 속성을 통해 개발자가 지정한 JSP화면을 보여줄 수 있다.
    예를 들어 errorPage="IsErrorPage.jsp"는 에러 페이지로 IsErrorPage.jsp를 지정해준 것이다. 그러면 에러가 발생하면 해당 페이지를 웹 브라우저에 출력해준다. IsErrorPage.jsp에서는 isErrorPage="true"로 꼭 지정해주어 발생된 에러를 전달받을 수 있게 해준다. (결론적으로 사용자에게 친근한 에러 페이지를 보여줄 수 있음)

  • trimDirectiveWhitespaces : 웹 브라우저에서 소스 보기를 해보면 page 지시자는 공백으로 보인다. 이런 불필요한 공백을 없애기 위해서는 trimDirectiveWhitespaces="true"로 설정해준다.

  • buffer, autoFlush : buffer 속성의 기본값은 8kb이지만 크기를 지정하거나 "none"으로 사용하지 않을 수 있다. 하지만 그러면 포워드나 에러 페이지 기능을 사용할 수 없다. autoFlush속성은 기본값 true로 버퍼가 채워지면 자동으로 플러시(데이터를 목적지로 보내고 버퍼를 비우는 작업)한다. false면 버퍼가 채워지면 에러가 발생한다.

  1. include 지시어 : 외부 파일을 현재 JSP 페이지에 포함시키기.
    (반복되는 부분을 별도의 파일에 저장하여 필요하면 불러서 사용)
    불러올 파일은 page지시어를 제외한 html태그는 모두 제거하여 작성한다.

    <%@ include file="IncludeFile.jsp"%>



HelloJSP.jsp에서 IncludeFile.jsp를 include하여 today, tomorrow 변수를 사용했다.

IncludeFile.jsp 코드

<%@ page import="java.time.LocalDate"%>
<%@ page import="java.time.LocalDateTime"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
LocalDate today= LocalDate.now();
LocalDateTime tomorrow = LocalDateTime.now().plusDays(1); 
%>
  1. taglib 지시어 : 어려워서 생략

스크립트 요소(선언부, 표현식, 스크립틀릿)

: 자바 코드를 직접 작성하는 부분
(JSP가 실행될때 서블릿(.java)으로 변환되고 클래스(.class)로 컴파일된 후 응답한다. 이 변환과정에서 _jspService() 메서드가 생성된다. )

  1. 선언부
    _jspService() 메서드 외부에 선언된다.

    <%! 메소드, 변수 선언 %>

  2. 스크립틀릿
    실행되어야 할 자바 코드 영역.
    선언부에서 선언한 내용만 호출 가능하다.
    _jspService() 메서드 내부에 있으므로 다른 메소드 선언이 불가능!!

    <% 자바 코드 %>

  3. 표현식
    주로 변수의 값을 웹 브라우저 화면에 출력할 때 사용한다.
    스크립틀릿 내부에서는 out.print()를 사용하지만 단순하게 출력할때에는 표현식을 사용한다.

    <%= 자바 표현식%>

스크립트 요소 활용 예시

<%@ page ~생략~%>
<%!
	public int add(int num1, int num2){
    	return num1+num2;
   }
%>
<html>
<head><title>스크립트 요소 사용 예시</title></head>
<body>
<%
int result = add(10,20);
%>
표현식으로 변수를 호출하여 덧셈 결과를 출력 : <%=result%>
<br/>
표현식으로 메소드를 호출하여 덧셈 결과를 출력 : <%=add(10,20)%>
</body>
</html>

좋은 웹페이지 즐겨찾기