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 |