Recent Posts
Recent Comments
Link
11-21 14:38
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

JSP 본문

DEV&OPS/Java

JSP

ALEPH.GEM 2022. 6. 20. 17:42

JSP

jsp는 템플릿코드(html 태그 등)와 서블릿 코드를 섞어서 같이 작성할 수있습니다.

컨테이너는 jsp를 해석해서 서블릿으로 변환 후 소스를 컴파일 합니다. 

이러한 변환 작업은 최초 요청시 변환되고 이후 요청은 변환없이 이미 변환된 서블릿을 통해 수행됩니다.

 

예제

WebContent 경로에 우클릭 후 new->JSP file을 선택 후 example1.jsp로 생성합니다.

<%@ 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>
<%
	String user = request.getParameter("name");
	if(user == null){
		user = "Guest";
	}
%>
<h1>
	Hello <%=user %>
</h1>
</body>
</html>

<%@ ... %>  태그는 지시자이며 page, include, taglib가 있고 페이지에 대한 정보를 설정합니다.

<%! ... %> 태그는 멤버 변수 혹은 메소드를 선언합니다.

<% ... %> 태그는 서블릿(자바)으로 변환되어 서버측에서 수행됩니다.

<%= ... %> 태그는 out.print() 으로 변환되어 서블릿의 변수 값이 클라이언트(HTML)으로 전송되어 표기됩니다.

<%-- --%> 는 JSP용 주석입니다.

<!-- --> 는 HTML용 주석입니다.

//와  /* */는 JAVA용 주석입니다.

 

page 지시자

<%@ 지시자 속성 = 값 %>

 

contentType 속성 

JSP: <%@ page contentType="text/html; charset=UTF-8" %>

Servlet: resp.setContentType("text/html;charset=UTF-8");

 

import 속성

자바 패키지나 클래스를 import 할 때 사용합니다.

<%@ page import="java.util.*, java.io.* %>

단 javax.servlet.* 관련 패키지는 자동 import되므로 생략해도 됩니다.

 

errorPage와 isErrorPage 속성

오류 처리를 위한 속성입니다.

WebContent경로에 example3.jsp 파일을 생성해서 예제를 살펴봅시다.

 

example3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>예외 처리</title>
</head>
<body>
	<h4> 다음과 같은 에러가 발생했습니다.</h4>
	에러 타입: <%=exception.getClass().getName() %>
	<br>에러 메세지: <%=exception.getMessage() %>
</body>
</html>

이 example3.jsp 페이지는 오류를 처리하는 페이지 입니다.

다른 jsp 파일에서 오류가 발생했을 때 그 오류를 처리할 수 있는 페이지로 example3.jsp를 지정할 수 있습니다.

예를 들어 example4.jsp 페이지에서 오류 처리 페이지를 example3.jsp로 지정한 뒤 example4.jsp에서 오류가 난다면 지정했던 example3.jsp가 실행되는 것입니다.

 

example4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="example3.jsp" %>
<%
	String param = request.getParameter("id");
	if(param.equals("test")){
		param = "파라미터가 입력되어 예외가 발생하지 않았습니다.";
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%=param %>
</body>
</html>

WAS를 실행시키고 http://localhost:8080/jsp/example4.jsp를 실행시키면 id parameter가 null이므로 예외가 발생하여 아래처럼 example3.jsp의 내용이 나오게 됩니다.

 

pageEncoding 속성

pageEncoding 속성은 JSP소스 저장시 사용할 문자 코드를 지정합니다.

만약 생략한다면 contentType 속성 charset에 지정된 값으로 설정됩니다.

 

sesseion 속성

기본 값은 true 이고 해당 페이지에서 세션 관리를 할 것인지 여부를 지정합니다.

 

buffer 속성

기본 값은 8kb 의 버퍼를 사용합니다. 

버퍼의 최소 크기를 킬로바이트 단위로 지정할 수 있고 버퍼를 사용하지 않으려면 값을 none을 주면 됩니다.

 

autoFlush 속성

버퍼가 모두 찼을 때 동작을 설정합니다. 

true로 설정하면 버퍼가 찼을 때 자동으로 전송하고 비워집니다.

false로 설정하면 버퍼가 찼을 때 예외를 발생시킵니다.

 

isThreadSafe 속성

jsp가 서블릿으로 변환될 때 SingleThreadModel 상속 여부를 결정합니다.

기본값은 true입니다.

 

info 속성

버전, 저작권 등 설명 정보 문자열을 추가할 수 있습니다.

 

language 속성

페이지에서 사용되는 스크립트 언어를 지정합니다.

생략되면 java 가 기본값입니다.

 

isELIgnored 속성

jsp에서 EL 표현식 사용 여부를 결정합니다.

true 인경우 jsp내에서 EL표현식을 무시합니다.

 

include 지시자

include 지시자로 다른 jsp 파일을 현재 jsp 페이지 내에 포함 시킬 수 있습니다.

example5.jsp

<%@ 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>
<h3> 다른 jsp 파일을 include 할 수 있습니다.</h3>
<%@ include file="example1.jsp" %>
</body>
</html>

 

스크립트릿

스크립트릿은 <% %> 태그를 말하며 서블릿으로 변환되어 서버측에서 실행됩니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트릿</title>
</head>
<body>
<%
	for(int i=2;i<10;i++){
		for(int j=1; j<10;j++){
			out.print(i+"*"+j+"="+(i*j)+"<br>");
		}
		out.print("<br>");
	}
%>
</body>
</html>

 

표현식

<%= %> 으로 사용하며 example1.jsp와 example3.jsp에서 예제로 사용해보았습니다.

해당 위치에 out.print하여 서블릿의 변수 값을 출력할 수 있습니다.

 

선언문

<%! %> 태그를 사용하여 멤버 변수나 메소드를 정의 할 수 있습니다.

example9.jsp

<%@ 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>
<%!
	public int sum(int a, int b){
		return a+b;
	}
%>

덧셈: <%=this.sum(101, 102) %>
</body>
</html>

 

 

JSP 예외 처리

1. 지시자를 이용하는 방법

<%@ page errorPage = "exc.jsp"%>

이렇게 예외를 처리하는 페이지(exc.jsp)를 따로 지정하면 

실제 예외가 발생했을 때 예외를 처리하는 페이지(exc.jsp) 에서는

<%@ page isErrorPage = "true" %>

<% response.getStatus(200); %>

을 기술해서 해당 jsp파일은 예외를 처리해주는 정상 페이지 임을 명시해줘야 합니다.다.

또, 예외 정보를 표시하고 싶으면 

<%= exception.getMessage() %>

을 이용하면 됩니다.

 

2. web.xml에 기술하는 방법

<error-page>

<error-code>404</error-code>

<location>/error404.jsp</location>

</error-page>

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

표준 액션 태그 jsp java beans  (0) 2022.06.22
JSP 내장 객체  (0) 2022.06.21
web.xml 서블릿 오류 처리  (0) 2022.06.20
리스너 Listener  (0) 2022.06.20
필터 Filter  (0) 2022.06.15