JSP(Java Server Page)


: jsp 는 선 마이크로 시스템사가 개발한 인터넷 서버 프로그래밍 기술이다.

  선마이크로 시스템사는 자바언어를 기반으로 하는 인터넷 서버 프로그래밍 방식인

  서블릿(Servlets)을 먼저 개발하여 과거의 CGI(Common Gate Interface)개발방식을

  대체하였다.

  그러나 자바를 이용하는 서블릿 개발방식이 그리 쉽지 않고 ASP, PHP 와 같이

  HTML 코드 내에 직접 비즈니스 로직을 삽입할 수 있는 개발 방식이 필요하게 되어

  개발한 기술이 JSP 이다. 그러나 JSP 는 서블릿과 동떨어진 기술이 아니며

  JSP 가 실제로 웹 어플리케이션 서버에서 사용자에게 서비스가 될때는

  서블릿으로 변경되어 서비스 된다.

  

  ASP 는 VBScript 를 사용하지만 JSP 는 자바기반의 문법을 사용하여

  어려운 자바소스 코드 대신에 태그를 사용해 자바객체를 사용한다.

  또한 JSP 는 JavaBeans(자바빈즈)라는 콤포넌트를 사용해

  비즈니스 로직과 프리젠테이션 로직을 완전히 분리해 응용 프로그램을

  구현할 수 있다.

  

  JSP 는 플랫폼에 독립적인 기술방식이다. 시스템 플랫폼이 윈도우NT 이던

  유닉스 시스템이든 어느 한 플랫폼에서 개발한 시스템을 다른 플랫 폼에서

  운영하는 것이 가능하다.

  또한 JSP 는 웹 서버에 독립적이다. 

  

  

JSP 엔진(컨테이너)


: JSP 프로그램은 하나의 서블릿 프로그램으로 변환되어 실행된다.

즉 hello.jsp 인 JSP 프로그램은 hellp.jsp 소스에서

hello_jsp.java의 서블릿 프로그램이 생성된 후, 이 서블릿 소스가

컴파일되어 hello_jsp.class 클래스가 생성된다. 그러므로 클라이언트가

hello.jsp 를 요청하면 서버는 대응하는 JSP 서블릿 클래스인

hellp_jsp.class 를 실행하여 클라이언트에 응답한다.

여기서 JSP 화일에서 생성되는 서블릿 화일의 이름은 시스템마다 다를 수 있다.

이러한 JSP 소스에서 서블릿 소스 및 서블릿 클래스 생성을 처리하는

서버 모듈을 JSP 엔진 또는 JSP 컨테이너라고 부른다.

이러한 JSP 엔진은 웹 서버와 분리되어 독자적으로 설치 할 수 있으며

JSP 엔진이 포함된 웹 서버를 이용할 수 있다.

JSP 엔진으로는 tomcat, resin(레진), JRun 등이 있다.

. JSP 실행과 라이프 사이클

1. 클라이언트가 JSP 프로그램을 요청하면 JSP 소스를 해당 JSP 서블릿으로 

변환 하면서 시작한다.

2. 이미 클래스가 있다면 메모리에 로드되어 있는지 검사한다.

이미 메모리에 로드되어 있다면 5 번을 실행한다.

3. JSP 서블릿 코드를 컴파일하여 서블릿 코드를 생성한다.

4. JSP 서블릿 클래스를 메모리에 로드 한다.

5. 메모리에 로드된 JSP 서블릿을 실행한다.

6. JSP 서블릿의 응답을 생성하여 클라이언트에 응답한다.

JSP 라이프 사이클

메소드 기능

_jspInit() 요구되는 자원의 연결 등의 초기화 작업 수행

. 메모리에 로드 되지 않은 서블릿 요청시

_jspService() 실제 클라이언트의 요청에 대한 직접 처리 수행으로

클라이언트 요청때 마다 반복 수행

. 메모리에 로드된 서블릿 요청시

_jspDestroy() 웹 서버 또는 어플리케이션이 종료 되는 경우에

메모리에서 언로드하는 경우, JSP 서블릿 종료를 위한

작업 수행

. 에플리케이션이 종료되어 서블릿 메모리에서 언로드

. JSP 기본 문법

: JSP 는 HTML 태그와 동일하게 모든 태그가 '<', 로 시작하고 '>' 문자로

 끝나는 스크립트 지향 태그와 주석 태그, XML 기반의 액션태그,

 커스텀 태그로 구성되고

 

 JSP 는 태그를 이용하여 고유한 문법을 기술하는 서버 프로그래밍 방식이다.

 

 

 

 스크립트 태그 종류 태그 형식 의미

 

 Directives(지시어)     <%@ %>         JSP 페이지의 속성을 지정

 

 Declaration(선언)     <%!     %> 소속 변수 선언과 메소드 정의

 

 Experssion(표현식) <%= %> 변수, 계산식, 함수 호출 결과를

                  문자열 형태로 출력

 Scriptlet(스크립트릿)     <%   %>         자바코드 기술

 

 Comments(주석)     <%--  --%>         주석, JSP 페이지의 설명

 

 

 

 

 종류 태그 형식 의미

 

  <jsp:include page="test.jsp" /> 현재 jsp 페이지에서 다른 페이지를 포함

 

  <jsp:forward page="test.jsp" /> 현재 jsp 페이지의 제어를 다른 페이지에 전달

 

 Action Tag           <jsp:plugin type="applet" code="tset" /> 자바 에플릿 플로그인

 (액션 태그)

 

  <jsp:useBean id="login" class="LoginBean" /> 자바빈 사용

 

 

 

  <jsp:setProperty name="login" property="pass" /> 자바빈 속성을 지정하는 메소드 호출

 

 

 

  <jsp:getProperty name="login" property="pass" /> 자바빈 속성을 반환하는 메소드 호출

 

 

 

 

 

 Custom Tag <tag:printData dbname="myDb" table="member" /> 사용자가 직접 정의한 태그 사용

 (커스텀 태그)

 

 

 

. JSP 스크립트 요소

: 자바 프로그래밍 코드가 삽입 되는 선언, 표현식, 스크립트릿 그리고

 문법과 관계없이 설명을 기술하는 주석을

 JSP Script Element 라고 한다.

 

 

  . Scriptlet(스크립트릿)

 

   JSP에서 자바코드가 삽입하려면

   

   <% ....%> 의 scriptlet(스크립트릿)을 이용한다.


WebContent 우클릭해서 JSP.File로 실습한다.



1. JSP Test scriptlet.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Test scriptlet.jsp</title>

</head>

<body>


<% int i = 24; %>

<%

out.println("하루는 " +i +"시간이며,<BR>");

out.println("하루는 " + i * 60+" 분 입니다.");

%>

</body>

</html>



2. JSP Test Experssion Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Test Experssion Test</title>

</head>

<body>


<% int year = 365; %>

<% out.println("1년은 약 몇 주 일까요 > <P> "); %>


<%= year /7 %>

<%= "주입니다.<P>" %>


<% out.println(year/7); %>

<% out.println("주입니다.<P>"); %>


</body>

</html>



3. JSP error Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP error Test</title>

</head>

<body>


<% String[] str = {"감사합니다.", "Thank You.", "Thank You."}; %>


한국어로 [<%=str[0] %>]는 <br>

영어로   [<%=str[2] %>] 입니다.<br>


</body>

</html>



4. member변수, local 변수


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>member변수, local 변수</title>

</head>

<body>

<% int i = 0; %>

[지역 변수]i = <%= ++i %>

<p>

[멤버 변수] mem_i = <%= ++mem_i %>

<%! int mem_i = 0;%>


</body>

</html>



5. declaration Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>declaration Test</title>

</head>

<body>


<%! double radius = 4.8; %>



<%!

public double getArea(double rr)

{

return rr * rr * 3.14;

}

public double getRound(double rr)

{

return 2 * rr * 3.14;

}

%>


반지름이 <%= radius %> 인<br>

원의 면적은 <%= getArea(radius) %> 입니다.<br>

원의 둘레는 <%= getRound(radius) %> 입니다.

</body>

</html>



6. JSP Comments Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Comments Test</title>

</head>

<body>

<!-- 이것은 HTML 주석으로 웹 브라우저의 [소스 보기]에서 보입니다. -->

<%-- 이것은 주석으로 웹 브라우저의 [소스 보기]에서 안보입니다. --%>

<%!

// 주석 달기 달기

/*

절대값을 반환하는 메소드 abs()

*/

public int abs(int a)

{

// if 문장 사용

if (a < 0)

{ return -a; }

else

{ return a; }

}

%>

원주율은 <%= Math.PI %> 이다.<br>

-77 의 절대값은 <%= abs(-77) %> 입니다.<br>

</body>

</html>


<소스 보기로 출력되는 주석 확인>



. Directives(지시자)

 지시자는 일반적인 프로그램 언어와는 달리 태그 형태를 이용하여 JSP

 페이지에 대한 속성 또는 특별한 지시 사항을 지정하는 태그 입니다.

 

 종류 형태 의미

 

 page                              <%@ page property="property-value" %>                       JSP 페이지에 대한 속성지정

 

 include                                      <%@ include file="fine_name" %>             태그 부분에 지정한 페이지를

  정적으로 삽입

 

 taglib                                <%@ taglib uri="uri_value" 새로운 태그를 정의 하여 사용

  prefix="prefix_value" %>



7. Page Info Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>


<%@ page info="Page 지시자를 다루는 페이지" %>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Page Info Test</title>

</head>

<body>


<H2> page 지시자</H2>


&lt;% page info="page 지시자 지시자" %&gt;<br>

<%= this.getServletInfo() %>


</body>

</html>



8. Page Import Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Page Import Test</title>

</head>

<body>

<H2> Page 지시자의 Import</H2>

<%@ page import="java.util.Date" %>

현재 시각 : <%= new Date().toString() %>

</body>

</html>



9. age errorPage Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Page isErrorPage Test</title>

</head>

<body>

<%@ page isErrorPage="true" %>


<h2> 처리중 문제 발생 </h2>

<HR size="5" color="red">


exception.getMessage () : <%= exception.getMessage() %><br>

exception.toString () : <%= exception.toString() %><br>

</body>

</html>


<exception.jsp로 저장>



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Page errorPage Test</title>

</head>

<body>

<%@ page errorPage="exception.jsp" %>


<%String[] str = {"감사감사", "Thank you"}; %>

한국어로 [<%= str[0] %>] 는 <br>

영어로 [<%= str[2] %>] 입니다.<br>

</body>

</html>



10. JSP Include Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Header Test</title>

</head>

<body>

<H2>

<font color="blue"> JSP 지시자 Test</font>

</H2>


</body>

</html>


<header.jsp로 저장>



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Footer Test</title>

</head>

<body>

<CENTER>

<font color="red">Copryright (주)korea2017 Co</font>

</CENTER>


</body>

</html>


<footer.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>

<img src="a.jpg">

</body>

</html>


<aa.jsp로 저장>



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JSP Include Test</title>

</head>

<body>

<%@ include file="header.jsp" %>


<hr size="5" color="green">

<P>


include 지시자 : &lt;@ include file ="file_name" %&gt;

<P>

<%@ include file="aa.jsp" %>

<hr size="5" color="blue">


<%@ include file="footer.jsp" %>


</body>

</html>


+ Recent posts