본문 바로가기
  • 실행력이 모든걸 결정한다
Spring 사전 준비/JSP Servlet

[JSP Servlet] doGet / doPost / Servlet 기본 원리 / 한글 처리

by 김코더 김주역 2020. 11. 25.
반응형

※ Context Path : 웹 어플리케이션을 구분하기 위한 경로, 프로젝트 생성 시 server.xml에 자동으로 추가됨. request의 getContextPath() 메소드는 일반적으로 URL에서 프로젝트 이름 부분을 반환한다.

 

1. doGet, doPost

 

서블릿 파일을 생성할 때 메소드 생성 체크 박스 목록에 doGet, doPost 가 있다.

1) doGet : Get방식에서 호출되는 메소드, URL에 정보가 포함되어 보안에 약함. 기본 호출 메소드.

2) doPost : Post방식에서 호출되는 메소드, URL에 정보가 포함되지 않아 안전하며, 헤더에 정보를 실음.

※ 둘다 매개 객체로 HttpServletRequest 라는 요청 객체와 HttpServletResponse 라는 응답 객체를 받는다.

 

* 응답 객체의 주요 메소드

  • setContentType() : 응답 방식 결정. 예) setContentType("text/html; charset=euc-kr");
  • getWriter() : 웹 브라우저에 출력하기 위한 출력 스트림, 동작이 끝나고 이 메소드 내의 close() 메소드로 닫아 주어야 한다.

 

 

2. Servlet 기본 원리

1) Servlet 작동 순서

사용자가 Servlet 요청을 할 때마다 웹 서버와 웹 어플리케이션 서버를 거쳐서, Servlet 컨테이너안에 스레드와 Servlet 객체가 생성된다.

 

2) Servlet 라이프 사이클

Servlet은 최초 요청 시 객체가 만들어져 메모리에 로딩되는데, 그 이후 요청부터는 기존의 객체를 재활용하게 된다. 이것이 Servlet이 응답, 동작 속도가 빠른 이유다.

 

Servlet 객체 생성 (1회) -> init() 호출 (1회) -> service(), doGet(), doPost() 호출 (요청시 매번) -> destory() 호출 (1회)

* service() : 브라우저의 요청(doGet(), doPost())을 처리하도록 하는 메소드

initPostConstruct() : init() 전에 호출되는 선처리 메소드

destroyPreDestroy() : destroy() 후에 호출되는 후처리 메소드

 

 

3) HTML의 form 정보들을 Servlet에서 받는 과정

<form action=경로 method="post">
    <input type="text" name="id">
    <input type="password" name="pw">
    <input type="submit" value="제출"> <!-- 이 버튼을 누르면 전송됨 -->
    <input type="reset" value="초기화">
</form>
protected void doPost(HttpServletRequest request, HttpServletResponse response)}
    String id = request.getParameter("id");
    String password = request.getParameter("password");
    // 작업
}

getParameter("id") : name이 "id"인 요소를 찾아 value값을 반환한다.

getParameterValues("id") : name이 "id"인 요소들을 찾아 value값들을 배열의 형태로 반환한다.  

 

 

3. 한글 처리

1) GET 방식 - server.xml 파일의 Connector 요소에 다음 속성을 추가해준다.

주의할 점이 있다면 URLEncoding 이 아니라 URIEncoding이다.

 

 

2) POST 방식 - HttpServletRequest의 setCharacterEncoding() 메소드를 이용한다.

 

 

반응형

댓글