[java] Guice와 서블릿 쿠키(Cookie) 처리 방법

이번 포스트에서는 Guice와 서블릿을 함께 사용하여 쿠키를 처리하는 방법에 대해 알아보겠습니다. Guice는 의존성 주입(Dependency Injection) 프레임워크로서, 서블릿을 사용하는 프로젝트에서 유용하게 사용됩니다. 쿠키는 웹 애플리케이션에서 클라이언트 측에 정보를 저장하는데 사용되며, 쿠키를 처리하는 방법은 매우 중요합니다.

Guice 설정

먼저 Guice를 프로젝트에 추가하고 설정해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가하세요.

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.2.3</version>
</dependency>

그리고 Guice의 모듈을 구현합니다. GuiceModule.java라는 이름의 새로운 클래스를 생성한 후, 다음과 같이 구현하세요.

import com.google.inject.AbstractModule;

public class GuiceModule extends AbstractModule {
    @Override
    protected void configure() {
        // Bind your dependencies here
    }
}

서블릿 설정

서블릿을 사용하기 위해 web.xml 파일에 다음과 같이 설정해야 합니다.

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>

그리고 com.example 패키지에 MyServlet 클래스를 생성합니다. 다음은 간단한 예시입니다.

import com.google.inject.Inject;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Cookie;
import java.io.IOException;

public class MyServlet extends HttpServlet {

    @Inject
    private UserService userService;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        
        // 쿠키 생성
        Cookie cookie = new Cookie("username", username);
        resp.addCookie(cookie);
        
        resp.getWriter().println("Hello, " + username);
    }
}

위의 예시에서는 UserService라는 Guice에 의존성 주입이 필요한 클래스를 사용하고 있습니다.

쿠키 사용

이제 쿠키를 사용하여 클라이언트의 정보를 유지하고 싶다면, 다음과 같이 처리할 수 있습니다.

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Cookie;
import java.io.IOException;

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie[] cookies = req.getCookies();

        if (cookies != null) {
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                String value = cookie.getValue();
                
                if (name.equals("username")) {
                    resp.getWriter().println("Hello, " + value);
                }
            }
        }
    }
}

위의 예시에서는 getCookies() 메서드를 사용하여 모든 쿠키를 가져온 후, 이름이 “username”인 쿠키를 찾아서 값을 읽어옵니다. 이후 해당 값을 사용하여 클라이언트에게 응답을 보낼 수 있습니다.

이제 Guice와 서블릿을 함께 사용하여 쿠키를 처리하는 방법에 대해 알아보았습니다. 이를 통해 웹 애플리케이션 개발 시 쿠키를 효율적으로 처리할 수 있습니다.

참고 자료