프로필사진
JSP(1) - JSP 스크립트 요소

2019. 11. 8. 17:00🔴 JSP웹개발

300x250

JSP 스크립트 요소 = 자바코드HTML코드처럼 코딩할 수 있게 도와주는 것!


지시어 <%@ ,,, %> 
: 페이지의 정보나 속성에 관한 내용을 작성하는 태그

 

page 지시어 : <%@ page 속성1 = "값1" 속성2 = "값2" ... %> : JSP의 속성을 설정하는 공간

 

<Page 지시어 종류>

language JSP파일 내에서 사용될 언어를 지정하는 속성 (기본값=java)
import JSP페이지 내에서 사용할 패키지 또는 클래스를 import
session JSP에서 세션을 사용하도록 설정함
buffer JSP가 응답을 생성할 때 사용하는 버퍼의 용량 (기본값=8KB)
isThreadSafe 스레드 간의 충돌 방시를 위한 속성 (기본값=true)
info 해당 페이지 전체에 대한 주석, 해당 페이지의 특성이나 기능을 설명할 때 사용
errorPage 해당 페이지에서 에러나 예외가 발생했을 경우 이동할 페이지 주소
isErrorPage 다른 페이지에서 발생한 예외를 처리할 페이지인지 지정 (기본값=false)
contentType JSP가 전송할 응답의 형태가 어떠한 MIME형식인지 지정
pageEncoding 페이지 내에서 사용할 인코딩의 종류를 지정

 

ex) 에러페이지 지정:

기본 페이지 → <%@ page errorPage="error.jsp" %> <!-- 에러 발생하면 이동할 페이지 —>
에러 페이지 생성 → <%@ page isErrorPage = "true" %> <!-- error Page로 등록하기 —>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <!-- 페이지 지시어 또 만들기 -->
<%@ page import="java.util.Calendar" %>
<%@ page session="true" %> <!-- 페이지 내에서 session을 사용할 수 있다 -->
<%@ page buffer = "8kb" %> <!-- 페이지를 이용할때 이 크기로 가져간다 -->
<%@ page isThreadSafe = "true" %> <!-- 기본값 = true -->
<%@ page info= "page 지시어 실습하는 페이지 입니다" %>
<%@ page errorPage="error.jsp"  %> <!-- 에러 발생하면 이동할 페이지 -->
<%
	Calendar c = Calendar.getInstance();
	
	/* 에러발생! */
	//int number = 100/0;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
</head>
<body>
	page 연습 JSP
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage = "true" %> <!-- error Page로 등록하기 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<style>
</style>
</head>
<body>
	이곳은 에러페이지 입니다.
</body>
</html>

그 외

  • 선언문 <%! ,,, %>

  • 표현식 <%= ,,, %>

  • 스크립트릿 <% ,,,%>

  • 주석
    * <!-- html 주석 : 소스보기에서 볼 수 있음 --> 
    * <%-- JSP 주석 : 소스보기에서 볼 수 없음--%> 
    → servlet화 되는 과정에서 사라지기 때문 (사용자에게 보여주고 싶지 않은 주석처리)

<!-- html 주석 : 소스보기에서 볼 수 있음 -->
<%-- JSP 주석 : 소스보기에서 볼 수 없음--%>
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%!
 	//이곳은 선언문 영역이며 실제 서블릿으로 파싱될때 그 서블릿의 필드영역(멤버영역)이다
 	// = class의 바디영역
 	String sayHello = "안녕하세요?";
 	Random ran = new Random();
 	public int sum(int a , int b){
 		return a+b;
 	}
 %>

 <%
 	//이곳을 스크립트릿 영역이며 service()메소드의 지역(바디)영역이다
 	//service가 매개변수로 -> request, response받아서 여기서도 쓸 수 있는것!
 	request.setCharacterEncoding("utf-8");
 	String msg = request.getParameter("msg");
 	
 	//response.setContentType("text/html; charset=utf-8");
 	response.getWriter().println("메세지:" + msg);
 	
 	//application, pageContext, session객체 모두 사용 가능하다
 %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
	스크립트요소 스터디

	<%out.println(sayHello); %>

	<!-- 파라미터공간이기 때문에 ';'붙이지 않는다!!! -->
	<%= sayHello %>
	<%= sum(10,20) %>
</body>
</html>

<%! 와 <%의 차이:

  • <%! : 선언한 변수 → 전역변수 (=member field영역)
  • <% : 선언한 변수 → service method에서만 사용하는 local변수 (=device method영역)
더보기

<% ... %> is used to embed some java code within the main service()method of the JSP. It is executed during the rendering of the page.

<%! ... %> is used to define code outside of the flow of the page, and therefore outside the main service() method. Typically, this was used to define utility methods that would be called from within a <% ... %> block.

Both approaches are now obsolete, however. JSP EL, JSTL and tag classes are the preferred way of doing the same thing.

300x250