[java] 서블릿과 RESTful 웹 서비스

목차

서블릿

서블릿은 Java를 기반으로 하는 웹 애플리케이션 개발에 사용되는 기술입니다. 서블릿은 웹 서버에서 동작하며, HTTP 요청을 처리하고 응답을 생성하는 역할을 담당합니다. 이를 통해 동적인 웹 페이지를 생성하거나 데이터를 처리할 수 있습니다.

서블릿은 javax.servlet 패키지에 포함되어 있으며, HttpServlet 클래스를 상속받아 구현합니다. 웹 애플리케이션 개발 시에는 web.xml 파일에 서블릿의 매핑 정보를 등록해야 합니다.

RESTful 웹 서비스

REST (Representational State Transfer)는 클라이언트와 서버 사이의 통신을 위한 아키텍처 스타일입니다. RESTful 웹 서비스는 REST 원칙을 따르는 웹 서비스를 의미합니다. RESTful 웹 서비스는 HTTP 프로토콜을 기반으로 구현되어 다양한 플랫폼에서 호환될 수 있습니다.

RESTful 웹 서비스는 자원을 URI로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE)를 이용하여 해당 자원을 조작합니다. 데이터는 일반적으로 XML 또는 JSON 형태로 전달됩니다.

예제 코드

다음은 서블릿과 RESTful 웹 서비스를 구현하는 예제 코드입니다.

@WebServlet("/api/books/*")
public class BookServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 책 목록 조회 로직
        List<Book> books = BookService.getAllBooks();
        
        // JSON 형태로 변환하여 응답
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(books);
        
        response.setContentType("application/json");
        response.getWriter().write(json);
    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 책 추가 로직
        String title = request.getParameter("title");
        String author = request.getParameter("author");
        
        BookService.addBook(title, author);
        
        response.setStatus(HttpServletResponse.SC_CREATED);
    }
    
    @Override
    protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 책 삭제 로직
        String bookId = request.getParameter("id");
        
        BookService.deleteBook(bookId);
        
        response.setStatus(HttpServletResponse.SC_NO_CONTENT);
    }
}

위 코드는 “/api/books” 경로로 HTTP GET 요청을 받아 책 목록을 조회하는 서블릿입니다. HTTP POST 요청을 받으면 책을 추가하고, HTTP DELETE 요청을 받으면 책을 삭제합니다.

참고 자료