csmoon1010의 SW 블로그

JSP의 기초 - (부스트코스) 본문

웹/백엔드

JSP의 기초 - (부스트코스)

csmoon1010 2021. 3. 13. 00:28

1. JSP(Java Server Page)란?

- 모든 jsp는 서블릿으로 바뀌어 사용됨

- <%@ page... %> : page 지시자

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

language : 사용하는 프로그래밍 언어

contentType : 출력되는 결과의 문서type, charset 등을 포함

pageEncoding : 인코딩 타입

 

- <% ... %> : Scriptlet = 자바 코드를 입력할 수 있는 부분

<%
	int total = 0;
	for(int i = 1; i <= 10; i++){
		total = total + i;
	}
%>

 

- <%= 변수 %> : 표현식

응답 결과에 넣고 싶은 자바 코드(변수)를 포함

1부터 10까지의 합 : <%=total %>

- out.print() 형태로 바뀌게 됨

 

※  JSP가 Servlet으로 바뀔 때 어떻게 바뀔까를 생각하기 --> 서블릿으로 바뀐 후에는 같은 라이프사이클로 실행

 

 

 

2. JSP 라이프싸이클

1) 생성 원리

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

  • jsp파일의 내용이 변환되어 들어감
  • 서블릿 소스를 자동으로 컴파일 되면서 실행 → 브라우저에 show

2) 실행순서

  1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
  2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
  3. 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
  4. 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
  5. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

 

3) 라이프싸이클

- 기본적인 Scriptlet의 내용은 Service 메소드에 들어가게 됨

(∵ 매번 호출되는 메소드가 Service 뿐)

 

- init(), destroy() 일 때 동작을 추가하고 싶다면, <%! %> 선언문을 활용 = _jspService가 아닌 바깥쪽에 작성됨

 

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

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

 

 

 

 

3. JSP 문법

1) 선언문(Declaration)

  • <%! 문장 %>
  • JSP 페이지 내에서 필요한 멤버변수나 메소드가 필요할 때 선언해 사용하는 요소
  • Servlet으로 변경 시 service() 메소드 바깥에 생성
<%!
	String id = "u001";
	public String getId(){
		return id;
	}
%>

 

2) 스크립트릿(Scriptlet)

  • <% 문장%>
  • 가장 일반적으로 많이 쓰이는 스크립트 요소
  • 주로 프로그래밍의 로직을 기술할 때 사용
  • 스크립트릿에서 선언된 변수는 지역변수 (service() 메소드 내부)
<%
	for(int i = 1; i <= 5; i++){
%>
<H<%=i %>>아름다운 한글</H<%=i %>>
<%
	}
%>

 

 

3) 표현식(Expression)

  • <%= %>
  • JSP 페이지에서 웹 브라우저에 출력할 부분을 표현 (즉, 화면에 출력하기 위한 것)
  • 스크립트릿내에서 출력할 부분은 내장객체인 out 객체의 print() 또는 println() 메소드를 사용해서 출력

 

4) 주석(Comment)

(1) HTML 주석

  • <!-- html주석   -->
  • 웹에서 서비스할 때 화면에 주석이 내용이 표시되지는 않음
  • [소스보기] 수행 시 주석 내용 표시

(2) Java 주석

  • //, /**/
  • 스크립트릿, 선언문에 사용
  • JSP가 Servlet으로 바뀌었을 때 표시
  • [소스보기] 수행 시 표시X

 

(3) JSP 주석 : Servlet으로 바뀌지 않음

  • <%-- JSP 주석 --%>
  • Servlet, 웹 브라우저 [소스보기] 모두에 표시X

 

 

4. JSP 내장 객체(Implicit Objects)

- _jspService()에 삽입된 코드의 윗부분에 미리 선언된 객체들 → 해당 객체들은 jsp에서도 사용 가능

- response, request, application, session, out과 같은 변수

- 종류

JSP 내장 객체

 

- 예시

<%
	StringBuffer url = request.getRequestURL(); //request 내장객체 활용
	out.print("url :" + url.toString()); //out 내장객체 활용
	out.print("<br>");
%>

※ 단, 내장객체를 선언문에서는 사용 불가. 내장객체는 _jspService() 메서드 내의 객체이므로!!

Comments