[Servlet & JSP] JSP 태그 종류
지시자(Directive) 태그
지시자 태그는 페이지에 대한 설정을 하는 태그이다.
주로 페이지의 인코딩, import할 패키지 등을 설정한다.
지시자 태그의 종류에는 page, include, taglib이 있다.
- page : jsp 페이지에 대한 설정을 하는 태그
- include : 다른 jsp 파일을 포함하기 위해 사용하는 태그
- taglib : xml 문법 기반의 라이브러리인 JSTL을 사용하기 위한 태그
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Date" errorPage="errorPage.jsp"%>
jsp 파일을 생성하면 일반적인 html 파일과 같지만 위에 contentType, charset, pageEncoding과 같은 페이지에 대한 지시자 태그가 있다.
이 속성들은 자바코드로 변환될 때 response header에 해당 타입으로 설정된다.
java.lang 패키지 이외의 클래스를 jsp 파일에서 사용할 때 import 속성에 정의한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>today</title>
</head>
<body>
<div><%@ include file="today.jsp" %></div>
</body>
</html>
include 지시자 태그를 사용하면 다른 jsp 파일을 포함하여 마치 하나의 페이지에서 작성한 것처럼 사용할 수 있다.
file 속성에 다른 jsp 파일의 경로를 적어서 사용한다.
include 지시자 태그를 사용할 때 include하는 페이지에서 사용하는 변수와 외부에서 사용하는 변수가 겹쳐서 컴파일 오류가 발생할 수 있어서 주의해야한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String exceptionType = exception.getClass().getName();
String exceptionMessage = exception.getMessage();
%>
<div><%=exceptionType%></div>
<div><%=exceptionMessage%></div>
</body>
</html>
현재 페이지에서 Exception이 발생하게 되면 errorPage 속성값에 설정한 jsp 경로로 exception을 던진다.
exception을 처리할 페이지에 isErrorPage의 속성값을 true로 설정하게되면 에러처리 페이지로 사용할 수 있다.
선언(Declaration) 태그
<%!
private String name;
%>
페이지 내에서 메소드나 변수를 선언하는 태그이다.
서블릿으로 변환될 때 선언 태그 영역의 코드를 필드로 추가해준다.
스크립트릿(Scriptlet) 태그
<%
name="forsaken";
System.out.println(name);
for(int i=0; i<name.length();i++) {
System.out.print(name.charAt(i));
}
%>
페이지 내에서 Java 코드를 실행하는 태그이다.
서블릿으로 변환될 때 스크립트릿 영역의 코드는 _jspService() 메소드 안에 포함된다.
표현식(Expression) 태그
<div>name : <%= name %></div>
페이지에서 변수나 메소드 등의 값을 출력하는 태그이다.
주석(Comment) 태그
<% //한 줄 주석%>
<%-- 여려 줄 주석--%>
JSP 페이지에서 주석을 작성할 때 사용된다.
주석 태그는 html 주석태그와 달리 브라우저에게 전달되지 않아서 노출되지 않는다.
액션(Action) 태그
액션 태그는 JSP페이지에서 Java 코드를 실행하기 위해서 특수한 태그 형식으로 작성된다.
스크립트릿 태그보다 간결하고 가독성이 좋다.
<jsp:include page="common.jsp"/>
다른 JSP 페이지나 HTML 파일을 현재 JSP 페이지에 포함할 수 있다.
<jsp:forward page="forward.jsp"/>
현재 JSP 페이지를 다른 JSP 페이지로 이동시킨다.
<jsp:forward page="forward.jsp">
<jsp:param name="username" value="forsaken" />
</jsp:forward>
param을 통해서 forward나 include할 때, 전달할 파라미터를 설정할 수도 있다.
<jsp:useBean id="member" class="dto.MemberDTO" scope="page"/>
<jsp:setProperty property="name" name="member" value="forsaken"/>
<jsp:setProperty property="age" name="member" value="20"/>
<jsp:setProperty property="email" name="member" value="forsaken@test.com"/>
이름 : <jsp:getProperty property="name" name="member"/> <br>
나이 : <jsp:getProperty property="age" name="member"/> <br>
이메일: <jsp:getProperty property="email" name="member"/> <br>
useBean을 통해서 Java Bean 객체를 생성하고 초기화 한다.
scope에는 page, request, session, application을 선택할 수 있고 생략 시에는 page가 기본 값이다.
Bean으로 설정한 객체의 속성 값을 setProperty로 설정할 수 있다.
이 때 setter 메소드를 사용하기때문에 property의 setter 메소드가 이름 규칙에 맞게 작성되어 있어야 한다.
마찬가지로 getProperty로 Java Bean 객체의 속성 값을 가져온다.
'Backend > Servlet & JSP' 카테고리의 다른 글
[Servlet & JSP] JSTL core (0) | 2023.05.30 |
---|---|
[Servlet & JSP] JSP EL 표현식 (0) | 2023.05.29 |
[Servlet & JSP] JSP의 역할 (0) | 2023.05.27 |
[Servlet & JSP] 서블릿 listener (0) | 2023.05.26 |
[Servlet & JSP] 서블릿 filter (0) | 2023.05.25 |
댓글