본문 바로가기

프로그래맹(JAVA)/JSP 정리 , 서블릿개념

jsp : Scripting Elements 사용법 그리고 디렉티브(Directive), page errorPage(에러 페이지)로 이동방법,

728x90

 

Scripting Elements : JSP의 자바어 선언 방법.

 

Scripting Elements 

 ◎ declarations : 선언부 (int .. 변수)
 <%!.... %>

 ◎ scriptlet  : 처리부 (일반 자바 합), 객체생성.
<% ... %>

 ◎ expression :  출력부
 <%= .... %>

 

<%@ 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>
<script type="text/javascript">
var sum = 0;
function SumResultScript() {
	for(i=0; i<=15; i++) {
		sum += i;
	}
	return sum;
}
</script>
</head>
<body>
	<h2>1부터 10까지의 합계</h2>
	<!-- 소스보기를 사용할때 자바코드는 보여지지 않는다. -->
	<%!
	int sum = 0;

	int SumResult() {
		for (int i = 0; i <= 10; i++) {
			sum += i;
		}
		return sum;
	} %>
	
	결과값 : <% out.println(SumResult()); %>  //55 :출력 
	<hr />
	자바스크립트를 이용한 결과값 : 
	<script type="text/javascript">
		// function SumResultScript() 메서드 호출.
	 document.write(SumResultScript() ); // 120 :출력
	</script>
</body>
</html>

 

디렉티브(Directive)

Directive : 지시자, @형식 (java의 import 등.. 기능 사용)

 

 

디렉티브(Directive) : page, taglib, include

<%@ page ... %>

 

<%@ page ... %>
 ◎ language, contentType, import, session, buffer, autoFlush
 ◎ info, errorPage, isErrorPage, PageEncoding,
 ◎ isELIgnored 
 ◎ deferredSyntaxAllowedAsLiteral, trimDirectiveWhiteSpaces
<%@page import="java.util.Date ,java.sql.* "%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.util.Random "%>
 <!-- 모든import 하기 -->
<%@page import="java.io.*, java.util.* "%> 
<%@ 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>
	램덤값 추출 및 입출력 객체 생성. <br />
	<%
		Random r = new Random(); // Random 객체생성
		OutputStream ops = new FileOutputStream("test.txt"); //OutputStream 객체생성.
		
		Date date = new Date(); // 날짜 시간정보를 가져온다. 
	     // 시간정보를 가져온값을 데이터베이스에 들어갈수있게 변환.
		java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 
		
	%>
	<!-- 표현부 -->
	<%=date  %>: Date값<br/>
	<%=sqlDate  %>: sqlDate값<br/> 

</body>
</html>

 

 

 

buffer 

* buffer : 버퍼에 내용을 담아놨다 , 한번에 출력(성능 및 속도 저하 방지)

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

<!-- 기본값 8bk -->
<!-- autoFlush="false": 버퍼가 꽉차면, 보내지않고 담아놓는다. -->
<!-- autoFlush="true": 버퍼가 꽉차면, 보내지 밖으로내보낸다(방출). -->
<%@ page buffer="1kb" autoFlush="true"%> <!-- java.io.IOException: Error: JSP Buffer overflow -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>버퍼 테스트</h1>
	<!-- 버퍼: 사용될 내용을 저장했다, 한번에 전해준다. ex) 1024개출력하고, 그값 한번에 전달. -->
	<%
		for(int i=0; i<1024; i++) {
	%>
			<%= i  %>
	<% 
		}			
	%>
</body>
</html>

 

 

page errorPage(에러 페이지)

<%@ page errorPage="" 를 사용하여 에러발생시 어떠한 페이지 이동을 할수있다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page errorPage="error/ErrorTarget.jsp" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>에러가 발생했을때 지정된 에러페이지로 이동</h1>
	<%
		int arr[] = new int[3]; // 3번배열까지 생성
		arr[5] = 10; // 에러를 발생시킴. 5번자리에 입력 
		
		int i = 10/0; // 0으로 나눔 // 에러발생 
	%>
</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>
<h1>예기치 않은 에러로 인해 페이지가 이동되었습니다.</h1>
여기는 ErrorTarget.jsp 페이지 입니다.<br/>

<!-- exception의 객체는 isErrorPage="true" 일경우 사용가능하다. -->
<%= exception.getMessage() %>  <!-- 배열의 값 5없다. 의미: 크롬으로 확인(기능) -->
</body>
</html>

 

 

 

반응형