본문 바로가기

개발/Java

[JAVA - WEB] JSP 스크립트 요소

728x90
반응형

JSP 는 컨테이너에서 자바로 변환되는 과정을 거치므로 JSP 에서 제공하는 스크립트 요소를 이용하면 조건이나 상황에 맞게 HTML 태그를 선택적으로 전송할 수 있습니다.(화면을 동적으로 구성 가능)

 

JSP 스크립스 요소

 

JSP 스크립트 요소란 JSP 페이지에서 여러가지 동적인 처리를 제공하는 기능으로 <% %> 기호 안에 자바 코드로 구현합니다.
<% %> 기호를 스크릿트릿(scriptlet) 이라고 부릅니다.

스크립트 종류는 다음과 같이 3가지 입니다.

- 선언문(declaration tag) : JSP 변수나 메서드를 선언할 때 사용합니다.
- 스크립트릿(scriptlet) : JSP 에서 자바 코드를 작성할 때 사용합니다.
- 표현식(expression tag) : JSP 에서 변수의 값을 출력할 때 사용합니다.

선언문은 JSP 페이지에서 사용하는 멤버 변수나 멤버 메서드를 선언할 때 사용합니다.

 

선언문 형식

 

<%! 멤버 변수 or 멤버 메서드 %>

<%!
	String name = "sample";
	public String getName()
	{
		return name;
	}
%>

 

스크립트릿 형식

 

<% %>

<% String name = request.getParameter("name"); %>

 

표현식은 JSP 페이지의 정한 위치에 값을 출력하는 기능입니다.

표현식 형식

 

<%= 자바변수(값) or 자바식 %>

<%=name %>

<%=Integer.parseInt(age) + 10 - 10 %>

<%= %> 안의 자바 변수나 자바 식에는 세미콜론이 있으면 안됩니다.

 

 

 

주석문(comment)

 

주석은 다들 아시다시피.. 주석입니다..

주석문 형식

 

<%-- --%>

<%-- <%=name %> --%>

<%-- <%=Integer.parseInt(age) + 10 - 10 %> --%>

 

스크립틀릿 사용 시 HTML 태그와 혼동되지 않게 여닫는 부분 등에 신경을 잘 써서 에러가 발생하지 않도록 주의 바랍니다.

 

 

 

JSP 페이지 예외 처리

 

JSP 페이지에서 오류가 발생하면 예외 처리 페이지를 이용해 예외 처리를 할 수 있습니다.
먼저 예외 처리 JSP 를 만든 후 디렉티브 태그 속성 중 isErrorPage 속성을 true 로 설정합니다.
그리고 일반 JSP 페이지의 디렉티브 태그 속성 중 errorPage 속성을 예외 처리 페이지 이름으로 설정합니다.

 

// 예외 처리 페이지 설정
<%@ page isErrorPage = "true" %>

// 일반 페이지에 예외 처리 페이지 설정
<%@ page errorPage = "Exception.jsp" %>

 

 

 

에러 코드에 따른 예외 처리 페이지 설정

 

JSP 실행 시 자주 발생하는 오류들이 있습니다.
404 오류는 요청한 JSP 페이지가 없을 때 발생하는 오류이고, 500 오류는 컨테이너에서 JSP 페이지 처리 중에 오류가 발생할 때 표시되는 오류입니다.

각 오류코드에 맞는 에러페이지를 작성하여 web.xml 에 설정하여 줍니다.

 

<error-page>
	<error-code>404</error-code>
	<location>/err/error_404.jsp</location>
</error-page>

<error-page>
	<error-code>500</error-code>
	<location>/err/error_500.jsp</location>
</error-page>

 

 

 

JSP Welcome 파일 설정

 

웹 애플리케이션에서 첫 화면에 해당하는 홈페이지도 web.xml 에 등록할 수 있습니다.

 

<welcome-file-list>
	<welcome-file>/test02/main1.jsp</welcome-file>
	<welcome-file>/test02/main2.jsp</welcome-file>
	...
</welcome-file-list>

 

 

여기까지 임미다.

 

728x90