Hyogi's Notebook

서블릿(servlet)과 HTTP 상태코드

by 효기’s

서블릿 개요

자바 플랫폼에서 컴포넌트 기반의 웹애플리케이션 개발 기술

jsp는 서블릿 기술에 기반

jsp의 프리젠테이션 문제를 해결하기 위해 jsp가 등장

이로 인해 웹 애플리케이션의 유지보수 어려움 심각

jsp 모델2가 주목 받으면서 다시 서블릿에 대한 중요성 부각

 

① Server Side Applet의 약어로 Web 서버 즉, Servlet 컨테이너 에서 수행되는 java 클래스

② 서버의 응용 프로그램을 구현하는 기술로서 서버 프로토콜 종류에 관계없이

ftp, pop, smtp, http 등 여러가지 어플리케이션 계층 프로토콜 기반의 응용 프로그램을 개발 할 수 있음.

 

장점

① 스레드 기반으로 동작

② servlet 객체가 메모리상에 한 개만 생성

③ 한번 메모리에 할당된 servlet 객체는 정해진 시기가 될 때까지 메모리 영역에 유지된다.

④ 동시 요청에 대하여 멀티 스레드로 동작하므로 효과적 다중 작업이 가능

⑤ 구현 방법이 서버와 운영체제에 비의존적이다.

⑥ 잘 정의된 유용한 api를 많이 지원한다.

 

웹 애플리케이션 개발 시 서블릿 이점

 컨텐츠와 비지니스 로직을 분리할 수 있다.

 컨트롤러와 뷰의 역할 분담

 유지보수 수월

 기능 확장 용이

 

서블릿 변천

서블릿 문제점 대두

 JSP등장

JSP 스크립트 기술의 한계

MVC 패턴 주목받기 시작

 

서블릿 컨테이너

대표적으로 apache tomcat이 있음.

 

servlet 수행방식

 

servlet 최초 요청

 

servlet 2번째 요청

 

서블릿 구조 (GET 방식, POST 방식)

 

GET 방식

서버에 있는 정보를 가져오기 위해 설계됨.

240바이트까지 전달 할 수 있음.

QUERY_STRING 환경변수를 통해 전달.

URL 노출로 보안상의 문제가 있음.

검색 엔진에서 검색 단어 전송에 많이 이용.

 

POST 방식

서버로 정보를 올리기 위해 설계됨.

데이터 크기의 제한이 없다.

URL에 파라미터가 표시되지 않는다.

 

GET방식 POST 방식 한글 처리 방식 정리

GET 방식

데이터를 URL의 쿼리 문자열에 포함시켜 서버로 보냅니다.

예: http://example.com/page?parameter=value&anotherParameter=anotherValue

이 방식은 전송할 수 있는 데이터의 크기가 제한적이며,

보안에 민감한 정보(비밀번호 등)를 전송하기에 적합하지 않습니다.

한글이나 특수 문자는 URL 인코딩되어 전송됩니다.

 

POST 방식

데이터를 HTTP 요청 본문에 포함시켜 서버로 보냅니다.

이 방식은 큰 데이터를 보내거나, 파일 업로드와 같은 작업을 수행하거나, 보안에 민감한 정보를 전송할 때 사용됩니다.

한글이나 특수 문자는 요청 본문의 인코딩 설정에 따라 처리 됩니다.

 

한글 처리는 주로 UTF-8 인코딩을 사용합니다.

서버와 클라이언트 모두 동일한 인코딩 설정을 사용해야 올바르게 처리될 수 있습니다.

 

HttpServletRequest 객체의 setCharacterEncoding() 메소드를 사용하여 요청 본문의 문자셋을 UTF-8로 설정해야 합니다.

 

→ request.setCharacterEncoding("UTF-8");
→ <meta charset="UTF-8">

 

HTTP 상태 코드 레지스트리

정보 응답 (Informational responses, 100–199)
100 Continue: 클라이언트가 요청을 계속할 수 있음을 알립니다.
101 Switching Protocols: 서버가 클라이언트의 프로토콜 전환 요청을 수락했음을 알립니다.


성공 응답 (Successful responses, 200–299)
200 OK: 요청이 성공적으로 처리되었습니다.
201 Created: 요청이 성공하였고 새로운 리소스가 생성되었습니다.
204 No Content: 서버가 요청을 성공적으로 처리했지만 반환할 내용이 없습니다.


리다이렉션 메시지 (Redirection messages, 300–399)
301 Moved Permanently: 요청한 페이지가 영구적으로 새 위치로 이동하였습니다.
302 Found: 현재 서버에서 작동하는 방식에 따라 GET 메서드를 사용하여 다른 위치에 있는 페이지를 가져오거나 원래의 POST 메서드를 유지합니다.


클라이언트 오류 응답 (Client error responses, 400–499)
400 Bad Request: 서버가 요청의 구문을 파악하지 못했습니다.
401 Unauthorized: 인증 실패 또는 인증되지 않은 접근입니다.
403 Forbidden: 클라이언트는 컨텐츠에 접근할 권리를 가지고 있지 않습니다.


서버 오류 응답 (Server error responses,500–599)
500 Internal Server Error :서버에 오류가 발생하여 요청을 수행할 수 없습니다.
502 Bad Gateway :서버가 게이트웨이 역할을 하고 있어서 잘못된 응답받았다.
503 Service Unavailable :현재 시점에서 서비스를 이용 할 수 없다.

 

블로그의 정보

감성 개발자 효기

효기’s

활동하기