내장 객체의 개념과 종류, 정보 공유 활용

Yeppi's 개발 일기·2022년 5월 26일
0

Servlet&JSP

목록 보기
11/13
post-thumbnail
post-custom-banner

1. 내장 객체

1) 내장 객체 란?

JSP 가 변환된 서블릿에서 자동으로 선언 및 초기화되는 객체

  • JSP 파일의 스크립트릿과 익스프레션에서
    객체를 생성하지 않고도 사용하는 객체
  • JSP 에서 내장 객체를 통해 더 간결한 작성 가능
  • JSP 가 서블릿으로 자동으로 변환할 때
    JSP 에 작성한 모든 코드가 _jsp 에 들어감

  • 아래 ** 표시된 코드 모두 내장 객체

public void _jspService(final HttpServletRequest **request**, 
	final HttpServletResponse **response**) throws IOException, ServletException {

		PageContext **pageContext**;
		HttpSession **session** = null;
		ServletContext **application**;
		ServletConfig **config**;
		JspWriter **out** = null;

		try {
			**response**.setContentType("text/html; charset=UTF-8");
			**pageContext** = _jspxFactory.getPageContext(
				this, **request**, **response**, null, true, 8192, true);
			**application** = pageContext.getServletContext();
			**config** = pageContext.getServletConfig();
			**session** = pageContext.getSession();
			**out** = pageContext.getOut();

		} catch (java.lang.Throwable t) {
			throw new ServletException(t);
		}
	}
}

👉 해당 메서드를 실제로 호출하는 것은? 서블릿 컨테이너

👉 JSP파일은 _jspService() 안의 모든 코드를 자유롭게 사용 가능



2) 내장 객체 종류

내장객체데이터 타입
requestjavax.servlet.http.HttpServletRequest
responsejavax.servlet.http.HttpServletResponse
sessionjavax.servlet.http.HttpSession
applicationjavax.servlet.ServletContext
configjavax.servlet.ServletConfig
outjavax.servlet.jsp.JspWriter
pageContextjavax.servlet.jsp.PageContext


3) 📌예시📌

  • _jspService 의 복잡한 코드대신 index.jsp 에서 간단하게 사용
<%
// Scriptlet : 정상적인 자바 코드가 작성되는 영역
	// 1. DB 연동 처리
	BoardVO vo = new BoardVO();
	BoardDAO dao = new BoardDAO();
	List<BoardVO> boardList = dao.getBoardList(vo);
	
	// 2. 응답 화면 구성
	// HttpServletRequest
	request.setAttribute("name", "홍길동");
	// HttpSession
	session.setAttribute("name", "yeppi");
	//ServletContext
	application.setAttribute("name", "김말이");
%>


2. 정보 공유 객체

서블릿과 유사하게,
내장 객체 중에서 정보 공유와 관련된 객체가 존재한다

1) forwarding

  • 포워딩이 되었을 때만 a.jspb.jsp 파일은 request 를 공유함
  • a.jsp 가 브라우저에 응답하면?
    a.jsprequest 사라져서 해당 정보가 없어짐

👉 정보 공유 불가



2) session

  • 위처럼 request 정보가 사라지는 것이 아닌, 세션으로 정보를 저장하려면?
    리디렉트를 사용

👉 브라우저 살아있는 동안 정보 공유 가능



3) application

  • 위처럼 브라우저가 종료되면 정보가 날아가는 것이 아닌, 브라우저와 무관하게 사용하고 싶다면?
    apllication 사용

  • 사실 별로 사용하지 않음

👉 브라우저가 살아있든 말든, 서버만 살아있으면 정보 공유 가능

👉 request < session < application


자세한 차이점은 Servlet&JSP 시리즈의 8번 화면 이동 방식을 참고해주세요

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋
post-custom-banner

0개의 댓글