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>
반응형