유데미 X 웅진 STARTERS 취업 부트캠프 백엔드 3기 - 7주차 학습 일지_Java-Server-Page_kick-off

zwundzwzig·2023년 1월 6일
1
post-thumbnail

서블릿은 요청에 대한 간단한 응답에도 코드량이 많아진다는 단점이 있다. 또한 점차 브라우저 화면에 대한 중요도가 높아져 서블릿에 화면 로직과 비즈니스 로직이 함께 있는 게 유지관리를 어렵게 했다.
결국 비즈니스 로직과 화면 기능을 분리해, 보다 수월한 재사용성과 유지 보수를 위해 JSP가 대두됐다.

Java Server Page

자바 코드를 기반으로 HTML5로 화면을 구현하던 서블릿과 달리, JSP는 HTML5를 기반으로 JSP 요소를 사용한다.

JSP 파일을 만들면 기본적으로 아래와 같은 형태의 코드가 작성된다.

<%@ 
    page language="java" 
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
%> // JSP 태그 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body></body>
</html>

출처

실행 과정

기본적인 실행 과정은 다음과 같다.

출처
  1. 클라이언트에서 JSP 파일을 WAS 내 서버에 요청한다.
  2. 요청받은 서버는 해당 요청을 서블릿 컨테이너에 전달한다.
  3. 컨테이너는 JSP 파일을 서블릿으로 활용 가능한 java 파일로 변환하고,
  4. 해당 java 파일을 class 파일로 컴파일한다.
  5. 해당 class 파일을 실행하고 결과를 전달~~~ 해서 클라이언트가 응답 받는다.

Context


Context

  • 어떤 행위(Task. Method..)를 위한 정보의 통칭이고, 웹프로그래밍을 위한 물리적인 디렉토리 구조
  • 어떤 행위가 일어나기 위해서 필수적인 필수 Context, 그 행위를 더욱 효과적으로 하게 해주는 선택적 Context가 있다.
  • src : HTML / JSP / image / css / js 등등 위치
  • web.xml : deployment descriptor, Project의 모든 환경 설정 갖고 있고, server 가동될때 처음으로 읽힘
  • WEB-INF : 보안영역이며 servlet을 통해서만 접근 가능
  • Lib : 프로젝트에서 사용하는 라이브리러 폴더
  • Classes : WAS 로직을 담당하는 java파일, 컴파일된 class파일들이며 java 디렉토리에 위치

**외부에서는 context root를 찾을 수 있지만 WEB-INF에 작성을 한다면 파일을 외부에서 찾을 수 없기 때문에, 라이브러리 폴더와 web.xml 파일이 위치한다.

JSP Built-In Object

JSP가 서블릿으로 변환될 때 컨테이너가 자동으로 _jspService() 메서드에 지역 변수로 생성시키는 서블릿 멤버 변수가 JSP 내장 객체이다.

내장 객체타입특징스코프
requestjavax.servlet.http.HttpServletRequest클라이언트 요청 정보http요청을 WAS 응답까지 유지
responsejavax.servlet.http.HttpServletResponse서버의 응답 정보
sessionjavax.servlet.http.HttpSession세션 정보동일 브라우저
outjavax.servlet.jsp.JspWriterJSP 페이지에서 결과 출력
applicationjavax.servlet.ServletContext컨텍스트 정보동일 어플리케이션
pageContextjavax.servlet.jsp.PageContextJSP 페이지 정보해당 JSP 페이지
configjavax.servlet.ServletConfigJSP 페이지 설정 정보
pagejava.lang.ObjectJSP 페이지의 서블릿 인스턴스현재 페이지 JSP 태그 전달값
exceptionjava.lang.Exception예외 처리

JSP script element

JSP는 HTML과 달리 컨테이너에서 자바로 변환 과정을 거치기 때문에 JSP에서 제공하는 스크립트 요소를 이용해 동적으로 화면을 구성할 수 있다.

JSP 스크립트는 <% %> 로 표현할 수 있다.

scriptlet - <% 자바 코드 %> 로 작성된다.
declaration tag - <%! 자바 코드 %> 로 작성되며 변수나 메서드 선언 시 사용된다.
expression tag - <%= 자바 코드 %> 로 작성되며 변수 값을 출력할 때 사용된다.

예외 처리

JSP 첫 줄에 쓰이는 디렉티브 태그 속성 중 isErrorPage 속성을 true로 바꾸고 메인 JSP 파일에서 errorPage 값에 예외처리 페이지 링크를 달아 예외를 처리할 수 있다.

<!-- add.jsp -->
<%@ page 
	language="java"
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    errorPage="exceptionHandler.jsp"
%>
<%
	int num = Integer.parseInt(request.getParameter("num");
    int sum = 0;
    for (int i = 0; i <= num; i++) { sum = sum + 1; }
%>

<!DOCTYPE html>
<html>
  <head><title>SUM</title></head>
  <body><h1>1부터 <%= num %>까지의 합은 <%= sum %> 입니다.</h1></body>
</html>
<!--------------------------------------------------------------------->
<!-- exceptionHandler.jsp -->
<%@ page 
	language="java"
    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isErrorPage="true"
%>
<!DOCTYPE html>
<html>
  <head><title>Exception page</title></head>
  <body><h1><%= exception %></h1></body> 
  <!-- exception 내장 객체를 활용해 예외 처리 페이지를 만들 수 있다. -->
</html>

메인 페이지 등록 및 DB와 연결

"DWP 이름"/src/main/webapp/WEB-INF/web.xml에서 내 프로젝트의 인덱스 파일을 설정할 수 있다. 이는 NodeJS package.json의 main 프로퍼티를 설정한 것과 비슷하다.

해당 파일 안에 <welcome-file-list> 태그 안 <welcome-file> 태그에 경로를 설정하면, 해당 경로가 내 디렉토리 메인 페이지가 된다.

그리고, DB에 접근하는 로직을 갖는 JSP 파일 디렉티브 태그의 import 속성 값에 DAO, DTO 등의 영구적 계층 경로를 입력하면 DB를 활용한 서비스를 제공할 수 있다.


본 후기는 유데미 X 웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기

🧷 참고 교재

  • [길벗]자바 웹을 다루는 기술 - 이병승
profile
개발이란?

0개의 댓글