백엔드/JSP

JSP Servlet 기초 (3) : JSP 태그

두개의 문 2023. 6. 11. 15:38
JSP 태그

 

- JSP 태그 : HTML 기반의 JSP 코드 내에 JAVA 코드를 삽입할 수 있게 해주는 태그

- JSP는 서블릿으로 변환된 후, 클라이언트에게는 HTML 형태의 코드만 전송되므로 JSP 태그의 내용은 노출되지 않음 

 

▷ 지시어 <%@   %>

- JSP Page를 자바 코드 즉, 서블릿으로 변환하는 데 필요한 정보를 JSP 엔진에 알려주며, 주로 스크립트 언어나 인코딩 방식들을 설정

❶ page 지시어 : JSP Page에 대한 정보 설정

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

   - language, contentType, pageEncoding 속성

❷ include 지시어 : 외부 파일을 현재 JSP Page에 포함시킴

❸ taglib 지시어 : 표현 언어에서 사용할 자바 클래스나 JSTL을 선언

 

 

▷ 스크립트 요소
JSP Page에서는 선언문(Declaration), 스크립트릿(Scriptlet), 표현식(Expression)이라는 3가지의 스크립트 요소를 제공함 

 선언문(Declaration)  <%!    %>

    - JSP Page 내에서 멤버변수(전역변수)나 메서드가 필요할 때 선언해 사용하는 요소

    - 서블릿으로 변환 시, _jspService( ) 메서드 외부에 선언됨

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

    - 가장 일반적으로 많이 쓰이는 스크립트 요소

    - 주로 프로그래밍의 로직을 기술할 때 사용 → JSP Page가 요청을 받을 때 실행되어야 할 자바 코드를 작성하는 영역

    - 서블릿으로 변환 시, _jspService( ) 메서드 내부에 선언됨

    - 스크립트릿에서 선언된 변수는 지역변수

    - 선언부에서 정의한 메서드 호출만 가능, 다은 메서드 선언 불가 

 표현식(Expression)  <%=    %>

    - JSP Page에서 웹 브라우저에 출력할 부분을 표현 → 즉, 화면에 출력하기 위한 것으로 실행 결과 하나의 값이 남는 문장

    - 스크립트릿 내에서 출력한 부분은 내장객체인 out 객체의 print( ) 또는 println( ) 메서드를 사용해서 출력

 

 

▷ 액션 태그  <jsp:action>  </jsp:action> 

 

 

 

 


( 예제 1 ) 표현식과 스크립트릿을 통해 동일한 내용을 출력해보자

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%-- 선언문을 이용해 멤버변수 및 메서드 선언해보자. --%>
<%!
	// 선언문 : 멤버변수나 메서드 선언 시 사용
	// ① 멤버변수 선언 
	int i = 10;
	String str = "abc";
	// ② 멤버 메서드 선언 
	//    접근제어자 : private → 이 JSP Page 내에서만 접근 가능 
	private int add(int a, int b){
		return a + b ;
	}
%>
<%-- 위의 내용을 표현식을 이용해 출력해보자. --%>
<%=i %><br />
<%=str %><br />
<%= add(2,4) %><br />

<%-- 동일한 내용을 스크립트릿을 이용해 출력해보자. --%>
<%
out.println(i + "<br />");
out.println(str + "<br />");
out.println(add(2,4) + "<br />");
%>

</body>
</html>
- out 내장객체 : JSP Page에 출력할 내용을 담는 출력 스트림
  · 타입 : javax.servlet.jsp.JspWriter
  · 웹 브라우저에 변수 등의 값을 출력할 때 주로 사용
  · out 객체는 출력 메서드 및 출력 버퍼 관련 메서드 사용 가능함 
    → 현재 위의 예제에서는 출력 메서드인 println( ) 메서드 사용
      void javax.servlet.jsp.JspWriter.println(String x) throws IOException
      html 태그나 단순 텍스트 등의 문자열을 출력
      다만, 마지막 줄에 문자(\r\n)를 추가하여 출력함 ( \r : 맨 앞, \n :다음 줄 )
      ( 주의! <br> 태그 출력 아님 ) 

 

결론 ) 두 방식으로 출력해본 결과, 스크립트릿보다 표현식의 이용이 더 편리함을 느낄 수 있었다.
특수한 경우(간단한 계산이나 루프)가 아닌 이상 스크립트릿은 사용하지 말자. 

 

 

 


( 예제2 ) 루프를 이용해 "안녕하세요" 문자열을 6번 출력해보자

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- 루프를 이용해 "안녕하세요"를 6번 출력시켜보자 --%>
<p>
<%
	String say = "안녕하세요";
	for(int i = 1; i <= 6 ; i++){
		out.println("<h"+i+">" + say + "</h"+i+">");
	}
%>
</p>
</body>
</html>

 

 


( 예제 3 ) 위의 예제 2를 표현식을 이용해 출력해보자

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- 루프를 이용해 "안녕하세요"를 6번 출력시켜보자 --%>
<p>
<%
	String say = "안녕하세요";
	String msg = ""; 		// 지역변수의 초기화는 필수!
	for(int i = 1; i <= 6 ; i++){
		msg += "<h" + i +">" + say + "</h" + i + ">";
	}
%>
<%= msg %>
</p>
</body>
</html>

 


 

'백엔드 > JSP' 카테고리의 다른 글

JSP Servlet 기초 (5) : response 객체  (0) 2023.06.12
JSP Servlet 기초 (4) : request + tag  (0) 2023.06.12
내장객체 request와 response  (0) 2023.06.11
JSP lifestyle  (0) 2023.06.10
JSP Servlet 기초 (2)  (0) 2023.06.09