Web Server - Servlet

Bloooooooooooooog..·2023년 3월 21일
0

Servlet

Server Application Let의 줄임말. 웹서비스를 위한 자바 클래스이다. 서블릿은
클라이언트의 요청(Request) 처리와 응답(Response)하는 클래스의 구현을 지친 기술이다.

특징

클라이언트의 특징에 따라 동적으로 작동한다.
javax.servlet.http.HttpServlet를 상속받아서 사용하며 MVC Model2에서 Controller로 이용한다.

web.xml매핑과 어노테이션

초기에는 자바 동적 웹 프로젝트를 만들 때 생성되는 web.xml에 코드를 작성하여 mapping하는 방식으로 프론트 단의 form태그와 servlet을 연결해주었다.

하지만 javax.servlet.annotation.WebServlet를 import해서 클래스 위에 @WebServlet을 기입해서 연결하는 방식이 훨씬 간편하고 널리 쓰인다.

import javax.servlet.annotation.WebServlet;

// 어노테이션을 통해서 form 태그의 action에서 요청한 주소와 연결된다.
@WebServlet("/elTest")
public class ELTestServlet extends HttpServlet{}

Get방식과 Post방식

Get 방식

요청하는 주소 뒤에 전달하는 값이 key=value 형식으로 붙어서 전달된다.
단순한 방식으로 주소값을 임의로 지정해 작성도 되며, 캐싱이 가능한 장점이 있다.
하지만 주소에 데이터가 그대로 전달되므로 보안에 취약하고 글자수 제한이 존재하는 단점이 있다.

Post방식

주소 뒤가 아닌 Http Protocol Body 부분에 숨겨져서 전달된다. 길이 제한이 없고 보안성이 더 좋은 장점이 있지만 캐싱이 안되고 문자를 추가로 인코딩해야 한다.

Post방식의 추가 인코딩

import javax.servlet.annotation.WebServlet;

// 어노테이션을 통해서 form 태그의 action에서 요청한 주소와 연결된다.
@WebServlet("/elTest")
public class ELTestServlet extends HttpServlet{

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 요청 데이터 문자 인코딩 지정
		req.setCharacterEncoding("UTF-8");
	}

}
profile
공부와 일상

0개의 댓글