JSP

1c2·2024년 3월 23일
0

back-end

목록 보기
2/3
  • JSP

HTML내에 카드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어.
JAVA EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다.

자카르타 서버 페이지는 실행시에는 자바 서블릿으로 변화된 후 실행되므로 서블릿과 거의 유사하다고 할 수 있다. 하지만 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.

  • JSP 동작 흐름

  • JSP 스크립팅 요소 - 선언문
  1. 선언문
    멤버변수 선언이나 메소드를 선언하는 영역.

형식 )

<%!
String name;

public void init(){
	name = "1c2"
}
%>
  1. 스크립트릿 (Scriptlet)
    Client 요청 시 매번 호출영역으로, Servlet으로 변환 시 service() method에 해당하는 영역. request, response에 관련된 코드 구현.

형식)

<%
for(int dan = 2;dan<10;dan++){
	out.print("<tr>");
    String classname - dan % 2 == 0 ? "color1" : "color2"l
    for(int i = 0; i < 10;i++){
    	out.println("<td class=\"" + classname + "\">" + dan + " * " + i + " = " + dan * i + "</td>");
    }
    out.println("</tr>");
}
%>
  1. 표현식
    데이터를 브자우저에 출력할 때 사용

형식)

안녕 <%= name %> !!!

주의) 뒤에 세미콜론(;) 작성X

  1. 주석

형식)

<!-- HTML 주석-->
<%-- JSP 주석 --%>
<%
/*
JAVA 주석
*/
%>
  • JSP 지시어

  • JSP 기본객체의 영역

JSP 기본 객체

  • request

    • Type: HttpServletRequest
    • 설명: 클라이언트로부터 온 요청에 대한 정보를 담고 있으며, 파라미터, 헤더 정보 등을 접근할 수 있게 해줌
  • response

    • Type: HttpServletResponse
    • 설명: 클라이언트에게 보낼 응답에 대한 정보를 담고 있으며, 컨텐츠 타입 설정, 응답 헤더 추가 등의 기능을 제공
  • out

    • Type: JspWriter
    • 설명: 클라이언트에게 내용을 출력하기 위한 스트림을 제공
  • session

    • Type: HttpSession
    • 설명: 사용자의 세션 정보를 관리하며, 사용자별로 유지되는 정보를 저장하고 접근할 수 있게 해줌
  • application

    • Type: ServletContext
    • 설명: 웹 애플리케이션의 전역적인 정보를 공유하는데 사용되며, 모든 사용자와 공유되는 정보를 저장하고 접근할 수 있게 해줌
  • config

    • Type: ServletConfig
    • 설명: JSP 페이지에 대한 초기화 파라미터와 같은 구성 정보에 접근할 수 있게 해줌
  • page

    • Type: Object
    • 설명: 현재 JSP 페이지의 인스턴스를 나타냅니다. 일반적으로 사용될 필요는 거의 없음
  • pageContext

    • Type: PageContext
    • 설명: 페이지의 컨텍스트 정보에 접근할 수 있으며, 스코프 객체들에 대한 참조를 얻거나, 예외 정보에 접근하는 등의 기능을 제공
  • exception

    • Type: Throwable
    • 설명: 페이지 실행 중 발생한 예외에 대한 정보를 담고 있습니다. 오직 JSP 에러 페이지에서만 사용할 수 있음

JSP 영역 객체의 공통 메서드

  • setAttribute(String name, Object value)

    • 설명: 주어진 이름으로 객체를 저장합니다. 같은 이름으로 이미 객체가 저장되어 있다면, 새로운 객체로 대체됨
    • 예시: session.setAttribute("user", userObject);
  • getAttribute(String name)

    • 설명: 주어진 이름의 객체를 반환합니다. 해당 이름의 객체가 없다면 null을 반환
    • 예시: Object user = session.getAttribute("user");
  • getAttributeNames()

    • 설명: 영역 내에 저장된 모든 객체의 이름을 Enumeration 객체로 반환
    • 예시: Enumeration names = session.getAttributeNames();
  • removeAttribute(String name)

    • 설명: 주어진 이름의 객체를 영역에서 제거합니다. 해당 이름의 객체가 없다면 아무런 효과가 없음
    • 예시: session.removeAttribute("user");
  • invalidate() (주로 session 영역에서 사용)

    • 설명: 세션을 무효화하고, 세션에 저장된 모든 객체를 제거
    • 예시: session.invalidate();
  • WEB page 이동
특징forwardsendRedirect
URL 변화변화 없음변화 있음
브라우저 요청 횟수1회2회
데이터 공유요청 데이터 공유 가능요청 데이터 공유 불가
처리 방식서버 내부에서 처리클라이언트를 통한 새 요청
사용 시나리오같은 애플리케이션 내 페이지 이동다른 애플리케이션 또는 외부 URL로 이동
메서드 호출RequestDispatcher.forward(request, response);response.sendRedirect("url");
성능비교적 빠름비교적 느림 (네트워크 지연 포함)
주소 표시줄 변화원래 요청 URL 유지새로운 URL로 변경
데이터 유지request의 setAttribute(name, value)를 통해 전달request로는 data저장 불가능. session이나 cookie를 이용.

0개의 댓글