読者です 読者をやめる 読者になる 読者になる

Google App Engine Java 404 ページ カスタマイズ

404 ページをカスタマイズする場合、
一旦自分のコントローラーでうける必要がある。

web.xml

...

    <servlet>
      <servlet-name>Jersey Web Application</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
      <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.sample.hoge</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Jersey Web Application</servlet-name>
      <url-pattern>/api/*</url-pattern>
    </servlet-mapping>

    <!-- default のマッピングを追加する -->
    <servlet>
      <servlet-name>Default</servlet-name>
      <servlet-class>com.sample.piyo.MyServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Default</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
...

com.sample.piyo.MyServlet.java

package com.sample.piyo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {

	public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType ("text/html; charset=UTF-8");
		response.setStatus (HttpServletResponse.SC_NOT_FOUND);

		request.getRequestDispatcher("/WEB-INF/web/404.jsp").include(request, response);
	}

}

404.jsp

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    404 だよ
  </body>
</html>

こんな感じ?