서블릿 생명주기(life Cycle)
init() : 서버가 동작할 때 최초 1회만 동작하는 메서드
service() : 사용자 요청시 마다 동작하는 메서드. doGet이든 doPost든 상관없이 공통적으로 동작 해야할 사항이 있을 때 작성 (보통 파라메터 가져와서 공통의 작업할 때 많이 사용)
doGet()/doPost() : 사용자 요청시 마다 동작하는 메서드
destroy() : 서버가 종료되기 전 최초 1회만 동작하는 메서드
web Server와 web Application Server 의 차이
web Server : 정적 페이지(HTML, CSS, JS, 이미지 등)에 대한 처리를 담당
WAS : 동적 페이지(JSP-JAVA계열, ASP-C,C++계열, PHP-C,C++계열, Python 등)에 대한 처리를 담당
아파치, 원래 웹서버도 같이써야하긴 하지만 간단하게 jsp 서블릿만 사용할때에는 톰캣과 같은 WAS만 있어도 된다.
JSP - 톰캣
ASP - IIS
PHP, Python - 아파치 모듈 필요
request, response 객체에서 문자 인코딩을 UTF-8 로 설정(변환)하기 위한 코드
클라이언트가 서버로 보내는 문자에 대한 인코딩 - request
request.setCharacterEncoding("utf-8");
서버에서 클라이언트로 보내는 문자에 대한 인코딩 - response
response.setContentType("text/html; charset=utf-8");
체크박스 값
<form ...>
<input type="checkbox" id="chk1" name="chkbox1" value="a">체크
<input type="checkbox" id="chk1" name="chkbox1" value="b">체크
<input type="checkbox" id="chk1" name="chkbox1" value="c">
</form>
체크박스를 폼으로 넘기면 다음과 같이 동일한 이름으로 여러 값이 넘어간다.
?chkbox1=a&chkbox1=b
.getParameter("chkbox1") 하면 문자열 하나, a 값 밖에 가져올 수 없다. 따라서
.getParameterValues("chkbox1") 을 써야 한다. - String[] 반환, 배열로 체크한 모든 항목 값을 반환해 준다.
동기/비동기 통신
동기화 통신 : 사용자가 요청 메시지를 보내면 응답 메시지가 올 때까지 어떠한 작업도 수행할 수 없게 동작하는 통신 방법. 요청과 응답이 동기화 되어 있다.
비동기 통신 : 사용자가 요청 메시지를 보내면 응답 메시지가 올때까지 어떠한 작업도 하지 못하는 상태가 아닌, 추가 작업을 할 수 있게 동작하는 통신 방법. 요청을 보냈다고 해서 어떤 작업을 못하는 상태가 아니다. 요청과 응답은 동기화 되어있지 않다.
Ajax 에서 사용되는 속성
type : 서버에 데이터를 전송할 때 get/post 방식을 설정하는 속성
url : 서버에 데이터를 보내기 위한 서버 주소
dataType : 서버가 클라이언트에게 보내는 데이터의 종류를 명시하는 속성. text, json, xml 타입이 있다.
data : 서버에 보낼 데이터 객체
success : 서버의 응답 타입이 성공일 때 동작할 함수를 지정하는 속성
error : 서버의 응답 타입이 실패일 때 동작할 함수를 지정하는 속성
Servlet 에서 사용하는 Filter 객체의 기능과 용도
Servlet Filter는 HTTP 요청과 응답 사이에 전달되는 데이터를 중간에서 필터링 하기 위해 사용하는 객체로 로그 기록 및 사용자 인증, 문자셋 변환, 이미지 변환, 데이터 압축 및 암호화 등의 용도로 사용할 수 있다.
클라이언트 --------------------- 메세지 ----------|필터|------->서버
서버는 메세지를 처리할 수 있는 내부 컨트롤러 쪽으로 데이터를 보내 준다(request). 반대로 서버 -> 클라이언트(response) 때에도 필터 동작
ex. 문자 변환하는 인코딩 구문을 컨트롤러마다 작성하면 번거롭기 때문에 필터로 만들어두면 여러번 지정하지 않아도 된다.
'JSP' 카테고리의 다른 글
[211214] JSTL 반복문 응용, init(서블릿 동작 시 최초 1회 수행) (0) | 2021.12.14 |
---|---|
[211213] 액션 태그(모듈화 top-navigation), EL 스코프, JSTL (0) | 2021.12.13 |
[211210] 게시판 Board, 파일 첨부 마무리 (0) | 2021.12.10 |
[211206] 파일 첨부를 위한 MultipartRequest (0) | 2021.12.06 |
[211130] 세미 프로젝트 초기 설정, 깃 설정 (0) | 2021.11.30 |