728x90
Servlet
JSP의 문제점
- JSP 페이지에 HTML, JAVA 코드가 혼합되어있어 이해가 어려움
- 디자이너와 프로그래머의 역할로 작업을 나누어 협업하기 어려움
- 뷰 단과 비지니스 로직이 하나의 파일에 포함되어 있음
- JSP페이지 내에 작성된 비지니스 로직이 모듈화되어있지 않기 때문에 재사용하기 어려움
- 데이터베이스 연결, 로깅, 사용자 정보 관리 등 많은 비지니스 로직에서 중복되는 부분이 존재함
해결방안 Servlet
- JSP가 나오기 전에 SUN사에서 동적인 웹 페이지 콘텐츠를 생성하는 기술로 제공
- JSP는 뷰를 생성할 때 사용하고 Servlet은 서버 측 프로그램에서 사용함
- 주로 Servlet은 DB접근, 비지니스 로직 구현, 데이터 작업에 사용
- Servlet은 수정된 경우 자바 코드를 다시 컴파일한 후 동적인 페이지를 처리하기 때문에 전체 코드를 다시 컴파일 후 재배포 해야 한다.
- 브라우저에서 호출이 되면 WAS(Tomcat)에서 웹 페이지를 동적으로 생성하여 결과를 전송해주는 서버 측 프로그램
Servlet 주요 클래스
HttpServlet
- 서블릿으로 만들기 위해 반드시 상속해야 하는 필수 클래스
- 존재 목적 자체가 서블릿을 만들기 위해 제공되는 클래스
- 주요 메소드
- void init() : 서블릿 객체 생성시 호출되는 메소드
- void destory() : 서블릿 객체가 메모리에서 사라질 때 호출되는 메소드
- void service(request, response) : 서블릿 요청이 있을 때 호출되는 메소드
- void doGet(request, response) : html에서 일 때 호출되는 메소드
- void doPost(request, response) : html에서 일 때 호출되는 메소드
HttpServletRequest (JSP 내장 객체 response)
- 클라이언트가 데이터를 입력하거나 또는 클라이언트의 정보에 대한 요청 값을 가지고 있는 클래스
- 주요 메소드
메소드반환값설명
getWriter() | PrintWriter | 서비스를 요청한 클라이언트와 서버간에 연결된 PrintWriter 객체 생성 후 반환 |
setBufferSize(int size) | void | 출력 스트림 버퍼 크기 설정 |
setContentLength(int len) | void | 응답정보 인코딩에 사용할 문자 설정 (MIME charset) getWriter() 후에 사용하면 영향이 없음 |
setCharacterEncoding(String charset) | void | 응답정보 인코딩에 사용할 문자 설정 |
setContentType(String type) | void | 응답정보의 데이터 형식 (MIME 타입) 설정 ,응답이 커밋된 후에 호출되면 영향이 없음 |
setLocale(Locale loc) | void | 클라이언트가 사용하는 언어 / 국가코드 등 |
클라이언트 환경 설정 | ||
addCookie(Cookie cookie) | void | 인자값으로 주어진 쿠키를 응답정보의 헤더에 추가, 쿠키는 응답정보의 set-Cookie 헤더 값으로 추가되어 클라이언트로 전송 |
containsHeader(String name) | boolean | 응답헤더에 인자값으로 받은 name에 해당하는 header가 있는지 확인 |
encodeURL(String url) | String | 주어진 url에 세션아이디를 추가하여 인코딩해서 반환 |
encodeRedirectURL(String url) | String | 클라이언트와 서버간 세션이 유지되는 상태에서 브라우저 쿠키를 지원하지 않을 때 주어진 URL 뒤에 세션 아이디를 추가하고 인코딩하여 요청을 재전송 |
sendError(int sc, String msg) | void | sc - 에러 상태 코드 , msg - 메세지, 에러 전송 - 로직상의 에러가 없어도 에러 발생 |
sendError(int sc) | void | 에러를 보냄 |
sendRedirect(String location) | void | 응답을 클라이언트가 요청한 URL가 아니라 sendRedirect()에 주어진 URL으로 전송, 매개변수 location은 절대 URL이나 상대 URL로 지정함,서버의 특정 자원이 다른 URL로 이동할때 사용함 |
setDateHeader(String name, long date) | void | 인자값으로 주어진 name과 날짜 값으로 응답헤더를 설정함, 인자값 date는 밀리세컨드 단위로 주어져야 함 (기준날짜는 1970년 1월 1일 00시) |
addDateHeader(String name, long date) | void | setDateHeader()와 유사, 다른점은 중복된 헤더 이름이더라도 값이 추가 |
setHeader(String name, long date) | void | 인자값으로 주어진 name과 value로 응답 해더 설정, 만약 헤더가 이미 설정되어있다면 새로운 값으로 덮어씀 |
addHeader(String name, long date) | void | setHeader()와 유사, 만약 이미 헤더이름이 이미 설정되어있어도 값이 덮어써지는것이 아니라 추가됨 |
setIntHeader(String name, int value) | void | 인자값으로 주어진 name과 value로 응답 해더 설정, 해더가 이미 설정되어있다면 새로운 값으로 덮어씀, value 값이 int 형식 |
addIntHeader(String name, int value) | void | setIntHeader() 메서드와 유사, 마찬가지로 중복된 헤더이름이 있더라도 값이 추가 |
setStatus(int sc) | void | 응답객체에 상태코드를 설정, 에러가 없을때 상태코드를 설정하는데 사용, 이 메서드가 에러코드를 설정하는데 사용되면 컨테이너의 에러페이지 메커니즘은 작동되지 않음, 실제 에러코드를 적용하고싶으면 sendError() 사용 |
getStatus() | int | 응답객체의 상태코드 반환 |
getHeader(String name) | String | 인자로 받은 name에 해당하는 헤더 값 반환 |
getHeaders(String name0 | Collection | 인자값으로 받은 name에 해당하는 헤더 값 Collection 반한 |
setHeaderNames() | Collection | 응답 헤더 이름을 Collection으로 반환 |
HttpSesstion (JSP 내장객체 session)
- 클라이언트가 세션의 정보를 저장하고 세션 기능을 유지하기 위한 클래스
- 주요 메소드
메서드반환값설명
getCreationTime() | long | 세션이 생성된 시간을 구함, 시간은 1970년 1월 1일 이후 흘러간 시간 의미, 단위는 ms |
getLastAccessedTime() | long | 웹 브라우저가 가장 마지막에 세션에 접근한 시간 구함, 시간은 1970년 1월 1일 이후 흘러간 시간 의미, 단위는 ms |
setAttribute(String name, Object value) | void | 파라미터 이름에 따른 객체 추가 |
getAttribute(String name) | Object | 파라미터 이름에 따른 객체 반환 |
getAttributeNames() | Enumeration | 등록된 모든 파라미터 이름 반환 |
removeAttribute(String name) | void | 파라미터 이름에 따른 객체 삭제 |
invalidate() | void | 세션의 모든 삭제를 삭제, 세션 무효화 |
getId() | String | 해당 세션 (브라우저)의 고유 식별자 정보 반환 |
isNew() | Boolean | 세션 객체가 최초로 생성되었는지 여부 반환 |
setMaxInactiveInterval(int interval) | void | 세션이 유지되는 유효시간 설정 s |
getMaxInactiveInterval() | int | 세션에 설정된 유효시간 반환 s |
Servlet 생명 주기
- 서블릿은 클라이언트가 브라우저에서 요청을 하면 해당 서블릿은 라이프 사이클에 의해 객세를 생성함
- init() - 서블릿이 처음으로 요청이 되어 객체가 생성될 때 호출되는 메소드
- service() - 클라이언트가 요청이 있을 때마다 호출되는 메소드
- destroy() - 서블릿 서비스의 종료 및 재시작 또는 서블릿 코드가 수정이 될 때 호출되는 메소드
- doGet() - 클라이언트 요청시 <form method=”get”> 일 때 호출되는 메소드
- doPost() - 클라이언트 요청시 <form method=”post”> 일 때 호출되는 메소드
init() (최초 한번 호출)
service, doGet, doPost (반복 호출)
destroy() (마지막 한번 호출)
'JSP&Servlet' 카테고리의 다른 글
JSP&Servlet - Cookie&Session (0) | 2022.11.18 |
---|---|
JSP&Servlet - Java Beans (0) | 2022.11.18 |
JSP&Servlet - Application (0) | 2022.11.18 |
JSP&Servlet - Session (0) | 2022.11.18 |
JSP&Servlet - Foward, Redirect (0) | 2022.11.18 |
댓글