BACK_END/Spring 공부

Spring - JSP

harry595 2021. 2. 1. 20:40

JSP (JavaServer Pages)

jsp는 jsp 자체가 동작하는게 아니라 Servlet으로 바꿔서 동작

(실제로 sum.jsp는 sum_jsp.java로 변환됨, 보통 service안에 작성됨)

따라서 아래의 꺽쇠들은 Servlet으로 변환할 때 어떻게 바꿀지 알려주는 부분

 

<%@ %>: 지시자

EX) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

이런 식으로 page 지시자로 사용 - java 언어로 나옴, content type 선언, jsp Encoding type 선언

 

<% %>: 스크립트릿(Scriptlet)

html안에서 프로그램을 실행 하기 위함, 프로그래밍 코드 기술

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

 

<%= %>: 표현식

화면에 출력할 내용 기술

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

out.print(); 과 <%= %>가 같다고 생각하면 됨

<body>
<%
	for(int i=1; i<=5; i++){
%>
<h<%=i %>> JSP </h<%=i %>>
<%
	}
%>
</body>

 

<%! %>: 선언문

이 클래스에 전역,멤버 변수, 메소드, 필드를 선언할 때 사용

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

<body>
id : <%=getId() %>
<%!
	String id="u001"; // 멤버 변수 선언
	public String getId(){ // 메소드 선언
		return id;
	}

%>
</body>

<!-- --> <%-- --> // /**/주석

JSP 페이지에서는 HTML주석, Java주석, JSP주석을 사용할 수 있음

JSP 주석의 경우 Servlet으로 변환할 때 없어짐, HTML은 끝까지 나옴, Java는 Servlet으로 바뀔때 없어짐

따라서 상황에 따라 주석을 사용해야 함

 

xx.jsp가 실행될때

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

2. 해당 파일의 _jspService() 메소드 안에 jsp 파일의 내용이 변환되어 들어가 있음

3. xx_jsp.java는 서블릿 소스로 자동 컴파일 되어 실행되 그 결과가 브라우저에 보여짐

 

JSP의 실행 순서

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

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

   1) JSP가 서블릿으로 코드 변환

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

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

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

 

JSP 내장객체

JSPService()에 삽입된 코드의 윗 부분에 미리 선언된 객체들이 있는데 jsp에서 사용가능

response, request, application, session, out 등을 내장 객체라고 함

내장 객체들은 객체를 따로 생성 혹은 선언하지 않아도 사용할 수 있다.

<body>
<%
	StringBuffer url = request.getRequestURL();
	
	out.print("URL: "+url.toString());
	out.print("<br>");
%>
</body>