안녕하세요 이번 글에서는 JSP에서 자바 코드를 사용할 수 있는 스크립틀릿에 대해서 알아보겠습니다.
먼저 간단하게 JSP의 일생을 정리해 보겠습니다.
1. JSP 생명주기
클라이언트가 웹 서버에서 요청을 보내게 되면 웹 서버는 요청을 컨테이너에게 넘겨주게 됩니다.
이 요청 값이 컨테이너에서 JSP로 전달되게 되면 JSP는 서블릿으로 변환되면서. java파일로 확장자가 변경되고 컴파일 과정에서. class 파일로 변환되어 배포가 됩니다.
클라이언트 -- > 요청 --> 웹서버 --> 컨테이너 --> (test.jsp > test_jsp.java > test.class)
이렇게 한번 변환된 jsp파일은 요청 시마다 변환되고 컴파일되는 것이 아니라 다음번 요청 값이 들어올 때부터는 다른 서블릿 들과 생명주기가 같습니다.
2. 스크립틀릿 사용하기
먼저 가장 간단하게 스크립틀릿을 JSP에서 사용하는 방법은 <% %> 안에 자바 코드를 코딩하여 주는 것입니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<% int a = 3;
int b = 4;
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%out.print(a+b);%>
</body>
</html>
jsp 화면에 이런 식으로 코딩을 하고 애플리케이션을 구동시켜 봅시다.
※ out.print를 사용하는 이유는 위 생명주기에서 언급한 듯이 jsp는 서블릿으로 변환되기 때문에 클라이언트에게 응답을 보내기 위해 사용됩니다.
그럼 위 화면과 같이 출력됩니다.
하지만 매번 out.print를 사용하기는 번거롭겠죠??
이럴 때 사용하는 것이 표현식입니다.
표현식의 사용방법은 <%= %> 이처럼 사용합니다.
표현식의 실제 모습은 <% out.print( ); %> 이기 때문에 표현식을 사용할 때 주의할 점은 마지막에 ; 를 붙여 넣게 되면 오류가 발생합니다.
<!DOCTYPE html>
<html>
<head>
<%
int a = 3;
int b = 4;
%>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><%= a+b %></h1>
</body>
</html>
위처럼 코딩을 하고 다시 확인하여 보면 아까와 같은 결과를 확인할 수 있습니다.
다음으로는 선언문을 확인하여 보겠습니다.
선언문은 <%! %>처럼 앞에! 를 붙여서 사용하며 정적인 변수나 메서드 또는 인스턴스 변수나 메서드 들을 사용합니다.
<!DOCTYPE html>
<html>
<head>
<%
int a = 3;
int b = 4;
%>
<%! int c = 1; %>>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>a + b = <%= a+b %></h1>
<h1> c = <%= c++ %></h1>
</body>
</html>
위처럼 코딩을 하고 실행시키게 되면 해당 화면을 호출할 때마다 변수 c의 값이 초기화되지 않고 증가되는 것을 확인할 수 있습니다.
마지막으로 지시자에 대해서 알아보겠습니다.
지시자란 말 그래도 컨테이너가 페이지를 자바 코드로 변환할 때 특별한 지시를 내릴 때 사용됩니다.
지시자의 사용법은 <%@ %>처럼 앞에 @를 붙여서 표현하여 줍니다.
가장 많이 쓰이는 것은 특정 클래스를 사용하기 위해 import 받을 시 지시자를 이용하여
<%@ page import="java.util.*"%> 이런 식으로 사용하는 것 을 확인할 수 있습니다.
부족한 글 봐주셔서 감사합니다.
'Servlet & Jsp' 카테고리의 다른 글
[JSP에서 JSTL사용하기 설치편] - Head Frist Servlet & Jsp (0) | 2020.12.28 |
---|---|
[ JSP 표현식 언어(EL) 사용하기 ] - Head Frist Servlet & Jsp (0) | 2020.12.26 |
[ HttpSession 교환방식 & TimeOut 설정] - Head Frist Servlet & Jsp (0) | 2020.12.24 |
[servletContext & HttpSession & Request] - Head Frist Servlet & Jsp (0) | 2020.12.23 |
[sendRedirect 사용하기] - Head Frist Servlet & Jsp (0) | 2020.12.21 |