JSP란?

  • Java Server Page의 약자
    Java의 웹서버 프로그램 스펙(서블릿)으로 변환되어 서비스된다.
  • 장점
    1. 서블릿보다 쉽고 빠르다.
    2. 디자인 부분로직 부분을 분리시킬 수 있다.
    3. 프로그래머가 직접 코딩한 Servlet보다 최적화된 Servlet을 생성시켜 효율적인 코드가 만들어진다.
    4. JavaBeans의 사용이 쉽다.
    5. 웹애플리케이션 상에서 변수의 유효범위(scope) 설정이 쉽다.

 


JSP 구성 요소

1) HTML 태그

HTML 태그나 HTML 문서 내용들은 고정되어 있기 때문에 템플릿 데이터(Fixed Template Data)라고 한다.

 

2) 지시어 원소(Directive Element)

  • JSP 페이지를 어떻게 처리할 것인지 설정하는 태그
  • 지시어는 JSP에 관한 정보를 JSP 컨테이너에 전달하는 역할을 한다.
  • 지시어 종류
    1. <%@ page ... %> : JSP 페이지에 대한 정보를 설정 (JSP 페이지 최상단에 기술)
    2. contentType= 현재 JSP 페이지의 콘텐츠 유형(text/html, text/xml, text/plain, ...)을 설정하는 데 사용
    3. pageEncoding= 현재 JSP 페이지의 문자 인코딩 유형(ISO-8859-1, UTF-8, ...)을 설정하는 데 사용
    4. import= 현재 JSP 페이지에서 사용할 자바 클래스를 설정하는 데 사용
      둘 이상의 자바 클래스를 포함하는 경우 쉼표(,)로 구분

3) 스크립트 원소(Script Element)

JSP 스크립트 요소란 JSP 페이지에서 여러 가지 동적인 처리를 제공하는 기능으로, <% %> 기호 안에 자바 코드로 구현한다. <% %> 기호를 스크립트릿이라고 부른다.

  1. 선언문: JSP 페이지의 멤버 변수나 멤버 메서드를 선언할 때 사용
    <%! String str = "Hello" %>
  2. 스크립트릿: 자바 코드를 자유롭게 기술할 수 있는 영역
    <% 마음대로 자바 코드... %>
  3. 표현식: 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 페이지에서 사용되는 주석문

  1. HTML 주석
    <!-- HTML 주석문 -->
  2. 자바 주석
    //자바 단문 주석
    /*자바 복문 주석*/
  3. 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><%=%> 오늘 날짜: <%=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*%></td>
    </tr>
    <% } %>
</table>
cs

실행 결과

 

+ Recent posts