✔ 다운로드 링크 : https://tomcat.apache.org/
압축풀고 C드라이브 - program files로 잘라 붙여넣기
✔ 이클립스에 톰캣 등록하기
✔ 포트번호 변경하기
C:\Program Files\Tomcat8.5\conf - server.xml - 8080검색 - 두번째 '8080' 수정
✔ 이클립스에서 톰캣 제거하기
이클립스 - Preferendces - server - runtime environments - remove
메소드 | 역할 |
---|---|
protected doDelete (HttpServletRequest request, HttpServletResponse response) | DELETE 요청(request)을 수행 service() 메소드를 통해서 호출 |
protected doGet (HttpServletRequest request, HttpServletResponse response) | GET 요청(request)을 수행 service() 메소드를 통해서 호출 |
protected doPost (HttpServletRequest request, HttpServletResponse response) | POST 요청(request)을 수행 service() 메소드를 통해서 호출 |
public service (ServletRequest request, ServletResponse response) | 클라이언트의 요청(request)을 전달 받아 protected sevice() 메소드에 전달 |
protected service (ServletRequest request, ServletResponse response) | public service() 메소드로부터 요청(request)을 전달 받아 protected doXXX()메소드에 전달 |
메소드 | 역할 |
---|---|
public void init(ServletConfig config) | * 서블릿 요청 시 맨 처음 한 번만 호출 * 서블릿 생성 시 초기화 작업을 수행 |
protected service(HttpServletRequest request, HttpServletResponse response) | * 서블릿 요청 시 매번 호출 * post 방식의 요청이라면 dopost()메소드를 호출하고 get 방식의 요청이라면 doGet() 메소드를 호출함 |
protected doGet(HttpServletRequest request, HttpServletResponse response) | * 서블릿 요청 시 매번 호출 * get 방식의 요청을 실제로 처리함 |
protected doPost(HttpServletRequest request, HttpServletResponse response) | * 서블릿 요청 시 매번 호출 * post 방식의 요청을 실제로 처리함 |
public void destroy() | * 서블릿이 메모리에서 소멸(unload)될 때 호출 * 서블릿이 사용하던 모든 자원의 해제(close) |
메소드 | 역할 |
---|---|
public getContextPath() | 요청한 컨텍스트를 가리키는 URI반환 |
Cookie[] getCookies() | 클라이언트가 현재 요청과 함께 보낸 쿠키 객체들을 배열로 반환 |
String getHeader(String name) | 현재 요청에 포함된 특정 헤더 정보를 문자열로 반환 |
String getRequestURI() | 요청한 URL의 컨텍스트와 파일 경로까지 모두 반환 |
HttpSession getSession() | 현재 요청과 연관된 세션(Session)을 반환 |
String getParameter(String name) | 현재 요청에 포함된 특정 파라미터 값을 문자열로 반환 |
String getParameterValues(String name) | 현재 요청에 포함된 특정 파라미터 값을 문자열 배열로 반환 |
메소드 | 역할 |
---|---|
PrintWriter getWriter() | 서버에서 클라이언트로 문자를 전송할 수 있는 출력 스트림 반환 |
void setContentType(String type) | 응답 정보의 데이터 형식(MIME 형식)을 설정 |
void addCookie(Cookie cookie) | 응답 정보에 쿠키를 추가 (추가된 쿠키는 클라이언트에 저장됨) |
void addHeader(String name, String value) | 응답 정보에 특정 헤더 값을 저장 |
void sendRedirect(String location) | 클라이언트에게 리다이렉트(Redirect)할 URL을 전송 |
void serStatus(int sc) | 응답 정보에 상태코드를 저장 |
① 브라우저로 특정 사이트 접속
② 접속한 브라우저의 세션 객체 생성
③ 생성된 세션 객체의 ID를 브라우저에 응답
④ 브라우저는 서버로부터 받은 세션 ID를 세션 쿠키 형태로 저장 (쿠키명 : jessionid)
세션은 HttpSession 클래스 객체임
세션은 HttpServletRequest 클래스 객체의 getSession() 메소드를 호출해서 생성함
HttpServletRequest 클래스의 Session 생성 메소드
메소드 | 역할 |
---|---|
HttpSession getSession() | 기존의 세션 객체가 존재하면 해당 세션 객체를 반환, 없으면 새로 생성한 객체를 반환 |
HttpSession getSession(boolean arg) | 기존의 세션 객체가 존재하면 해당 세션 객체를 반환, 없으면 새로 생성한 세션 객체를 반환 (true) 없으면 null을 반환 (false) |
메소드 | 역할 |
---|---|
long getCreateTime() | 세션이 생성된 타임스탬프(Timestamp) 값 반환 |
String getId() | 세션에 할당된 고유 식별자 반환 |
void invalidate() | 현재 생성된 세션 소멸 |
void setMaxInactiveInterval(int interval) | 세션 유지 시간을 초 단위로 설정 |
메소드 | 역할 |
---|---|
void setAttribute(String name, Object obj) | 지정한 name 속성으로 obj 저장 |
Object getAttribute(String name) | 지정한 name 속성의 값 반환. Object를 반환하기 때문에 캐스팅이 필요할 수 있음 |
void removeAttribute(String name) | 지정한 name 속성 삭제 |
스코프 종류 | 서블릿 API | 접근 범위 |
---|---|---|
애플리케이션 스코프 | ServletContext | 동일한 애플리케이션에서 접근 가능 |
세션 스코프 | HttpSession | 동일한 브라우저에서 접근 가능 |
리퀘스트 스코프 | HttpServletRequest | 하나의 요청/응답 사이클에서만 접근 가능 |
✔ 프로젝트 서버 오픈하기
해당 프로젝트 우클릭 - run as - run on server
✔ servlet 생성 시 체크 리스트
❔용어정리
URLMapping = 서블릿이름
context가 같다 = 같은 프로젝트다
URLMapping이 다르다 = 서블릿이 다르다
서블릿은 새로고침이 안되기 때문에 재실행을 해야한다.
config = 환경설정
doGet으로 요청하면 바로 처리, doPost로 요청하면 Get에서 처리 => 기본값
오류시 restart 해도 안되면 clean
주소
슬래시가 있으면 컨텍스트 패스로 인식
슬래시가 없으면 맵핑으로 인식
service()
요청하는 방식에 따라서 (doGET / doPOST) 연결해주는 역할을 수행