JSP

[JSP] JSP란?

에띠 2022. 5. 10. 16:06
728x90

JSP(Java Server Pages)는 동적 웹페이지를 생성하는 기술로, HTML 코드 안에 Java 코드를 삽입하여 서버에서 동적으로 웹 페이지를 생성하는 도구입니다. JSP는 클라이언트의 요청을 처리하고 그에 맞는 웹 페이지를 반환하는 역할을 합니다. 이때, JSP 파일은 서버에 의해 **서블릿(Servlet)**으로 변환되고, 이를 통해 웹 페이지가 동적으로 생성됩니다. 결과적으로, 웹 애플리케이션 서버에서 데이터와 HTML을 결합하여 클라이언트에게 전달합니다.

 

JSP의 실행 흐름은 다음과 같습니다:

  • 클라이언트가 요청한 JSP 파일은 서버에서 서블릿으로 변환됩니다.
  • 변환된 서블릿은 클래스 파일로 변환되고 실행됩니다.
  • 최종적으로 실행된 결과는 HTML 코드로 변환되어 클라이언트에게 반환됩니다.

예시 흐름:

  1. 클라이언트 요청 -> xxx.jsp -> 서버에서 서블릿 처리
  2. 서블릿 처리 후 결과 -> xxx.html로 변환되어 클라이언트에게 반환

JSP의 장점과 단점

JSP의 장점

  1. HTML 코드와 Java 코드 결합
    JSP는 HTML 코드와 Java 코드를 함께 사용할 수 있어, 동적인 콘텐츠를 생성하기에 용이합니다. HTML을 작성하는 퍼블리셔와 협업이 가능하며, 개발자는 서버 측에서 필요한 로직을 처리할 수 있습니다.
  2. 빠른 개발
    간단한 동적 웹 페이지를 구현할 때는 JSP 문서를 작성하는 것이 효율적입니다. 별도의 복잡한 설정 없이 서버에서 바로 실행 가능하므로, 빠른 개발이 가능합니다.

JSP의 단점

  1. 복잡한 코드 관리
    HTML 코드 내에 Java 로직이 삽입되기 때문에, 코드가 복잡해질 수 있습니다. 특히 복잡한 로직을 처리할 때 HTML과 Java가 혼합되어 코드가 어려워질 수 있습니다.
  2. 보안과 유지보수 문제
    프로그래밍 지식이 부족한 사람이 JSP 파일을 수정할 경우, 코드가 잘못 수정되어 문제가 발생할 수 있습니다. 또한, 비즈니스 로직을 JSP 파일에 넣으면 보안상의 문제가 발생할 수 있습니다.
  3. 로직 분리의 필요성
    중요한 로직은 JSP에서 처리하지 않고, Java 코드에서 처리하는 것이 보안과 성능 면에서 유리합니다.

 

JSP의 주요 태그들

스크립트 태그

JSP에서 자바 코드를 HTML 문서에 삽입하기 위해 다양한 태그를 사용할 수 있습니다.

  1. 선언문 (<%! ... %>)
    • 자바 클래스나 메서드를 정의할 때 사용합니다.
    • 예시:
      <%! int x = 10; %>
  2. 스크립틀릿 (<% ... %>)
    • 자바 코드를 실행하는 구문을 작성하는 데 사용합니다.
    • 예시:
      <% int x = 5; int y = 10; out.println(x + y); %>
  3. 표현문 (<%= ... %>)
    • 계산된 값이나 변수 값을 출력하는 데 사용합니다.
    • 예시:
       
      <%= "현재 시간은: " + new java.util.Date() %>
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

디렉티브 태그

디렉티브 태그는 JSP 페이지의 속성을 설정하는 데 사용됩니다. 보통 페이지 최상단에 선언됩니다.

  1. 페이지 설정 (<%@ page ... %>)
    • JSP 페이지의 설정을 지정합니다. 예를 들어, 사용 언어 설정, 콘텐츠 타입 설정 등이 있습니다.
    • 예시: 
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>


   2. 클래스 임포트 (<%@ page import="클래스명" %>)

  • 필요한 Java 클래스를 임포트하여 사용합니다.
  • 예시:
    <%@ page import="java.util.Date" %>

     


디렉티브 태그 옵션

1. import : 클래스를 사용

import 속성은 JSP 파일에서 사용할 Java 클래스를 임포트할 때 사용됩니다. 이를 통해 JSP 내에서 해당 클래스의 기능을 사용할 수 있습니다.

예시:

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

위 코드에서 java.util.Date 클래스를 임포트하여, JSP 페이지 내에서 Date 객체를 사용해 현재 날짜와 시간을 출력할 수 있습니다.

 

2. language : 사용할 프로그래밍 언어 설정

language 속성은 JSP 페이지에서 사용할 프로그래밍 언어를 설정합니다. 기본적으로 JSP는 Java 언어를 사용하므로, 대부분의 경우 "java"로 설정됩니다.

예시:

<%@ page language="java" %>
 

이 속성은 JSP 페이지에서 Java 코드만 사용할 수 있도록 설정하는 것입니다. 이 속성을 다른 언어로 설정하면 JSP 페이지에서 다른 언어로 코드를 작성할 수 있습니다.

 

3. contentType : 생성할 문서의 컨텐츠 유형

contentType 속성은 JSP 페이지가 생성하는 HTML 문서의 MIME 타입과 문자 인코딩을 설정합니다. 일반적으로 HTML을 생성할 때는 text/html을 사용하며, 문자 인코딩은 주로 UTF-8로 설정합니다.

예시:

<%@ page contentType="text/html; charset=UTF-8" %>

위 코드에서, contentType을 text/html로 설정하고 문자 인코딩을 UTF-8로 설정하였습니다. 이는 생성된 HTML 문서가 UTF-8 인코딩을 사용하며 클라이언트에 전달된다는 의미입니다.

 

4. pageEncoding : 페이지 문자 인코딩을 설정

pageEncoding 속성은 JSP 페이지 파일 자체의 문자 인코딩을 설정합니다. 이 속성은 JSP 파일을 저장하는 파일 시스템에서 사용하는 문자 인코딩을 정의하며, 주로 페이지의 인코딩을 UTF-8로 설정하는 것이 일반적입니다.

예시:

<%@ page pageEncoding="UTF-8" %>

위 코드에서, JSP 페이지 자체의 문자 인코딩을 UTF-8로 설정합니다. 이는 페이지를 작성할 때, 특수 문자나 한글 등이 깨지지 않도록 하기 위함입니다.

 

종합 예시

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> <!-- 디렉티브 태그 -->
<%@ page import="java.util.Date" %> <!-- 선언문 -->
<%
	String userid = "apple";
	String name = "김사과";
	int age = 20;
	double height = 160.5;
%> <!-- 스크립틀릿 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP의 변수</title>
</head>
<body>
	<p>아이디 : <%=userid %><!-- 표현문 --></p>
	<p>이름 : <%=name %></p>
	<p>나이 : <%=age %></p>
	<p>키 : <%=height %></p>
	<p>현재 시간은 <%=new Date() %></p>
<%
	out.println("<p>아이디 : " + userid + "</p>");
	out.println("<p>이름 : " + name + "</p>");
	out.println("<p>나이 : " + age + "</p>");
	out.println("<p>키 : " + height + "</p>");
	
	if (age > 19) {
		out.println("<p>성인입니다.</p>");
	} else {
		out.println("<p>미성년입니다.</p>");
	}
%>	
</body>
</html>

 

위 예시는 다음을 설정합니다:

  • language="java": JSP 페이지에서 Java 언어를 사용
  • contentType="text/html; charset=UTF-8": 생성된 HTML 문서의 콘텐츠 유형을 text/html로, 문자 인코딩은 UTF-8로 설정
  • pageEncoding="UTF-8": JSP 페이지 자체의 문자 인코딩을 UTF-8로 설정
  • import="java.util.Date": java.util.Date 클래스를 JSP 페이지에서 사용할 수 있도록 임포트

이러한 설정들을 통해 JSP 파일은 필요한 클래스를 임포트하고, 올바른 문자 인코딩 및 콘텐츠 유형으로 웹 페이지를 생성하게 됩니다.

728x90