jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m
JSP

[JSP] Day02 (Note + Code): JSP 구성 요소 (디렉티브 태그, 스크립트, 내장 객체, 에러 페이지 처리)

[JSP] Day02 (Note + Code): JSP 구성 요소 (디렉티브 태그, 스크립트, 내장 객체, 에러 페이지 처리)
JSP

[JSP] Day02 (Note + Code): JSP 구성 요소 (디렉티브 태그, 스크립트, 내장 객체, 에러 페이지 처리)

2022. 3. 14. 22:14

2022/3/14

 

/web/ 웹 프로젝트에서 최고 상위 폴더 경로.

##JSP 파일은 생성한 후에 절대 파일명 변경하지 않는다.

RENAME 해서

맞는 이름의 파일 새로 생성해서 내용물 복사하기!

 

페이지 에러:
404: jsp
파일 없다 -> 파일 존재하는지 여부, URL 주소, 경로 상의 오타 없는지 확인.
500:
대부분 자바 구문 오류 -> 자바 쪽 오타 확인

웹 상에서 에러 페이지 예외 처리, 세팅이 되어 있어야 한다. 사용자가 404 not found 페이지를 보면 안 된다. 잘 처리하기. ‘공사 중’ 같은 페이지 제작해서 연결해야 함.

<!-- html 주석: 페이지 소스 보기 하면 주석 내용물이 보임:읽어 들임. 주석이 많으면 느려질 수도-->

<%--jsp 주석: 페이지 소스 보기 해도 내용물이 안보임. 이걸 다는 걸 권장한다. 

charset은 인코딩과 동일. pageEncdoing은 페이지 인코딩만 세팅. 위에  charset

이 되어있으면 pageEncdoing은 생략해도 된다. --%>

 

JSP 페이지에 들어갈 수 있는 구성 요소
디렉티브(Directive) 태그
스크립트: 스크립트릿(scriptlet), 표현식(expression), 선언부(declaration)
표현 언어 (EL/ expression language)
내장 객체 ((Implicit object)
정적인 데이터: 일반 텍스트 등
표준 액션 태그 (Action Tag)
커스텀 태그(Custom tag)와 표준 태그 라이브러리(JSTL)

 

디렉티브 태그
page: JSP 페이지에 대한 정보 설정

include: JSP 페이지의 특정 영역에 다른 문서를 포함

taglib: JSP 페이지에서 사용할 태그 라이브러리 설정

<%@ 디렉티브 태그명

 

1.  page
: JSP
페이지 설정 정보 지정 문서 타입, 출력 버퍼 크기, 에러 페이지 등을 세팅할 수 있음.
페이지 최상단에 선언 권장. 속성 다양.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
import = “java”
session= “true”
세션을 사용할지 안 할지 정하는 것. 중요하다. 기본값이 트루.
buffer= “8kb”
기본 값이 8kb.
autoFlush= “true” /
출력 버퍼의 동작을 제어. 버퍼에 쌓인 데이터를 전송할 곳으로 전송하고 비워준다. 기본값이 트루. 버퍼가 꽉 차면 화면에 뿌려줌. 얘를 false로 해 놓으면 버퍼가 꽉 찼을 때 에러가 발생.
isThreadSafe= “true”
기본값이 트루.  멀티 스레드 허용 여부를 지정해준다.
info="
화면에 출력 안 되는 페이지 관련 메모 작성하는 속성"
errorPage="error.jsp"
문제가 발생했을 때 이동해야 하는 에러 페이지를 적어준다.
isErrorPage="true" false
가 기본값.
isELIgnored="false" EL
을 무시할 것인지 설정. 폴스가 기본값=무시 안 하고 사용하겠다. 트루해놓으면 EL 안 쓰겠다.
d
%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import = "java.util.Date"
    session="true"
    buffer = "1kb"
	autoFlush="true"
	isThreadSafe="true"
	info="화면에 출력 안되는 페이지 관련 메모 작성하는 속성"
	errorPage="error.jsp" 
	isErrorPage="false"
	isELIgnored="false"
	deferredSyntaxAllowedAsLiteral="false" 
    %>

-

	<%= new Date() %> <%--스크립트 출력문 : 자바코드 출력 --%>
	<% // 스크립트릿
	//자바 코드 작성 부분
	for(int i = 0 ;i < 1000; i++){ %>
		hello (일반 html 텍스트)
	<% }
	%>

-

<%--서블릿 버전--%>
	서버: <%=application.getServerInfo() %><br/>
	서블릿: <%=application.getMajorVersion() %>.<%=application.getMinorVersion() %> <br/>
	jsp: <%=JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>

 

 

2.  include
:
외부 파일의 내용을 포함: 복붙 개념.
머리글, 바닥글 같은 공통된 부분을 별도의 jsp 파일로 만들어 모듈화 시켜 include로 붙일 때 편함. 코드 유지 보수, 재사용 가능성 향상. 위치는 붙이고 싶은 곳에 제약 없이 사용 가능.
<%@ include file=”
파일명” %> 내가 붙여 넣고 싶은 파일 명을 써주면 붙여 넣기가 됨.
주의 사항! 복사 파일과 붙여 넣는 파일의 인코딩이 동일해야 에러가 안남.

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ include file="jsp04.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>===============================</h2>
	<h1>jsp 03 page</h1>
	<h2>===============================</h2>
</body>
</html>

-

<%@ 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>
	<h2>***************************</h2>
	<h1>jsp 04 page</h1>
	<h2>***************************</h2>
</body>
</html>

 

3.  taglib

: 태그 라이브러리의 약자. Jsp 페이지에서 사용할 태그 라이브러리 설정.
표현 언어, JSTL, 사용자 정의 태그 등 외부 태그 라이브러리를 설정하는 태그. 페이지 상단에 작성.
<%@ taglib prefix = “태그 식별자”태그 식별자 uri= “
외부 라이브러리 경로”%>
uri:
외부 태그의 설정 정보를 가진 라이브러리 경로 주소
prefix:
태그를 식별하기 위한 고유 이름
ex)
태그 사용 시
<
태그 식별자: 태그 명 …>

 

스크립트 요소

:HTML 코드에 자바 코드를 넣어 프로그램이 수행하는 기능 구현. 서블릿 클래스로 변환할 때, JSP 컨테이너가 자바 코드가 삽입되어 있는 스크립트 태그를 처리하고 나머지는 HTML 코드나 일반 텍스트로 간주함.
선언부 <%! 자바 코드 %> : 클래스 영역: 사용 거의 안 함
스크립트릿
<% 자바 코드 %>: 메서드 영역: 자바 코드 실행
출력문 <%=   %> : 값을 출력 : html 코드와 섞어서 사용 가능.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
	//선언부: 클래스 영역
	//클래스 변수, 인스턴스 변수, 메서드
	static int num = 5;
	int num2 = 10;
	public int multiply(int a, int b){
		return a*b;
	}
%>
<%--출력문: 세미콜론 없이 작성--%>
num =<%= num %>
num2 =<%=num2 %>
10 *20 = <%=multiply(10,20) %> <br/> 
<!-- 리턴해주는 값을 출력해주겠다. 리턴해주는 값을 출력하겠다는 말. -->

<%
//스크립트릿: 메서드 영역
for(int i=0; i<num;i++){
	//자바 코드로 브라우저에 출력
	out.println("java server pages" + i + "<br/>");
}
System.out.println("콘솔에 출력");

String col = "yellow"; //지역 변수
%>
<body bgcolor="<%=col %>">
</body>

 

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

<%
	for(int i=0;i<10;i++){
	//if(i%2 == 0) out.println(i+"<br/>");
	}
	int count = 0;
	int a =1;
	int b= 2;
	int c =3;
%>
<h2><%= ++count%></h2>
<h2><%= a+b+c %></h2>
<h2><%= new java.util.Date() %></h2>

<h2> jsp 주석</h2>
<%--
<h1>hello</h1>
<h1>hello</h1>
<h1>hello</h1>
 --%>
 <h2>html 주석</h2>
<!-- 
<h1>hello</h1>
<h1>hello</h1>
<h1>hello</h1>
 -->

 

내장 객체 implicit object
: jsp 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체.
import
문 없이, 또한 객체 생성 없이 바로 사용 가능.
JSP
페이지가 서블릿으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메서드 매개변수 등 각종 참조 변수(객체)로 포함시킴
_jspSerive()
메서드에서 사용 가능

 

#종류

1.  request: 웹 브라우저 HTTP 요청 정보 저장: javax.servlet.http.HttpServletRequest (기능과 요청을 다 가지고 있는 클래스. 눈에 잘 익혀두기)

2.  response: 웹 브라우저 HTTP 응답 정보 저장: javax.servlet.http.HttpServletResponse

3.  out: 출력 관련 : javax.servlet.jsp.jsp.jspWriter

4.  session: 웹 브라우저 정보 유지 위한 세션 정보 객체: javax.servlet.http.HttpSession

5.  application: 웹 애플리케이션 콘텍스트 정보 저장 (콘텍스트 정보가 나오면 설정 관련 있는 건가 보다 생각하면 됨): javax.servlet.ServletContext

6.  pageContext: JSP 페이지 정보 저장 : javax.servlet.jsp.PageContext

7.  page: JSP 페이지로 구현한 자바 클래스, JSP 페이지 자체를 나타냄: java.lang.Object

8.  config: JSP 페이지 설정 정보 저장: javax.servlet.ServletConfig

9.  exception: JSP 페이지 예외 발생 처리 : java.lang.Throwable (Throwable은 exception 클래스의 상위)

 

request 내장 객체
브라우저에서 서버의 JSP 페이지 요청 시 요청에 대한 정보를 담고 있는 객체

 

1.  기본 기능
클라이언트와 관련된 정보 읽기 기능
서버와 관련된 정보 읽기 기능
클라이언트가 전송한 요청 파라미터 읽기 기능
클라이언트가 전송한 요청 헤더 읽기 기능
클라이언트가 전송한 쿠키 읽기 기능
속성(Attribute) 처리 기능

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
클라이언트 IP: <%= request.getRemoteAddr() %> <br/>
컨텍스트 경로: <%= request.getContextPath() %><br/>
요청 uri: <%= request.getRequestURI() %><br/>

요청 정보 컨텐츠 타입: <%=request.getContentType() %><br/>
요청 정보 인코딩: <%= request.getCharacterEncoding() %><br/>
요청 정보 프로토콜: <%= request.getProtocol() %> <br/>
요청 정보 전송방식: <%= request.getMethod() %><br/>
요청 정보 길이: <%= request.getContentLength() %>
서버 이름: <%=request.getServerName() %>
서버 포트: <%=request.getServerPort() %>

</body>
</html>

 

2.  요청 파라미터 처리 (중요)
:
요청 파라미터의 형태는 form: name 속성 값 = 입력 데이터의 형태로 전송되며 주소 창: 이름 = 값&이름 = 값
input tag
의 name 속성의 값을 키로 request 객체를 이용해 전송된 값을 꺼낼 수 있다.
#
요청 파라미터를 꺼낼 때 사용하는 주요 메서드

<%@ 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>
	<h2> form page</h2>
	<form action="pro.jsp?test=10" method="post">
		ID: <input type="text" name="id"/> <br/>
		PW: <input type="password" name="pw"/> <br/>
		좋아하는 동물:
		<input type="checkbox" name="pet" value="dog"/>강아지
		<input type="checkbox" name="pet" value= "cat"/>고양이
		<input type="checkbox" name="pet" value= "rabbit"/>토끼<br/>
		<input type="submit" value= "login"/>
	<!-- http://localhost:8080/web/jsp02/pro.jsp?id=java&pw=1111 -->
	</form>



</body>
</html>

 

A.   String getParameter(String name)
:
이름이 name인 파라미터의 값을 리턴 받기. 이름과 동일한 파라미터가 존재하지 않으면 null을 리턴. 이걸 제일 많이 쓴다.

B.   String [] getParameterValues(String name)
:
이름이 name인 모든 파라미터의 값을 배열로 리턴 받기. 존재하지 않으면 배열이 null. 같은 이름으로 파라미터가 넘어오면 이걸 씀.

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

	<h2> process page</h2>
	<%
		//데이터 꺼내서 출력하기
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		System.out.println(id);
		System.out.println(pw);
		String test = request.getParameter("test");
		System.out.println(test);
				
		
		//동물꺼내기
		//String pet= request.getParameter("pet"); 하나만 꺼내짐
		/* null인 경우 에러발생
		String[] pets =request.getParameterValues("pet");
		System.out.println("pets.length: "+ pets.length);
		for(String s: pets){
			System.out.println(s);
		}*/
		String[] pets = null;
		//사용자가 체크박스 선택을 안하면 pet이라는 이름으로 데이터가 넘어오지 않아 null pointer exception 발생. 이때 꺼내서 사용하려고 하면 에러 발생! 
		if(request.getParameterValues("pet")!= null){
			pets = request.getParameterValues("pet");
			for(String s: pets){%>
				<h3>pets: <%=s %></h3>
			<% }
		}	%>

	
	<% out.println("-------------------------------------------");
	//파라미터 이름 목록 출력
	Enumeration enu= request.getParameterNames();
	while(enu.hasMoreElements()){
		String name = (String)enu.nextElement();
		out.println(name + "  ");
	}

	out.println("-------------------------------------------");
	%>
	
	
	<!-- 
	<h3>id: <%=id %></h3>
	<h3>pw: <%=pw %></h3>
	<h3>test: <%=test %></h3> -->
	<body>
	<table>
	<tr>
		<td> id </td>
		<td> <input type="test" name="id" value="<%=id %>"/></td>
	</tr> 
	<tr>
		<td> pw </td>
		<td> <input type="test" name="pw" value="<%=pw %>"/></td>
	</tr> 
	<tr>
		<td>pets</td>
		<td>
			<input type = "checkbox" name="pets" value="dog" <%if(pets != null){
				for(String p : pets){
					if(p.equals("dog")){%>checked<%}
				}
			} %>
			/> 강아지
			<input type = "checkbox" name="pets" value="cat" <%if(pets != null){
				for(String p : pets){
					if(p.equals("cat")){%>checked<%}
				}
			} %>/> 고양이
			<input type = "checkbox" name="pets" value="rabbit" <%if(pets != null){
				for(String p : pets){
					if(p.equals("rabbit")){%>checked<%}
				}
			} %>/> 토끼
	</table>
	</body>
</body>
</html>

C.   java.util.Enumeration getParameterNames()
:
전송한 파라미터의 이름 목록을 리턴. 리턴 타입이 Enumeration. 값을 꺼내려면 hasNext 해서 꺼내야 함

D.   java.util.Map getParameterMap()
:
전송한 파라미터의 맵을 구함 <파라미터 이름, 값>쌍으로 구성

 

전송 방식

: GET/ POST
#GET

: URL 경로 뒤에 물음표와 함께 파라미터를 붙여 데이터 전송 가능. 이를 쿼리 스트링이라고 한다. 각각 파라미터는 엠퍼샌드(&)기호로 구분. 브라우저에 따라 한글은 이상한 문자로 표현 RFC 2396 규약에 정의된 규칙에 따라 인코딩해서 전송. URL 쿼리로 파라미터를 전송하므로 폼을 사용하지 않아도 데이터 전송 가능. 브라우저, 웹서버 또는 웹 컨테이너에 따라 전송할 수 있는 파라미터 값의 길이 제한이 있을 수 있다.

#POST
: URL
경로 뒤에 파라미터가 보이지 않는다.
데이터 영역을 이용해서 파라미터를 전송하여, 전송할 파라미터의 길이 제한이 없다. 동영상, 이미지, 파일 등 문자로 전송 불가능한 파일을 보낼 수 있다.

요청 파라미터 인코딩
보낼 때 인코딩, 받을 때 디코딩의 캐릭터 셋이 동일해야 한다.


[캐릭터 셋
세팅]
#1
클라이언트 <--- 서버: <%@ page 인코딩 UTF-8 %>
#2
클라이언트 ---> 서버: 다른 곳에서 처리.


POST: request.setCharacterEncoding(“UTF-8”);
사용자가 보내준 파라미터 값을 꺼내기 전에 한번 먼저 실행시켜주어야 한다.
->JSP
처리 페이지에서 매번 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="pro1.jsp" method="post">
	username: <input type = "text" name="username"/> <br/>
	msg: <input type = "text" name="msg"/> <br/>
	<input type="submit" value="전송"/>

</form>
</body>
</html>

-

<h2>pro1 page</h2>

<%
	// C -> S POST 방식으로 데이터 전송 했을 때
	//getParameter() 하기 전에 먼저 캐릭터셋을 지정해준다.
	request.setCharacterEncoding("UTF-8");
	
	String username = request.getParameter("username"); 
	String msg = request.getParameter("msg"); 
%>	
<h3>username: <%=username %></h3>
<h3>msg: <%=msg %></h3>

 


GET: Servers > Tomcat 9 … > server.xml > 63
라인 > <Connector… 태그에 URIEncoding=“UTF-8” 속성 추가 후 저장. (이클립스 서버 당 한 번만 추가해주면 계속 유지됨)

#파라미터 전송 방식에 따른 인코딩 결정 규칙
<a>
태그에 쿼리 문자열 추가: 웹 페이지 인코딩 사용 <a href= “…jsp? a=10”
Form
태그 method=“get”: 웹페이지 인코딩 사용
브라우저 주소에 직접 쿼리 추가: 웹 브라우저마다 다름. 검색 창에 아예 주소 쓰는 것.

 

response 내장 객체
: request
와 반대 기능. 사용자의 요청을 처리한 결과를 브라우저로 전달하는 정보 저장 객체.

1.  기능
리다이렉트 하기.
헤더 정보 입력

2.  리다이렉트: 페이지 이동. 다른 페이지로 강제 이동하도록 리다이렉션 메서드 제공
void sendRedirect(String URL);

<h1>A page</h1>
<form action="b.jsp">
	<input type="submit" value="이동"/>

-

<h1> B page</h1>
<%
	System.out.println("bbbbbbb");
	response.sendRedirect("c.jsp"); //c.jsp 페이지로 강제 이동시키기.
%>

-

<body>
<h1>C page</h1>
</body>

 

 

OUT 내장 객체
:
웹 브라우저에 데이터를 전송하는 출력 스트림 객체

application 내부 객체
:
애플리케이션과 관련된 기본 객체
초기 설정 정보 읽기, 서버 정보 읽기, 웹 애플리케이션이 제공하는 자원 읽기

1.  웹 애플리케이션 초기화 파라미터 읽기
#1.
웹 어플리케이션 전체에 사용할 수 있는 초기화 파라미터 지정
/WEB-INF/web.xml
파일에 <context-param> 태그로 초기화 파라미터를 지정
*web.xml:
웹 애플리케이션을 위한 설정 정보를 담고 있는 파일. WEB-INF 폴더 안에 위치해야 함.

<context-param>
<description> 파라미터
설명(옵션)</description>
<param-name> 파라미터 이름 </param-name>
<param-value> 파라미터 값 </param-value>

</context-param>

#
메서드
String getInitParameter(String name):
이름이 name인 초기화 파라미터 값을 읽어옴. 없으면 null
Enumeration <String> getInitParameterNames():
초기화 파라미터의 이름 목록 가져오기

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

	<h2> 초기화 파라미터 </h2>

	<h2> 낱개로 뽑아서 출력 </h2>
	<h4> logEnabled : <%= application.getInitParameter("logEnabled") %></h4>
	<h4> debugLevel : <%= application.getInitParameter("debugLevel") %></h4>

	<h2> 목록뽑아 전체 출력 </h2>
	<ul>
	<%
		// 초기화 파라미터 목록가져와 내용 추출 
		Enumeration<String> pNames = application.getInitParameterNames(); 
		while(pNames.hasMoreElements()){
			String name = pNames.nextElement();  %>
			<li> <%=name%> = <%=application.getInitParameter(name) %> </li>
	<%	} %>
	</ul>
</body>
</html>

JSP 코드

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">

<!--  초기화 파라미터 -->
	<context-param>
		<description>로깅옵션</description>
		<param-name>logEnabled</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<description>디버깅 레벨</description>
		<param-name>debugLevel</param-name>
		<param-value>5</param-value>
	</context-param>

XML 구성

 

 

에러 페이지 세팅
웹 애플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비 정상적인 종료를 막기 위한 세팅

 

1.  웹 에러
404: Not Found
요청 경로 오류
500: Internal Server Error
요청 페이지의 로직 오류 (자바 쪽에서 문제 생겼을 때)

[2xx]: Success
성공 관련 코드
200:
성공: 서버가 요청한 페이지를 잘 처리, 제공했다.
[3xx]: Redirect
이동 관련 코드
[4xx]: Client Error
관련 코드
400: Bad Request:
요청이 이상함. 입력 란에 이상한 데이터나, JSON이 와야 하는데 엉뚱한 게 온 경우
405: Method Not Allowed
해당 메서드 안돼요~ 허용되지 않음.
[5xx]: Server Error
관련 코드
503: Service Unavailable
서비스 지원 불가. 웹 서버는 살아있는데 DB 서버가 죽었다든가…

 

2.  예외처리 방법 (에러 페이지로 이동)
- try/ catch/ finally:
자바 언어의 예외처리 구문 이용 (우선순위 1)
- page
디렉티브 태그 이용한 예외처리(순위 2) 파일을 이용한 예외 처리 (순위 3. 예외 유형을 클래스로 작성한 것 먼저 ->오류 코드로 처리한 것)
#web. xml




<%@ 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 a =10;
int b =0;
int c = a/b;
out.println(c);



%>
</body>
</html>

일부러 예외 발생

<%@ 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>
	<h2> error 페이지 입니다!!! </h2>
	<h3> 공사중입니다....... </h3>
	<%=  exception.getMessage()   %>
	
</body>
</html>

예외 발생 시 보여줄 페이지

<!-- 코드로 에러 페이지 세팅  -->
	<error-page>
		<error-code>500</error-code>
		<location>/jsp02/error.jsp</location>
	</error-page> 
 
<!--  클래스로 에러 페이지 세팅  -->
  <error-page>
		<exception-type>java.lang.Exception</exception-type>
		<location>/jsp02/error.jsp</location>
	</error-page>

예외 처리 코드 web.xml에서 세팅

 

 

    'JSP' 카테고리의 다른 글
    • [JSP] Day 03 (Note + Code): JDBC, 자바 빈즈, 커넥션 풀
    • [JSP] Day01 (Note): 톰캣, 이클립스 기본 세팅, 웹과 JSP

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.