Servlet & Jsp

[JSP 에서 자바코드사용(스크립틀릿)] - Head Frist Servlet & Jsp

사과씨앗 2020. 12. 25. 14:07
728x90
반응형

안녕하세요 이번 글에서는 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.*"%> 이런 식으로 사용하는 것 을 확인할 수 있습니다.

 

 

부족한 글 봐주셔서 감사합니다.

728x90
반응형