JSP

[JSP] 기초

NamGH 2023. 9. 22. 17:14
JSP의 특징
  • JSP는 Java Server Page의 약어
  • HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에게 돌려주는 언어이며  애플리케이션 서버에서 동작한다.
  • Java의 웹 서버 프로그램 servlet으로 변환되어 서비스 된다
  • 프로그래머가 직접 코딩한 servlet보다 최적화된 servlet 을 생성시켜 효율적인 코드를 생성한다.
  • 서블릿보다 쉽고, 빠르다.
  • 디자인(HTML,JS) 부분과 로직(JSP)를 분리시킬 수 있 다.(디자이너와 프로그래머의 일을 분업화할 수 있다.)
  • 웹프로그래밍은 기본적으로 클라이언트(Client)/서버 (Server) 방식으로 이루어짐
  • 클라이언트(웹 브라우저)가 특정페이지를 웹 서버에 요 청(Request)하게 되면 웹 서버가 이를 처리한 후 결과를 클라이언트(웹 브라우저)에게 응답(Response)을 하게 되는 구조이다.

 

JSP 동작구조

① 사용자의 웹 브라우저에서 http://서버주소/xxx.jsp와 같은 형태로 해당 페이지를 요청한다.

② 웹 서버는 요청한 해당 페이지를 처리하기 위해서 jsp컨테이너에 처리를 넘긴다.

③ 해당 jsp화일이 처음 요청된 것이면 jsp파일을 서블릿으로 파싱(변환)한다. 이전에 요청되었 던 페이지일 경우 다시 파싱할 필요가 없으므로 바로 5단계로 넘어간다.

④ 서블릿 파일은 자바에서 실행가능한 상태인 클래스 파일로 컴파일이 된다.

⑤ 클래스 파일은 메모리에 적재가 되어 실행된다.

⑥ 이 실행 결과는 다시 웹 서버에게 넘겨진다.

⑦ 웹서버는 웹브라우저가 인식할 수 있는 HTML형태로 결과를 웹 브라우저에게 응답한다. 웹 서버로부터 응답받은 결과물인 HTML 페이지를 웹 브라우저에서 실행시켜서 해당 웹 페 이지가 웹 브라우저에 표시된다.


요약
URL - DNS 서버 - 웹서버(jsp 페이지요청) - 웹서버 는 .jsp로 들어온 요청에 대해서 jsp컨테이너로 전송 -
jsp파일 파싱 – 서블릿생성 - 생성된 서블릿 컴파일 - 컴 파일된 클래스 파일을 메모리에 적재 -
html 형태인 응답 을 사용자에게 전송 - 사용자의 브라우저에서 html실행된다

 

 

JSP 일반 태그
요소 TAG 설명
Directive %@ 지시어 %> JSP 페이지의 설정 정보에 대한 설정/셋팅
Declaration <%! 선언문 %> 전역 변수 및 메소드 선언
Scriptlet <% 스크립트릿 %> 변수, 제어문, 프로그램 코드 구현
Expression <%= 표현식 %> 변수의 결과 값, 메소드의 리턴 값 등
Comments <%-- 주석 --%>  

 

페이지 지시어

정의

  • JSP 페이지 실행시 필요한 정보를 지정하기 위하여 사용
  • 해당 페이지를 어떻게 처리할 것인가에 대한 설정 정보
  • JSP가 서블릿으로 변환될 때 전반적인 영향을 줄 수 있는 정보를 제공
지시어 설명
page JSP 전체적인 페이지에 대한 정보
현재 JSP 페이지에 대한 처리 방식/정보를 제공하는데 사용
생성 문서의 타입, 스크립팅 언어, import할 클래스, 세션의 사용 여부 등
include 현재 파일에 다른 파일을 넣고자 하는 경우
공통적으로 사용이 되는 파일을 별도로 만들고 필요하면 인서트하는 개념
<%@ include file="포함될 파일의 url" %>
일반적으로 조각 코드를 삽입할 때 사용
조각 코드는 소스 코드와 구분 짓기 위해서 jspf를 사용할 수도 있다
taglib 태그 사용을 통한 자바 소스를 대체하고자 하는 경우에 사용
사용자에 의해서 만든 tag를 이용할 때 사용된다
(사용자 정의 태그) 태그 라이브러리를 JSP에서 사용하고자 하는 경우에 사용

 

 

선언문(Declaration)
  • 표현 가능한 내용 
  • out, request, response 등의 내장 객체 사용 불가
  • 서블릿으로 변환될 때 서블릿의 멤버로 선언된다.
사용형식
– <%! 문장 %>으로 표시
– 선언문 태그는 여러 군데서 중복이 가능하다

<%!
      private String name = "태연" ;
      private int year = 2013 ;
      public String getName(){
      return name ;
      }
%>

 

 

스크립트릿(scriptlet)
  • JSP에서 많이 쓰이는 스크립트 요소
  • 자바 문장 사용(제어문, 반복문, 지역(로컬) 변수 선언)
  • 블록 문장인 {, }를 닫지 않고 해당 라인의 코딩을 종료할 수 있기 때문에 제어문 등에서 처리 시에 유연하게 사용 할 수 있다
  • 주로 프로그래밍의 로직을 구현할 때 많이 사용된다
  • 일반적으로 가장 많이 사용되는 태그이다
  • _jspService() 메소드로 변환이 된다
  • 세미콜론을 붙여야 한다
  • 서블릿의 서비스 메소드안에 선언된다
사용형식
– <% 문장 %>으로 표시

 

 

표현식

의미

  • 웹 브라우저에 출력할 부분을 표현한 것
  • 스크립트릿 코드 내에서는 표현식을 쓸 수 없고, 스크립트릿내에서 출 력한 부분은 아래와 같이 내장 객체인 out객체를 사용해서 출력한다
  • <% out.println() ; > 과 동일한 결과

표현 가능한 내용

  • 간단한 계산, 변수, 메소드(함수) 호출
  • 메소드의 결과 값

특징

  • 세미콜론은 사용하지 않는다
  • JSP가 서블릿으로 변환시 out.print() 메소드로 자동 변환시 세미콜론이 붙음
사용형식
– <%=변수 %>
– <%=리턴값이 있는 메소드 %>
– <%=수식(변수 또는 리턴 값이 있는 메소드를 포함할 수 있음) %>

 

 

주석

HTML 주석

  • <!-- -->
  • 실행은 안되지만, 소스보기하면 주석의 내용을 볼 수 있다
  • HTML 주석내의 표현식 및 스크립트릿은 주석문 내에서 실행된다

JSP주석

  • <%-- --%>
  • 실행도 안되고, 소스보기해도 표시되지 않는다

자바, 자바 스크립트 주석

  • // or /* */
  • 스크립트릿이나 선언문에서 사용되는 주석
  • 표현식에도 자바 주석을 포함시킬 수 있으나 다른 코드없이 주석만 으로 표현식이 이루어져 있으면 컴파일시 에러 발생한다

스타일시트 주석

  • // , /* */