쌍용교육센터 - 45일

개발자가 되고 싶어요 ㅣ 2024. 4. 22. 18:59

2024.04.22

개발 환경

서버: 톰캣

톰캣의 디렉토리

  • bin : 톰캣을 실행하고 종료시키는 스크립트 파일 위치
  • conf : 설정 파일이 위치
  • lib : 톰캣을 실행하는데 필요한 라이브러리(jar) 파일이 위치
  • logs : 톰캣 로그 파일이 위치
  • temp : 톰캣이 실행되는 동안 임시 파일이 위치
  • webapps : 웹 어플리케이션이 위치
  • work : 톰캣이 실행되는 동안 사용되는 작업 파일이 위치

에디터: 이클립스

서버와 이클립스 설치 후에 웹어플리케이션 코드를 작성하기 위해 개발 환경을 구축한다. 개발 환경은 다이나믹 웹 프로젝트를 구축해 이클립스에서 서버를 제어하는 방식을 사용한다.

Servlet

서블릿의 개요

서블릿(Servlet) : 자바 기반의 웹 프로그래밍 기술로 자바 언어의 모든 기능을 사용 할 수 있으며 쓰레드 기반의 빠른 처리 속도를 자랑하나, 프로그램 내에서 화면 코딩을 제어해야 하는 문제로 인해 유지 보수에 많은 문제가 있다. 이러한 문제점을 개선한것이 JSP로 JSP는 내부적으로 서블릿 기술에 기반하고 있다.

HTTP 프로토콜과 HTTP 메서드

  • HTTP 프로토콜 HTTP은 비 연결(Connectionless : 클라이언트의 요청에 응답한 후 바로 연결을 끊음)과 비상태(Stateless : 서버의 상태가 어떤지 간에 상관없이 요청을 함)의 특징
  • HTTP 메소드(method)
    • Get : 쿼리문자열로 전송 요청라인의 URL뒤에 데이터를 연결하여 전송 256byte가 전송 한계
    • Post : 요청 몸체 데이터로 전송 전송하는 데이터 사이즈의 제한이 없음

Servlet의 패키지 및 주요 객체

패키지

  • javax.servlet : 패키지는 프로토콜에 독립적인 서블릿을 만들기 위한 클래스
  • javax.servlet.http : 패키지는 HTTP 프로토콜의 고유한 기능(GET, POST 등)을 제공

주요객체

  • HttpServletRequest : HTTP 요청에 대한 기능 제공
  • HttpServletResponse: HTTP 응답에 대한 기능을 제공
  • ServletConfig 객체 : 서블릿 당 ServletConfig 객체 하나 서블릿 배포시 설정된 정보를 서블릿으로 넘겨줌
  • ServletContext 객체 : 웹 어플리케이션 당 하나의 ServletContext 객체 하나 웹 어플리케이션의 파라미터 정보를 읽어보기 위하여 사용 서버 정보를 파악하기 위하여 사용(컨테이너의 이름 및 버전, 지원하는 API 정보)

 

서블릿 동작 원리

 

라이프 사이클

  • init()
    • 컨테이너 에서 서블릿 객체를 생성한 다음에 호출한다. service() 이전에 실행
    • 서블릿을 초기화
    • 초기화할 내용(DB 접속 등)이 있는 경우 재정의
  • service()
    • 클라이언트의 요청 후 컨테이너에서 쓰레드를 이용하여 호출
    • 요청의 HTTP 메소드(GET, POST등)를 참조하여 해당 메소드(doGet(), doPost() 등) 호출 판단
    • 거의 재정의 하지 않음
  • destroy()
    • 서블릿 종료시 호출
    @WebServlet("/lifeCycle")
    public class LifeCycle extends HttpServlet{
    
    	int initCnt = 0;
    	int serviceCnt = 0;
    	int destoryCnt = 0;
    	
    	@Override
    	public void init() throws ServletException {
    		System.out.println("init 메서드는 첫 요청만 호출됨 : " + (++initCnt));
    	}
    	
    	@Override
    	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
    		System.out.println("service 메서드가 요청할 때마다 호출됨 : " + (++serviceCnt));
    		
    		//문서 타입 및 캐릭터셋 지정
    		response.setContentType("text/html;charset=utf-8");
    		//HTML 출력을 위한 출력 스트림 생성
    		PrintWriter out = response.getWriter();
    		
    		out.println("<html>");
    		out.println("<head><title>Servlet Life Cycle</title></head>");
    		out.println("<body>");
    		out.println("서블릿 init() 메서드 호출 횟수 : " + initCnt + "<br>");
    		out.println("서블릿 service() 메서드 호출 횟수 : " + serviceCnt + "<br>");
    		out.println("</body>");
    		out.println("</html>");
    		
    	}
    	@Override
    	public void destroy() {
    		System.out.println("destory 메서드는 본 Servlet이 더 이상 사용되지 않을 때만 호출됨"+(++destoryCnt));
    	}
    }
    

 

JSP

디렉티브

디렉티브 구문 : <%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>

● page : JSP 페이지에 대한 정보를 지정, 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등 정보 지정

● taglib : 사용할 태그 라이브러리를 지정

● include : 다른 문서를 포함

 

page 디렉티브 주요 속성

language JSP 스크립트 코드에서 사용되는 프로그래밍 언어
contentType JSP가 생성할 문서의 타입을 지정
pageEncoding JSP 페이지 자체의 캐릭터 인코딩 지정
import JSP 페이지에서 사용할 자바 클래스를 지정
session JSP 페이지가 세션을 사용할 지의 여부를 지정
info JSP 페이지에 대한 설명을 입력한다.
errorPage 에러가 발생할 때 보여 줄 페이지를 지정
isErrorPage 에러 페이지인지의 여부를 지정
buffer 버퍼 사용 여부 및 크기 지정(기본값 : 8kb)
autoFlush 버퍼가 다 찼을 때 처리 방식 지정
true - 버퍼가 다 찼을 경우 버퍼를 플러시하고 계속해서 작업
false - 버퍼가 다 찼을 경우 예외를 발생시키고 작업 중지
isELIgnored 표현 언어(EL)지원 여부 지정. true - 미지원, false - 지원
trimDirectiveWhitespaces 출력결과에서 템플릿 텍스트의 공백 문자를 제거할지 여부 지정

 

JSP 구동 원리

스크립트

동적으로 출력 결과를 생성하기 위해 사용

 

스크립트 요소

● 선언부(Declaration) - 변수 선언, 메서드 선언 <%! %>

● 스크립트릿(Scriptlet) - 자바 코드를 실행- 변수 선언, 연산, 제어문 사용, 출력 등 <% %>

● 표현식(Expression) - 연산, 출력(변수의 값, 메서드의 결과값) <%= %>

 

기본객체

JSP가 제공하는 기본 객체

request 클라이언트의 요청 정보를 저장한다.
response 응답 정보를 저장한다.
pageContext JSP페이지에 대한 정보를 저장한다.
session HTTP 세션 정보를 저장한다.
application 웹 어플리케이션에 대한 정보를 저장한다.
out JSP 페이지가 생성하는 결과를 출력할 때 사용되는 출력 스트림이다.
config JSP 페이지에 대한 설정 정보를 저장한다.
page JSP 페이지를 구현한 자바 클래스 인스턴스이다.
exception 예외 객체. 에러 페이지에서만 사용된다.
  • request : 웹 브라우저가 웹 서버에 전송한 요청 관련 정보 제공
    • 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
    • 서버와 관련된 정보 읽기 기능
    • 클라이언트가 전송한 요청 파라미터 읽기 기능
    • 클라이언트가 전송한 요청 헤더 읽기 기능
    • 클라이언트가 전송한 쿠키 읽기 기능
    • 속성 처리 기능
  • response : 웹 브라우저에 전송하는 응답 정보 설정
  • out : JSP 페이지가 생성하는 모든 내용은 out 기본 객체를 통해서 전송
  • pageContext : 다른 기본 객체에 대한 접근 메서드 제공
  • application : 웹 어플리케이션에 대한 정보를 저장

 

배열의 내용 출력 - 선언부, 스크립트릿, 표현식

<h2>배열의 내용 출력 - 선언부, 스크립트릿, 표현식</h2>
<table border="1">
  <tr>
	<th>배열의 인덱스</th><th>배열의 내용</th>
  </tr>
<%
  for(int i=0; i<str.length; i++){
%>
  <tr>
    <td><%=i %></td><td><%=str[i] %></td>
  </tr>
<%
  }
%>
</table>

'IT 국비 교육' 카테고리의 다른 글

쌍용교육센터 - 47일  (0) 2024.04.24
쌍용교육센터 - 46일  (0) 2024.04.23
쌍용교육센터 - 44일  (0) 2024.04.19
쌍용교육센터 - 43일  (1) 2024.04.18
쌍용교육센터 - 42일  (0) 2024.04.17