[java] Tomcat에서의 URL 리다이렉션 및 포워딩

Tomcat은 웹 응용 프로그램을 실행하는 데 사용되는 Java Servlet 컨테이너입니다. URL 리다이렉션 및 포워딩은 Tomcat을 통해 요청된 URL을 다른 URL로 전송하는 방법입니다. 이를 통해 사용자를 다른 페이지로 안내하거나, 리소스를 다른 경로로 보내거나, 다른 Servlet으로 요청을 전달할 수 있습니다.

URL 리다이렉션

URL 리다이렉션은 클라이언트의 요청을 다른 URL로 보내는 것을 의미합니다. Tomcat은 다음과 같은 방법으로 URL 리다이렉션을 처리할 수 있습니다.

리다이렉션 기능 활성화

Tomcat의 web.xml 파일에서 리다이렉션 기능을 활성화할 수 있습니다.

<web-app>
  ...
  <error-page>
    <error-code>404</error-code>
    <location>/redirect</location>
  </error-page>
  ...
</web-app>

위 예제에서는 404 에러가 발생한 경우 /redirect로 리다이렉션됩니다.

리다이렉션 URL 설정

서블릿 내에서 리다이렉션을 수행할 수 있습니다. 이를 위해서는 HttpServletResponse 객체의 sendRedirect() 메소드를 사용합니다.

response.sendRedirect("http://www.example.com");

위 예제에서는 http://www.example.com으로 리다이렉션됩니다.

포워딩

URL 포워딩은 클라이언트의 요청을 다른 리소스로 전송하는 것을 의미합니다. Tomcat은 다음과 같은 방법으로 URL 포워딩을 처리할 수 있습니다.

포워딩 설정

web.xml 파일에서 특정 URL 패턴에 대한 포워딩 설정을 할 수 있습니다.

<web-app>
  ...
  <servlet>
    <servlet-name>ExampleServlet</servlet-name>
    <servlet-class>com.example.ExampleServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>ExampleServlet</servlet-name>
    <url-pattern>/example/*</url-pattern>
  </servlet-mapping>
  
  <filter>
    <filter-name>ForwardFilter</filter-name>
    <filter-class>com.example.ForwardFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>ForwardFilter</filter-name>
    <url-pattern>/forward/*</url-pattern>
  </filter-mapping>
  ...
</web-app>

위 예제에서는 /forward/*로 시작하는 URL에 대해서 ForwardFilter를 통한 포워딩을 설정합니다.

포워딩 수행

Servlet 내에서 포워딩을 수행할 수 있습니다. 이를 위해서는 RequestDispatcher 객체를 사용해야 합니다.

RequestDispatcher dispatcher = request.getRequestDispatcher("/example");
dispatcher.forward(request, response);

위 예제에서는 /example로 포워딩됩니다.

결론

Tomcat에서 URL 리다이렉션과 포워딩은 사용자의 요청을 다른 URL로 전송하거나 리소스를 다른 경로로 보내는 유용한 기능입니다. 이를 통해 웹 응용 프로그램의 사용자 경험을 개선하고, 애플리케이션의 유연성을 높일 수 있습니다.

더 자세한 사항은 Tomcat 공식문서를 참조하세요.