본문 바로가기

JSP

[211215] 프로그래밍 이론 (필터 filter 등)

 

서블릿 생명주기(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. 문자 변환하는 인코딩 구문을 컨트롤러마다 작성하면 번거롭기 때문에 필터로 만들어두면 여러번 지정하지 않아도 된다.