JSP

BrokenFinger98·2024년 9월 25일
0

JSP

JSP(Jakarta Server Pages)

자카르타 서버 페이지(Jakarta Server Pages, JSP, 이전 명칭: 자바서버 페이지(JavaServer Page)는 HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹페이지를 생성하여 웹브라우저에 돌려주는 서버 사이드 스크립트 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다.
자카르타 서버 페이지는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다. 하지만, 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다. 1999년 썬 마이크로시스템즈에 의해 배포되었으며 이와 비슷한 구조로 PHP, ASP, ASP.NET 등이 있다.
아파치 스트럿츠나 자카르타 프로젝트의 JSTL 등의 JSP 태그 라이브러리를 사용하는 경우에는 자바 코딩없이 태그만으로 간략히 기술이 가능하므로 생산성을 높일 수 있다.

JSP 동작 흐름

JSP 스크립팅 요소(Scrpting Element)

선언문 (Declaration)

  • 멤버변수 선언이나 메소드를 선언 하는 영역.
  • 형식 <%! 멤버변수와 method작성 %>
<%!
String name;

public void init(){
	name = "아아아";
}
%>

스크립트릿 (Scriptlet)

  • Client 요청 시 매번 호출 영역으로, Servlet으로 변환 시 service() method에 해당되는 영역.
  • request, response에 관련된 코드 구현.
  • 형식 <% java code %>
<%
for(int dan=2;dan<10;dan++){
	out.println("<tr>");
	String classname = dan % 2 == 0 ? "color1" : "color2";
	for(int i = 1; i < 10; ++i){
		out.println("<td class=\"" + classname + "\">" + dan + 
			" * " + i + " = " + dan * i + "</td>");
	}
	out.println("</tr>");
}
%>

표현식 (Expression)

  • 데이터를 브라우저에 출력할 때 사용.
  • 형식 <%= 문자열 %>
안녕 <%= name %>!!!
  • 주의) <%= 문자열; %> : 문자열 뒤 세미콜론(;)은 작성X
  • <%= 문자열 %> == <% out.print(문자열); %> : 같은 표현

주석 (Comment)

  • 코드 상에서 부가 설명을 작성.
  • 형식 <%— 주석 할 code —%>
<!-- HTML 주석 -->
<%-- JSP 주석 --%>
<%
/*
JAVA 주석
*/
%>

Directive

JSP 지시어 (Directive)

  1. page Directive
    • 컨테이너에게 현재 JSP페이지를 어떻게 처리할 것인가에 대한 정보를 제공한다.
    • 형식 <%@ page attr1=”val1” attr2=”val2” … %>
  2. include Directive
    • 특정 jsp file을 페이지에 포함.
    • 여러 jsp페이지에서 반복적으로 사용되는 부분을 jsp file로 만든 후 부분 영역에 include 시켜 반복되는 코드를 줄일 수 있다.
    • 형식 <%@ include file=”/template/header.jsp” %>
  3. tag library Directive
    • JSTL 또는 사용자에 의해서 만든 커스텀 태그(custom tag)를 이용할 때 사용되며
    • JSP 페이지 내에 불필요한 자바 코드를 줄일 수 있다.
    • 형식 <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>

JSP 지시자 (Directive) - page

속성기본값설명
languagejava스크립트에서 사용 할 언어 지정
info현재 JSP 페이지에 대한 설명
contentTypetext/html;charset=ISO-8859-1브라우저로 내보내는 내용의 MIME 형식 지정 및 문자 집합 지정
pageEncodingISO-8859-1현재 JSP 페이지 문자집합 지정
import현재 JSP 페이지에서 사용할 Java 패키지나 클래스를 지정
sessiontrue세션의 사용 유무 설정
errorPage에러가 발생할 때에 대신 처리될 JSP 페이지 지정
isErrorPagefalse현재 JSP 페이지가 에러 핸들링 하는 페이지인지 지정하는 요소
buffer8KB버퍼의 크기
autoflushtrue버퍼의 내용을 자동으로 브라우저로 보낼 지에 대한 설정
isThreadsafetrue현재 JSP 페이지가 멀티 쓰레드로 동작해도 안전한지 여부를 설정하는 것으로 false인 경우 JSP 페이지는 SingleThread로 서비스 된다.
extendsjavax.servlet.jsp.HttpJspPage현재 JSP 페이지를 기본적인 클래스가 아닌 다른 클래스로부터 상속하도록 변경

기본 객체

기본 객체명Type설명
requestjakarta.servlet.http.HttpServletRequestHTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어올 때 사용
responsejakarta.servlet.http.HttpServletResponse사용자 요청에 대한 응답을 처리하기 위해 사용
pageContextjakarta.servlet.jsp.PageContext각종 기본 객체를 얻거나 forward 및 include 기능을 활용할 때 사용
sessionjakarta.servlet.http.HttpSession클라이언트에 대한 세션 정보를 처리하기 위해 사용 page directive의 session 속성을 false로 하면 내장 객체는 생성이 안된다.
applicationjakarta.servlet.ServletContext웹 서버의 애플리케이션 처리와 관련된 정보를 레퍼런스하기 위해 사용
outjakarta.servlet.jsp.JspWriter사용자에게 전달하기 위한 output 스트림을 처리할 때 사용
configjakarta.servlet.ServletConfig현재 JSP에 대한 설정 정볼르 포함하는 객체
pagejava.lang.Object현재 JSP 페이지에 대한 참조 변수에 해당됨
exceptionjava.lang.ExceptionError를 처리하는 JSP에서 isErrorPage속성을 true로 설정하면 exception 내장 객체를 사용할 수 있고 기본은 false로 설정되어 있다. 전달된 오류 정보를 담고 있는 내장 객체

기본 객체 Scope

기본 객체명설명
page하나의 JSP 페이지를 처리할 때 사용되는 영역. 한번의 클라이언트 요청에 대하여 하나의 JSP 페이지가 호출되며, 이때 단 한 개의 page객체만 대응이 된다. 페이지 영역에 저장한 값은 페이지를 벗어나면 사라진다. !!! 커스텀 태그에서 새로운 변수를 추가할 때 사용한다.
request하나의 HTTP 요청을 처리할 때 사용되는 영역. 웹 브라우저가 요청을 할 때마다 새로운 request 객체가 생성됨. request 영역에 저장한 속성은 그 요청에 대한 응답이 완료되면 사라진다.
session하나의 웹 브라우저와 관련된 영역. 같은 웹브라우저 내에서 요청되는 페이지들은 같은 session들을 공유하게 됨. !!! 로그인 정보 등을 저장한다.
application하나의 웹 어플리케이션과 관련된 영역. 웹 어플리케이션당 1개의 application 객체가 생성됨. 같은 웹 어플리케이션에서 요청되는 페이지들은 같은 application 객체를 공유함.

공통 method

  • servlet과 jsp페이지 간에 특정 정보를 주고 받거나 공유 하기 위한 메소드를 지원.
method설명
void setAttribute (String name, Object value)문자열 name 이름으로 Object형 데이터를 저장한다. Object형이므로 어떠한 Java 객체도 저장이 가능하다.
Object getAttribute (String name)문자열 name에 해당하는 속성 값이 있다면 Object 형태로 가져오고 없으면 null을 리턴 한다. 따라서 리턴 값에 대한 적절한 형 변환이 필요하다.
Enumeration getAttributeNames()현재 객체에 저장된 속성들의 이름들을 Enumeration 형태로 가져온다.
void removeAttribute (String name)문자열 name에 해당하는 속성을 삭제한다.

WEB Page 이동

forward(request, response)sendRedirect(location)
사용 방법RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.forward(request, response);response.sendRedirect(location);
이동 범위동일 서버 (project)내 경로동일 서버 포함 타 URL 가능
location bar기존 URL 유지 (실제 이동되는 주소 확인 불가)이동하는 page로 변경
객체기존의 request와 response가 그대로 전달기존의 request와 response는 소멸되고, 새로운 request와 response가 생성
속도비교적 빠름forward()에 비해 느림
데이터 유지request의 setAttribute(name, value)를 통해 전달request로는 data 저장 불가능 session이나 cookie를 이용
profile
나는야 개발자

0개의 댓글