gi_dor

JSP 개념 본문

Back_End/JSP_Servlet

JSP 개념

기돌 2024. 1. 7. 20:03

 

JSP

  • Java Server Page
  • 사용자의 요청이나 조건에 따라 변하는 컨텐츠인  동적 웹 컨텐츠의 응답으로 제공하는 웹 애플리케이션 개발에 
    쓰이는 자바의 웹 기술이다
    • HTML , XML , JSON
  • HTML태그로 구성된 문서 내에 자바 코드 사용이 가능한 파일
    • Java 코드 덕분에 DB작업이나 , 동적으로 태그 생성하는 것도 가능하다
  • JSP를 이용해 개발된 웹 애플리케이션을 실행하기 위해서는 웹 애플리케이션 서버가 필요하다
    • Tomcat , Jetty , Jboss , Weblogic , JEUS

 

JSP 구성요소

Page 디렉티브

  • contentType : 응답 컨텐츠의 타입 및 인코딩 방식 설정
    <% page contentType="text/html; charset=utf-8" %>
    <% page contentType="text/xml; charset=utf-8" %>
    <% page contentType="application/json; charset=utf-8" %>
    <% page contentType="text/plain; charset=utf-8" %>​
  • page Encoding : jsp 파일을 저장할 때 사용하는 인코딩 방식 설정
  <%@ page pageEncoding="utf-8" %>

 

  • import : jsp 파일에 사용되는 클래스에 대한 import문
<%@ page import="java.util.List"%>

 

  • include : JSP 페이지에 다른 JSP 페이지를 포함시킨다
<%@ include file="현재페이지에 포함시킬 jsp파일의 경로와 이름" />
 <%@ include file="include/navbar.jsp" %>

 

  • Scriptlet : 웹 애플리케이션에서 동적인 컨텐츠 생성하는 데 사용
    서블릿 보다 간결하고 작성하는 방법이 쉽다.

    📌 예시

    Servlet 을 사용한 코드
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 응답의 Content Type을 HTML로 설정
        response.setContentType("text/html");

        // 출력 스트림을 얻어옴
        PrintWriter out = response.getWriter();

        // HTML 내용 출력
        out.println("<html>");
        out.println("<head><title>Hello, Servlet!</title></head>");
        out.println("<body>");
        out.println("<h1>Hello, Servlet!</h1>");
        out.println("</body></html>");

        // 출력 스트림을 닫음
        out.close();
    }
}


스트립틀릿 사용한 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Hello, Scriptlet!</title>
</head>
<body>
    <h1>Hello, Scriptlet!</h1>
    <% out.println("<p>This is a simple example of Scriptlet.</p>"); %>
</body>
</html>

 

  • 표현식 : 변수의 값 , 메서드 실행 결과를 출력에 포함시킬 때 사용한다
<%= 변수명 , 혹은 반환 값이있는 메서드%>

 

<%
    int bookNo = Integer.parseInt(request.getParameter("no"));
    BookService bookService = BookService.getInstance();
    Book book = bookService.getBookInfo(bookNo);
  %>
  <dl>
    <dt>제목</dt><dd><%=book.getTitle() %></dd>
    <dt>저자</dt><dd><%=book.getWrite() %></dd>
    <dt>쟝르</dt><dd><%=book.getGenre() %></dd>
    <dt>가격</dt><dd><%=book.getPrice() %></dd>
    <dt>재고량</dt><dd><%=book.getStock() %></dd>
    <dt>상태</dt><dd><%=book.getStatus() %></dd>
  </dl>

 


JSP 내장객체

  • JSP 페이지가 Java로 변환될 때 _jspService() 메서드에서 사용가능한 객체
  • JSP는 웹 애플리케이션 개발이 필요한 객체를 미리 생성한 뒤에 변수에 저장, 스트립틀릿에서 사용 가능한
    상태로 초기화
_jspService(request,response) {
PageContext pageContext =...;
ServletContext application = pageContext.getServletContext()
ServletConfig config = pageContext.getServletConfig()
JspWriter out = pageContext.getWriter();
HttpSession session = pageContext.getSession()';
Object page = this;
}

 

 

 

변수명 클래스명 설명
request HttpServletRequest 클라이언트가 보낸 요청메세지 정보를 저장
response HttpServletResponse 클라이언트로 보낼 응답메세지 정보를 저장
session HttpSession 세션정보를 저장(로그인처리와 관련)
application ServletContext 웹 애플리케이션을 나타내는 객체
out JspWriter 응답컨텐츠를 클라이언트로 출력하는 스트림
config ServletConfig 서블릿의 초기화에 필요한 정보를 저장
pageContext PageContext JSP 페이지에 대한 정보를 저장
exception Throwable 에러정보를 저장(isErrorPage="true")에서만 사용가능
page Object JSP 페에지를 구현한 자바객체가 저장

 


ServletContext

  • 웹 애플리케이션 하나당 하나 생성되는 객체
  • 웹서버가 가동될 때 상성
  • 웹 서버가 종료될 때 폐기
  • 웹 애플리케이션과 관련된 설정 정보를 포함한다

 

HttpServletRequest , HttpServletResponse

  • Http 요청당 하나 생성되는 객체
  • 요청을 처리하고 응답이 완료되면 폐기
  • 요청메세지 , 응답 메세지를 담당

 

HttpServletRequest

  • ServletRequest 인터페이스를 상속받은 인터페이스 , HTTP 요청 메세지 처리에 특화된 기능이 추가로 정의
  • request 변수에 저장
  • 클라이언트 서버로 보낸 요청 메세지를 저장한다
  • 요청 메세지 정보를 획득할 수 있는 다양한 getXXX() 메서드 제공
반환타입 메서드 설명
String getParameter(String name) 지정된 이름의 요청파라미터 값을 반환
요청파라미터값이 없으면 null
void setAttribute(String name, Object value) 요청객체에 이름, 객체의 속성을 저장
Object getAttribute(String name) 요청객체에서 지정된 이름으로 저장된 속성 반환
지정된 이름의 속성이 존재하지 않으면 null
void removeAttribute(String name) 요청객체에서 지정된 이름으로 저장된 속성을 삭제
HttpSession getSession( ) • 요청객체의 세션아이디에 해당하는 세션객체를 반환
• 세션아이디가 없으면 세션객체를 새로 생성 후 반환
•  세션아이디에 해당하는 세션객체가 없으면 새로 생성 후 반환 

 

HttpServletResponse

  • ServletResponse 인터페이스를 상속받은 인터페이스 , HTTP 응답 메세지 처리에 특화된 기능 추가로 정의
  • response 변수에 저장
  • 서버가 클라이언트로 보낼 응답 메세지
  • 응답 메세지에 대한 정보를 얻을수 있는 setXXX() 메서드 제공
반환타입 메서드명 설명
void senedRedirect(String url) 지정된 url을 재요청하게 하는 응답을 보냄
void setContentType(String type) 응탑 컨텐츠의 타입 설정
void setStstus(int statuscode) HTTP 응답 코드 설정
void setHeader(String name , String value) 응답 헤더 값을 설정

 

HttpSession

  • 클라이언트 당 하나 생성되는 객체
  • 클라이언트 마다 고유한 자신의 세션 객체가 있다 ( 인증된 로그인정보 저장 )
  • 로그아웃을 실행하거나 , 일정 시간 이상 웹사이트 이용이 없다면 폐기 ( 기본 30분 )
  • 클라이언트가 처음 접속 할 시 자동 생성 및 생성된 HttpSession 객체의 아이디가 응답으로 클라이언트에게 보내짐
  • 세션 아이디를 전달받은 클라이언트는 요청할 때마다 세션 아이디를 요청 헤더에 담아서 서버로 전송
  • 인증이 완료된 사용자 정보를 속성으로 저장
  • 서버는 요청헤더의 세션 아이디를 조회해서 그 아이디에 해당하는 세션객체를 실행되는 JSP session 변수에 저장

 

HttpSession 용도

  • 클라이언트의 정보를 보관 
    클라이언트 별로 각각 다른 세션 객체를 사용하기 때문
    개인화된 정보를 속성으로 저장 ( 장바구니 , 마이페이지 , 최근본 상품 )
  • 클라이언트의 상태 유지
    접속한 클라이언트를 식별해 해당 클라이언트에게 적절한 응답 제공
반환타입 메서드 설명
void setAttribute(String name , Object value) 세션객체에 이름, 속성 저장
Object getAttribute(String name)  세션객체에서 지정된 이름으로 저장된 속성 반환
저장된 이름이 없다면 null
void removeAttribute(String name ) 세션객체에서 지정된 이름으로 저장된 속성 삭제
void  invalidate() 세션 객체를 무효화
로그아웃 요청시 실행

728x90