JSP란?
- Java Server Page의 약자
Java의 웹서버 프로그램 스펙(서블릿)으로 변환되어 서비스된다. - 장점
- 서블릿보다 쉽고 빠르다.
- 디자인 부분과 로직 부분을 분리시킬 수 있다.
- 프로그래머가 직접 코딩한 Servlet보다 최적화된 Servlet을 생성시켜 효율적인 코드가 만들어진다.
- JavaBeans의 사용이 쉽다.
- 웹애플리케이션 상에서 변수의 유효범위(scope) 설정이 쉽다.
JSP 구성 요소
1) HTML 태그
HTML 태그나 HTML 문서 내용들은 고정되어 있기 때문에 템플릿 데이터(Fixed Template Data)라고 한다.
2) 지시어 원소(Directive Element)
- JSP 페이지를 어떻게 처리할 것인지 설정하는 태그
- 지시어는 JSP에 관한 정보를 JSP 컨테이너에 전달하는 역할을 한다.
- 지시어 종류
- <%@ page ... %> : JSP 페이지에 대한 정보를 설정 (JSP 페이지 최상단에 기술)
- contentType= 현재 JSP 페이지의 콘텐츠 유형(text/html, text/xml, text/plain, ...)을 설정하는 데 사용
- pageEncoding= 현재 JSP 페이지의 문자 인코딩 유형(ISO-8859-1, UTF-8, ...)을 설정하는 데 사용
- import= 현재 JSP 페이지에서 사용할 자바 클래스를 설정하는 데 사용
둘 이상의 자바 클래스를 포함하는 경우 쉼표(,)로 구분
3) 스크립트 원소(Script Element)
JSP 스크립트 요소란 JSP 페이지에서 여러 가지 동적인 처리를 제공하는 기능으로, <% %> 기호 안에 자바 코드로 구현한다. <% %> 기호를 스크립트릿이라고 부른다.
- 선언문: JSP 페이지의 멤버 변수나 멤버 메서드를 선언할 때 사용
<%! String str = "Hello" %> - 스크립트릿: 자바 코드를 자유롭게 기술할 수 있는 영역
<% 마음대로 자바 코드... %> - 표현식: JSP 페이지에서 변수나 메서드의 결과값 등을 브라우저에 출력하는 용도로 사용
<%= str %>
(out.println(str)과 동일함)
4) 액션 원소(Action Element)
- JSP 액션 태그라고 불리는데, 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그
- 페이지와 페이지 사이를 제어
- XML 형식: <jsp: ... />를 사용 (반드시 /를 붙여야 태그가 닫힌다.)
예시) <jsp:forward page="ex01.jsp" />
[대표적인 액션 원소]
액션 태그 | 형식 | 설명 |
forward | <jsp:forward page="(경로)파일명"/> 또는 <jsp:forward page="(경로)파일명"></jsp:forward> |
다른 페이지로 이동 (페이지 흐름 제어) |
include | <jsp:include page="(경로)파일명" /> | 외부 페이지 내용을 포함하거나 페이지 모듈화 |
useBean | <jsp:useBean id="자바빈즈 식별이름" class="자바빈즈 이름" scope="범위" /> | 자바빈즈 설정 |
JSP 내장 객체
내장객체 | 주요 역할 | 타입 | 범위 |
request | 사용자로부터 요청을 처리하는 객체 | HttpServletRequest | request |
response | 서버가 사용자에게 처리결과를 응답하는 객체 | HttpServletResponse | page |
pageContext | JSP 실행에 대한 context 정보를 담고 있는 객체 | PageContext | page |
session | 클라이언트(브라우저)별로 세션 정보를 처리하는 객체 | HttpSession | session |
application | 웹서버의 어플리케이션을 처리하는 객체 | ServletContext | application |
out | 사용자에게 응답을 위한 아웃풋스트림을 처리하는 객체 | JspWriter | page |
exception | 예외 발생시 처리하는 객체 | Throwable | page |
page | 현재 JSP 페이지에 대한 정보를 담고 있는 객체 | HttpJspPage | page |
config | 현재 JSP 페이지에 대한 초기화 환경을 처리하는 객체 | ServletConfig | page |
JSP 주석문 사용하기
JSP 페이지에서 사용되는 주석문
- HTML 주석
<!-- HTML 주석문 --> - 자바 주석
//자바 단문 주석
/*자바 복문 주석*/ - JSP 주석
<%-- JSP 주석문 --%>
실습1
[src/main/webapp/example/ex01.jsp]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!-- page directive element(페이지 지시어) -->
<!-- 1. html 주석 -->
<h1>처음 해보는 JSP</h1>
<!-- script element -->
<%
//2. 자바 단문 주석
//<1> scriptlet 태그
/*자바 복문 주석
=> 스크립트렛 태그 안에서는 자바코드를 기술할 수 있다.
*/
int a = 10; //지역변수(local variable)
int b = 20; //scriptlet태그 안에서 선언된 변수들은 모두 지역변수
//내장 객체 사용 가능
out.println("<h2>" + a + "+" + b + "=" + (a+b) + "</h2>");
//out: JspWriter 타입의 출력 스트림
%>
<%--3. JSP 주석 --%>
<%-- <% int c = 10;%> --%>
<%!
//<2> declaration: 멤버 변수나 메서드를 구성할 수 있다.
String str="나는 멤버변수(인스턴스변수)";
public String sayHello(String name){
return "<h2>Hello "+name+"</h2>";
}
%>
<%-- <3> expression: 출력식
<%=변수 %>
out.println(변수); 와 동일함
--%>
<%=str%><br>
<!-- sayHello()호출해서 결과값 출력 -->
<%= sayHello("Tom") %>
<%--
JSP가 서블릿으로 변환되어 실행된다.
이클립스에서 서블릿 코드가 생성되는 곳
C:\multicampus\Java-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work
--%>
|
cs |

실습2
[src/main/webapp/example/ex02.jsp]
<% %>을 활용해서 JSP 페이지 내에 자바 코드와 html 코드를 구분하여 작성할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"
import="java.util.*, java.text.*" %>
<h1>반복문을 이용해서 오늘 날짜를 5번 출력</h1>
<hr color="red">
<%
Date today = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//년월일 시분초
for(int i = 0; i<5; i++){
%>
<h2><%=i %> 오늘 날짜: <%=sdf.format(today) %></h2>
<%
}
%>
<hr color="blue">
<h2>구구단 8단을 테이블 형태로 출력</h2>
<table border="1" style="width:200px">
<% for(int i = 1; i<=9; i++){ %>
<tr>
<td style="text-align:center">8x<%= i%>=<%= 8*i %></td>
</tr>
<% } %>
</table>
|
cs |
