JSP 2강 - 스크립트태그, 디렉티브 태그

스크립트 태그

1) 선언문(<%!...%>) : 자바 변수, 메소드 정의
2) 스크립트릿(<% %>) : 자바 로직 코드 작성
3) 표현식(문)(<%= %>) : 변수, 계산식, 메소드 호출 결과를 문자열로 출력

선언문
1) 선언문 태그에 선언된 변수와 메소드는 JSP페이지의 임의의 위치에서 선언 가능
2) 그 변수는 전역변수가 되고, 그 메소드는 전역 메소드로 사용됨

스크립트릿
1) 모든 일반 텍스트, HTML 태그, JSP 요소는 스크립트릿 태그 외부에 있어야 함

표현식
1) 선언문, 스크립트릿에서 선언된 변수/메소드 반환값을 외부로 출력 가능
2) 표현식은 스크립트릿 내부에서 사용할 수 없으므로 out.print() 메소드를 사용한다.
3) 표현식에 작성된 모든 자바 코드의 값은 문자열로 변환되어 웹 브라우저에 출력

디렉티브 태그

  • JSP 페이지에 대한 설정 정보를 지정
  • 디렉티브 구문

    <%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>
    ex <%@ page contentType = "text/html; charset=euc-kr" %>

JSP가 제공하는 디렉티브
page : JSP 페이지에 대한 정보를 지정
-- JSP가 생성하는 문서의 타입, 출력 버퍼의 크기, 에러페이지 등 정보 지정
taglib : JSP 페이지에서 사용할 태그 라이브러리를 지정
include : JSP 페이지의 특정 영역에 다른 문서를 포함

기본 객체

JSP는 웹 프로그래밍에 필요한 기능을 제공해주는 기본 객체 9가지를 제공
JSP에서 별도 선언 없이 사용 가능(단, exception은 iserrorpage="true")

  • 주요 기본 객체
    request : 요청 정보를 구할 때 사용
    response : 응답과 관련된 설정(헤더, 쿠키 등)시 사용
    application : 웹 어플리케이션 정보를 읽어옴
    out : 직접 응답을 출력할 때 사용
    session : 세션 관리 및 처리에 사용

tagRan.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>
<!-- 
* JSP 태그 : 문법을 기술
1. 스크립트 태그(script tag) : HTML 내의 자바 코드
 1) 선언문(꺾임쇠퍼센트느낌표) : 자바 변수나 메소드 정의 
 2) 스크립트릿(꺾임쇠퍼센트) : 자바 로직 코드 작성
 3) 표현식(꺾임쇠퍼센트이퀄) : 변수/계산식/메소드 호출 결과를 문자열로 출력

2. 디렉티브 태그(directive tag) : JSP 설정
3. 액션태그(action tag) : 클라이언트/서버에 명령을 지시(XML형태)
 -->
<h2>Scripting Tag</h2>
<%!
	//전역변수
	int count = 3;
	//대문자 와라 단, 소문자로 변경될것임
	//data : 매개변수(파라미터를 받아주는 변수)
	//String ma... : 리턴타입
	String makeItLower(String data){
		return data.toLowerCase();
	}
%>
<%
	for(int i=1; i<=count;i++){
		out.print("이선우 : " + i + "<br />");
	}
	
%>
<%=makeItLower("Hello 이선우!")%>



</body>
</html>

tagRan2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>
Page Count is :
<!-- 스크립트릿 -->
<!-- 선언문 태그가 밑에 있고 위에서 호출해도 가능하다 -->
<%
	//전역 메소드 호출
	out.print(myMethod(0));

%>

<!-- 선언문 태그 -->
<%!
	public int myMethod(int count){
	//전위증가	
	return ++count;
	}
%>



</body>
</html>

tagRan3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>
<!-- 문제 : 다음을 해결해보자-->

<%
	out.print("2 + 3 = " + sum(2,3));
%>

<%! 
	public int sum(int x, int y){
	 return x + y;
	}
%>

</body>
</html>

tagRan4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>
<!-- 다음을 해결해보자 -->
<!-- 스크립트릿 : 변수 (메소드를 만들 수 없음!)-->
<%
	out.print(makeItLower("Hello 허민정 슈퍼 개발자!"));
%>
<!-- 선언부는 스크립트릿 위, 아래 어디있든 노상관 -->
<!-- 선언부 : 변수, 메소드까지 -->
<%!
	public String makeItLower(String data){
		return data.toLowerCase();
	}

%>
</body>
</html>

tagRan5.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>
메소드를 사용하지 않고 쉽게 연산해보자<br />
<%
	int a = 2;
	int b = 3;
	int sum = a + b;
	out.print("2 + 3 = " + sum);
%>


</body>
</html>

tagRan6.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>

다음처럼 화면에 표시해보자. 단 스크립트릿으로만 해보자<br>
0
2
4
6
8
10
<hr>
<%
	for(int i = 0; i <= 10; i+=2){
		out.print(i + "<br>");
	}
%>

</body>
</html>

tagRan7.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scripting Tag</title>
</head>
<body>
	<p>오늘은 몇일? <%=new java.util.Date() %></p>
<%
	int a = 10;
	int b = 20;
	int c = 30;
%>
<p>a+b+c : <%=a+b+c %></p>
</body>
</html>

declaration.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 str = "Hello, Java Server Pages";
	
	public String getString(String str){
		return str;
	}
%>

<%=getString(str)%>
</body>
</html>

expression.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>
	<%!
		java.util.Calendar cal = java.util.Calendar.getInstance();
	%>
	
	<p>Current Time : <%= cal.getTime() %></p>
	

</body>
</html>

welcome2.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>
	<%!
		java.util.Calendar cal = java.util.Calendar.getInstance();
	%>
	
	<p>Current Time : <%= cal.getTime() %></p>
	

</body>
</html>

directiveTagRan1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>디렉티브 태그</title>
</head>
<body>
<h1>디렉티브 태그</h1>
<h3> : JSP 페이지를 어떻게 처리할까?를 설정</h3>
<h5>page(&lt;%@ page ...%>) -> 페이지 정보 설정</h5>
<h5>include(&lt;%@ include... %>) -> 다른 문서를 포함</h5>
<h5>taglib(&lt;%@ taglib... %>) -> 태그 라이브러리 설정</h5>
</body>
</html>

directiveTagRan2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page 디렉티브</title>
</head>
<body>
<h1>page 디렉티브의 속성</h1>
<h3>language : 사용할 프로그래밍 언어(java)</h3>
<h3>contentType : 
	* 생성할 문서의 유형(text/html)
	cf) text/xml, text/plain, application/msword
	* charset : UTF-8, EUC-KR, ISO-8859-1
</h3>
<h3>pageEncoding : 문자 인코딩 설정(UTF-8)</h3>
<h3>import : 사용할 자바 클래스를 설정</h3>
<h3>session : 세션 사용 여부 설정(기본 true, 생략 가능)</h3>
<h3>buffer : 출력 버퍼 크기를 설정(기본 8KB)</h3>
<h3>autoFlush : 출력 버퍼의 동작 제어 설정(true)</h3>
<h3>errorPage : 오류 발생 시 보여줄 오류(404-page not found, 500(개발오류)) 페이지 설정(jsp)</h3>
<h3>iserrorPage : 오류 페이지 여부 설정(기본 false -> 수동으로 true)</h3>

</body>
</html>

directiveTagRan3.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="application/msword; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Directive Tag</title>
</head>
<body>

	Today is : <%=new Date()%>
</body>
</html>

좋은 웹페이지 즐겨찾기