초기 웹 프로그램은 서블릿을 이용해서 구현했다. 하지만 디자이너는 개발자와 달리 자바코드에는 익숙하지가 않은 경우가 많아 화면기능 구현시 불편함이 많았다.
그래서 서블릿 기능 중 별도로 화면기능을 디자이너가 작업하기 쉽게하기
위해 JSP가 등장
했다.
기능 : 주로 웹 프로그램 화면기능과 모델2 기반 mvc 뷰기능 담당
구성: HTMl,CSS,Javascript, JSP기본,JSP,액션, 커스텀 태그
디렉티브 태그는 JSP페이지에 대한 전반적인 정보를 설정할 때 사용한다.
1. 페이지 디렉티브 태그 : JSP페이지의 전반적인 정보를 설정할 때 사용한다.
페이지 디렉티브 형식 :
<%@ page 속성1 = "값1, 속성2 ="값2" %>
JSP스크립트 요소란 JSP페이지에서 여러 가지 동적인 처리를 제공하는 기능으로
<% %> 기호안에 자바코드를 구현한다. <% %>를 스크립트 릿
이라고 한다.
스크립트 릿 종류
1. 선언문 : JSP에서 변수나 메서드를 선언
할 때 사용한다.
2. 스크립트 릿 : JSP에서 자바 코드를 작성할
때 사용한다.
3. 표현식 : JSP에서 변수의 값을 출력
할 때 사용한다.
<%! 멤버변수 or 멤버 메서드 %>
//예제
<%!
String name = "듀크";
public String getName(){return name;}
%> //선언문을 이용해 멤버 변수 name과 멤버 메서드 getName()을 선언합니다.
<% 자바코드 %>
<% String age =request. getParameter("age"); %>
//html태그 내에서
<body>
나이는 <%=age %>입니다.
<body>
위에 있는 변수 표현해주는 기능이라고 보면 된다.
<%=age %>
JSP페이지에서 사용되는 주석들이 있다.
자바코드는 말그대로 스크립트릿 안에 Java코드를 주석하는거고 JSP주석은 JSP페이지에 대해서 주석을 거는 것이다.
<%
/*자바코드주석문 */
%>
<!-- HTML주석문 -->
<%-- JSP주석문 --%>
JSP페이지의 내장 객체(내장 변수)란 JSP가 서블릿으로 변환될 때 컨테이너가 자동으로 생성 시키는 서블릿 멤버 변수
를 말한다.
그 중 앞에서 써봤던 application,request,response,session은 이미 서블릿에서 사용해본 객체들이다. 즉! JSP가 서블릿으로 변환 될때 서블릿 객체들을 JSP안에서 사용할 수 있게 해준다.
세션(Session)은 일반적으로 하나의 브라우저에서 웹 애플리케이션과의 상호 작용을 유지하고 상태를 저장하는 데 사용되는 메커니즘입니다.
내장객체들의 스코프
JSP페이지에서 오류가 발생하면 예외 처리 페이지를 이용해 예외처리를 할 수 있다.
첫 화면에 해당하는 홈페이지를 다음과 같이 web.xml에 등록해 두면 브라우저에서는 컨텍스트 이름만으로 요청하여 간단하게 표현할 수 있다.
JSP등장배경 : 디자이너가 자바 코드를 사용하지 않고도 쉽게 화면을 구현할 수 있도록 하기 위함
JSP는 스크립트 릿의 자바 코드를 제거하고 디자이너 입장에서 더 쉽고 편리하게 작업할 수 있는 태그 형태로 기능을 제공하게 되었고 액션태그들로 자바코드를 대체하게 되었다.
(흐름보기)
JSP의 여러가지 액션 태그
인클루드 액션 태그는 12장의 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용한다.
타일즈 처럼 레이아웃을 컴포넌트로 나눠서 화면을 그대로 사용한다.
포워드 액션 태그를 사용하면 자바 코드 없이도 포워딩할 수 있습니다. 또한 포워딩 시 다른 서블릿이나 JSP로 값을 전달할 수도 있습니다.
<jsp:forward page="포워딩할 JSP페이지>
자바 빈은 웹 프로그램 , 즉 Java EE프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는데 사용한다.
자바의 vo,dto클래스와 같은 개념으로 보면 된다.
<jsp:userBean id="빈이름" class="패키지 이름을 포함한 자바 빈 클래스 [scope="접근범위"]/>
<jsp:userBean id="m" class="sec01.ex01.MemberBean" scope="page"/>
setProperty와 getProperty는 useBean의 속성 값을 설정하고 얻는 태그이다.
<jsp:setProperty name =" 자바 빈이름 " property ="속성이름" value="값" />
<jsp:getProperty name =" 자바 빈이름 " property ="속성이름"/>
화면에 대한 요구 사항이 복잡해지면서 자바 코드를 대체하는 액션 태그가 등장했습니다. 이어서 jsp는 자바코드를 대체하기보다 제거하는쪽으로 발전했습니다.
그리고 현재 JSP페이지는 스크립트 요소보다는 표현언어와 JSTL을 사용해서 구현합니다.
표현 언어
는 자바 코드가 들어가는 표현식을 좀더 편리하게 사용하기 위해 jsp 2.0부터 도입된 데이터 출력 기능입니다.
표현 언어의 형식입니다. 페이지 디렉티브 태그에서는 반드시 isELIgnored=false로 설정해야한다.
${표현식 or 값}
스크립트 요소에서 아세리판 스코프 가져오고 액션태그에서 포워딩, 빈 ,getter,setter 가져왔듯이 이러한 기능들을 내장객체로 가지고 있다. (책 p518참고)
위의 표현언어를 사용하더라도 조건식이나 반복문에서는 여전히 자바코드를 사용하고 잇다.
커스텀 태그
란 JSP 페이지에서 자주 사용하는 자바 코드를 대체하기 위해 만든 태그입니다.
커스텀 태그의 종류
JSTL
: JSP페이지에서 가장 많이 사용하는 기능을 태그로 제공하며 JSTL 라이브러리를 따로 설치해서 사용한다.
개발자가 만든 커스텀 태그
: 개발자가 필요에 의해 만든 태그로, 스트러츠나 스프링 프레임워크에서 미리 만들어 제공한다.
JSTL이란 커스텀 태그 중 가장 많이 사용되는 태그를 표준화하여 라이브러리로 제공하는 것을 말한다.
종류 : 코어, 국제화, XML, 데이터베이스, 함수
아직 JSP에서는 변수 선언, 조건식, 반복문 기능을 자바 코드를 이용해서 구현한다.
이때 코어 라이브러리를 사용하면 이런 자바 기능을 태그로 대체 할 수 있다.
톰캣에서는 JSTL라이브러리를 제공하지 않음으로 외부에서 가져와야한다.
Core태그 라이브러리 기능 p547
JSTL 포매팅 라이브러리를 사용하면 쉽게 원하는 형태로 숫자,날짜,문자열을 표시할 수 있다.
JSP는 대부분의 기능을 오픈소스로 제공한다. 대표적인 기능이 파일 업로드와 파일 다운로드 기능이다.