Javaを勉強しているものです。
JavaのサーブレットクラスでServletExceptionをスローして独自のエラーページを表示させようとしています。
/sample3/src/main/java/servlet/Path3Servlet.java
java
1package servlet; 2 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7 8/** 9 * Servlet implementation class Path3Servlet 10 */ 11public class Path3Servlet extends HttpServlet { 12 private static final long serialVersionUID = 1L; 13 14 /** 15 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 16 */ 17 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { 18 // エラーページが表示できるか確認のためわざとServletExceptionをスローさせる 19 throw new ServletException("エラーです。"); 20 } 21}
/sample3/src/main/webapp/WEB-INF/web.xml
xml
1<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 2<web-app> 3 4 <display-name>Archetype Created Web Application</display-name> 5 6 <servlet> 7 <servlet-name>Path3Servlet</servlet-name> 8 <display-name>Path3Servlet</display-name> 9 <description></description> 10 <servlet-class>servlet.Path3Servlet</servlet-class> 11 </servlet> 12 13 <servlet-mapping> 14 <servlet-name>Path3Servlet</servlet-name> 15 <url-pattern>/api/users/path3</url-pattern> 16 </servlet-mapping> 17 18 <error-page> 19 <exception-type>javax.servlet.ServletException</exception-type> 20 <location>/error.jsp</location> 21 </error-page> 22 23 <error-page> 24 <error-code>404</error-code> 25 <location>/error.jsp</location> 26 </error-page> 27 28 <error-page> 29 <error-code>500</error-code> 30 <location>/error.jsp</location> 31 </error-page> 32 33</web-app>
/sample3/src/main/webapp/error.jsp
html
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Insert title here</title> 8</head> 9<body> 10 <h1>エラーページです。</h1> 11</body> 12</html>
Tomcatを起動させて、http://localhost:8080/sample3/api/users/path3にアクセスすると
error.jspが表示されませんでした。
http://localhost:8080/sample3/hogeにアクセスして404エラーを発生させてみたのですが、こちらも
error.jspが表示されませんでした。
http://localhost:8080/sample3/error.jspで直接アクセスすると表示はできました。
以下のサイトを参考にweb.xmlのerror-pageを設定していますが、いまだに解決ができておりません。
https://www.javalife.jp/2018/04/15/tomcat%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%99%E3%82%8B/
https://www.techscore.com/tech/Java/JavaEE/Servlet/9-2/
https://talosta.hatenablog.com/entry/error-page
web.xmlの設定について詳しい方がいましたら、ご回答いただけないでしょうか?
よろしくお願いいたします。
あなたの回答
tips
プレビュー