JSP 와 Servlet, 왜
같이
쓸까?
웹
기술을
공부하지
않았던
나에게
항상 JSP, PHP, ASP 이런
것들은
탐험
가능하지만
재미없을
것
같은
그런
곳
ㅠ
그러다
올해 8월부터
갑자기 1년
반동안
하지
않던
코딩을
다시
시작하고
웹
기술을
공부하면서, Java를
다시
손에
쥐니
눈앞에
있는게 JSP
다들
아시겠지만 JSP 를
공부하다
보면
항상
처음에
마주치는
관문이
있습니다. Servlet 은
무엇인가, JSP랑
뭐가
다르지? 어? 인터넷
뒤져보면
같이
쓴다는데, Servlet 만으로도
페이지를
만들고, JSP 만으로도
되네. 응? 근데Model 1은
뭐고 Model 2 는
무엇이지? MVC? Spring이
좋다던데
이건
또
뭐냐.
이렇게
제대로
공부하지도
못하고
끝
없이
이어져
나오는
프레임워크의
늪에
빠져
방황하다가
다시
정신차리고
보니
눈앞엔 JSP가
있었습니다...
Back to the basics
그래서 다시 기본부터 시작하기로 했습니다. JSP는 무엇이고, Servlet 은 무엇인가?
Servlet
servlet은
톰캣
위에서
동작하는 java 프로그램입니다. 더
정확히
말하자면 servlet 이
초기화
되는
과정을
보면
됩니다. 여기 에
의하면, 서블릿
초기화는
다음과
같은
과정을
거칩니다.
톰캣과
같은 WAS 가 java 파일을
컴파일해서 Class로
만들고
메모리에
올려 Servlet 객체를
만들게
되고
이Servlet 객체는 doPost, doGet을
통해
요청에
응답합니다. 초기화
과정을
더
자세히
보면
init, Service, destory 이런
콜백이
각
시점에
불리는걸
볼
수
있지요. init은
서블릿이
메모리에
로드
될때
실행됩니다. destory는
마찬가지로
언로드되기
전에
수행되는
콜백이구요. service 메소드는 HTTP Method 타입에
따라doGet 혹은 doPost를
호출합니다.
기억해야
할
점은, 초기화된
서블릿이
클라이언트의
요청이
있을
때
마다 Thread를
생성해서
병렬적으로 service를
수행한다는
것. 서블릿
객체는 여러개
생성되지
않습니다. 생명주기
까지
길게
왔는데, 요약하면
WAS 를 통해 컴파일 된 후 메모리에 적재되어 클라이언트의 HTTP Get, Post 등의요청을 처리하는 자바 프로그램임.
Servlet 샘플
코드를
보시면
알겠지만, HTML 을
넣기
굉장히
불편합니다.
그래서 JSP가
나왔답니다. HTML을
코딩하기
너무
불편해서, HTML 내부에 Java 코드를
삽입하는
형식의 JSP!! 샘플
코드를
보시겠습니다. 여기서
펌
<%@page import="java.util.Calendar" %>
<%@ page contentType="text/html; charset=UTF-8"%>
String str=String.format("%tF",Calendar.getInstance());
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
여기 에
의하면, 사용자로부터
요청을 JSP가
받아(더
정확히는 JSP 에서
사용자가
요청을
합니다.) Java Bean(DTO, DAO)을
호출해
처리합니다. 이런
방식을 Model1 이라고
한답니다.
- 개발
속도가
빠르고
- 배우기
쉽지만
- 프레젠테이션
로직과
비즈니스
로직이
혼재
- JSP 코드가
복잡해져
유지
보수가
어려워집니다.
Ref :)
- http://atlas49.tistory.com/128
- http://www.javajigi.net/pages/viewpage.action?pageId=73
'IT노트 > JSP/Servlet' 카테고리의 다른 글
request setAttribute getAttribute NULL (0) | 2015.04.12 |
---|---|
이미지를 스트림으로 만들어서 jsp에서 미리보기(다운로드와 거의 동일) (0) | 2015.03.14 |
request - url / jsp 주소값 (0) | 2015.03.04 |
리다이렉트(redirect) vs 포워드(foword) (0) | 2015.02.02 |
<Servlet 이란 무엇이며 이클립스에서 간단 작성해보자> (0) | 2015.02.02 |