본문 바로가기

Upgrade.배우고익히기

서블릿Servlet 이해

1. 서블릿Servlet

: 자바를 사용하여 동적인 페이지를 제공하는 웹을 만들기 위한 자바 프로그램

: 클라이언트의 요청(request)를 받아 그 결과(response)를 다시 전송해주도록 함

 

2. 서블릿 컨테이너

: 서블릿들을 관리해주는 툴로 대표적으로 "톰캣"이 있음

: 클라이언트의 요청시, 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체 생성함

: 서블릿 생명주기(Life Cycle) 관리 [ init() 초기화 - service() 호출마다 - destory() 삭제 ]

 

 

3. (주사용)서블릿 메소드

init() :  최초로 서블릿 요청이 들어올 때 가장 먼저 실행 - 초기화 / 1번만 실행됨

service() : 클라이언트로부터 요청이 있을 때마다 실행 - 실제 서블릿이 처리해야하는 작업 / 여러번 실행됨

           : 하위 요소로 doGet() / doPost() 존재 --> 둘 대신 service()만 작성했다면 doGet()으로서 service()실행됨

           : 클라이언트가 method="get / post" 중 하나로 넘겨줬을 경우 각 메소드 실행됨

-doGet() : 클라이언트가 method="get"으로 정보를 넘겨줬을 경우, 이 메소드에 실행하고자 하는 코드 작성

-doPost() : 클라이언트가 mthod="post"으로 정보를 넘겨줬을 경우, 이 메소드에 실행하고자 하는 코드 작성

doGet() doPost()
사용자가 보낸 정보를 URL에 포함시킴 -> 보안취약 사용자가 보낸 정보를 URL에 보여주지 않음-> 비교적보안좋음
보내는 정보에 길이제한 있음 보내는 정보에 길이 제한이 없음
method 속성을 기입하지 않으면 기본값으로 get방식 요청 인코딩 필요

destory() : 서브릿 객체가 메모리에서 삭제될 때 - 제거 / 1번만 실행됨

 

 

4. Request : HTML 요청을 통해 전달되는 값을 가져올 때 사용

[메서드]

-getParameter("name") :: 문자열 name과 같은 이름을 가진 인자값을 가져옴 --> String

-getParameterValues("name") :: 문자열 name과 같은 이름을 가진 인자값들을 배열형태로 가져온 --> List

-getMethod() :: 현재 요청이 Get, Post인지 알려줌

-getSession() :: 현제 세션 객체를 가져옴

-setAttribute(name, attr) :: name 키값으로 attr 밸류값을 Request의 attr에 저장

-getAttribute(name) :: Request를 통해 전달된 키값-밸류값의 정보를 가져옴

 

5. Response : 사용자 요청에 대한 응답처리할 때 사용

[메서드]

-sendRedirect(url) :: 클라이언트 요청을 다른 페이지에 전송

 

6. RequestDispatcher : 현재 request에 담긴 정보를 저장하고 있다가 그 다음 페이지에도 해당 정보를 볼수 있게 계속 전달하는 기능

[메서드]

-forward(request, response) : 지정한 url의 페이지의 뷰를 보여주며 request, response 객체를 전달(공유)

 

 

## 중요 비교 (현재 페이지를 다른 페이지로 전환 시) ##

jsp forward 액션 : 자신에게 전달된 정보까지 해당페이지로 전송 / 웹 애플리케이션이 반드시 포함된 파일이어야 함

Response.sendRedirect : 현재 페이지의 요청을 단순히 다른 URL로 전환하는 역할만 함 / 전달된 정보는 전달하지 않음

request.getRequestDispatcher(url).forwrad(request, response) response.sendRedirect(url);
지정한 url의 뷰는 보여지지만, 경로는 url에 보여지지 않음 지정한 url의 뷰와 경로에 url 모두 보임
전달된 request, response 객체가 공유 페이지 이동을 통해 새로운 request, response 객체 생성

 

7. Session : 웹사이트의 여러 페이지에 걸쳐 사용되는 정보를 저장하는 방법

[메서드]

-setAttribute(name, attr) :: name 키값으로 attr 밸류값을 Session의 attr에 저장

-getAttribute(name) :: Session에 키값-밸류값으로 저장된 정보를 가져옴

 

 

(서블릿 참고: https://junsday.tistory.com/12 / https://mangkyu.tistory.com/14 / http://www.silverwolf.co.kr/java/9906 )

(Request/Response 참고 : http://blog.naver.com/PostView.nhn?blogId=realcmc&logNo=130036897208 / https://selectwiggle.tistory.com/25 / https://jethihmm.tistory.com/entry/자바-JSP-메소드-설명좀-부탁드립니다 /  )