서블릿 JSP

JSP 기본 구조

영카이브 2024. 2. 26. 20:54

미리 읽어보기 https://velog.io/@effirin/Servlet%EA%B3%BC-JSP%EC%97%90-%EB%8C%80%ED%95%B4

 

 

코드 블록의 유무

코드블록은 JSP 코드 블록이란 <% %> 태그로 둘러싸인 Java 코드 섹션이다. 

  • 코드 블록이 없는 경우 톰캣은 해당 파일을 그대로 실행해서 서블릿 클래스로 변환하는 작업이 필요없다. 따라서 JSP파일이 단순히 HTML 문서로 처리 된다. 
  • 코드 블록이 있는 경우 톰캣은 해당 코드를 서블릿 클래스로 변환하여 실행한다. 이런 변환작업은 JSP엔진에 의해 수행되고 따라서 톰캣은 코드 블록을 해석하고 실행하는 역할을 한다. 

< 코드 블록이 없는 경우 >

 

 

< 코드 블록이 있는 경우 >

 

 

 

지시자

<%@ page %> 태그로, 이 지시자는 JSP 페이지에 대한 설정 및 속성을 정의한다. 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  • language="java": JSP 페이지에서 사용할 언어를 지정합니다. 이 경우 Java 언어를 사용하도록 지정
  • contentType="text/html; charset=UTF-8": JSP 페이지의 콘텐츠 유형(content type)을 설정, 여기서는 HTML이며, 브라우저는 UTF-8로 인식
  • pageEncoding="UTF-8: 출력방식은 UTF-8로 인식

 

 

서블릿과 JSP 코드 비교

Nana 서블릿

package com.servlet.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hi")
public class Nana extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter out = resp.getWriter();
		String cnt_=req.getParameter("cnt"); 
		int cnt=10; 
		if(cnt_!=null && !cnt_.equals("")) {
			cnt=Integer.parseInt(cnt_);
		}
		for( int i=0; i<cnt; i++ ) {
			out.println((i+1)+": 안녕 Servlet <br>");
		}
	}
}

 

nana.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
String cnt_=request.getParameter("cnt"); 
int cnt=10; 
if(cnt_!=null && !cnt_.equals(""))
	cnt=Integer.parseInt(cnt_); 
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% for( int i=0; i<cnt; i++ ){%>
		안녕 Servlet!!<br>
	<%}%>
</body>
</html>
  • resp.setCharacterEncoding("UTF-8");와 resp.setContentType("text/html; charset=UTF-8"); 는 지시자로 씀 
  • PrintWriter out = resp.getWriter(); 삭제 : JSP에서는 서블릿과 달리 'out' 내장객체가 있어 이것을 사용해 클라이언트에게 출력 

코드블록만 책임을 지고 나머지는 jasper가 출력을 담당하는것을 볼 수 있다. 

 

 

 

 

 

참고 자료 출처 :

https://www.youtube.com/watch?v=sccGD6iVEx8&list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd&index=42