質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

2635閲覧

サーブレット初期化エラー時のページ表示について

Linkey

総合スコア77

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2017/05/06 02:19

サーブレットの初期化時にエラーが発生した場合にエラーページに飛ばすように処理を実装したいのですが良い方法が見つかりません。そもそもこういうやり方で実装している人がいない為、参考になるサイトが見つかりませんでしたので質問を投稿させていただきました。

[実装について]
htmlページからサーブレットを読み込んだ時にinitメソッドが実行される
initメソッドではプロパティファイルを読み込む処理を実装しており、万が一プロパティの読み込み失敗または読み込みんだ後のリソース解放に失敗した場合にエラーページに飛ぶ。

以下のようなオリジナルのエラーページを表示させたい。

オリジナルページ(イメージ図)
イメージ

HttpServletResponseを使わずにエラーページに飛ばすということは
無理でしょうか?エラー発生時の振る舞いについても勉強中でエラー処理に対しての改善策や別の実装方法、アドバイス等頂けると幸いです。ソースコードは以下のようになっています。

Java

1package registration.servlet; 2 3import java.io.IOException; 4import java.io.InputStream; 5import java.util.Properties; 6 7import javax.servlet.ServletException; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12import org.apache.logging.log4j.LogManager; 13 14import registration.controller.RegistrationController; 15import util.exception.UnexpectedProcessingException; 16import util.servlet.ServletResource; 17import util.util.Logger; 18import util.util.OutputLogger; 19 20public class RegistrationServlet extends HttpServlet implements ServletResource{ 21 private static final long serialVersionUID = 1L; 22 static org.apache.logging.log4j.Logger logger = LogManager.getLogger(Logger.class.getName()); 23 24 private final static String COMMON_URL = "CommonUrl"; 25 private final static String PROPERTY_FILE = "url.properties"; 26 private final static Properties prop = new Properties(); 27 private final static String API_NAME = "RegistrationServlet"; 28 29 // 初期化処理を行います 30 public void init() throws ServletException{ 31 32 InputStream inStream = null; 33 OutputLogger Logger = new OutputLogger(); 34 try { 35 inStream = RegistrationServlet.class.getClassLoader().getResourceAsStream(PROPERTY_FILE); 36 prop.load(inStream); 37 } catch (IOException e) { 38 logger.warn("[プロパティファイル読込エラー],取得ファイル名={}", PROPERTY_FILE); 39 Logger.generateOutputWarnInfo(API_NAME, e); 40 //エラーページに飛ばす 41 gotoErrorPage(); 42 } catch (NullPointerException e) { 43 logger.warn("[プロパティファイル未存在],取得ファイル名={}", PROPERTY_FILE); 44 Logger.generateOutputWarnInfo(API_NAME, e); 45 //エラーページに飛ばす 46 gotoErrorPage(); 47 } finally { 48 try { 49 if (inStream != null) { 50 inStream.close(); 51 } 52 } catch (IOException e) { 53 logger.warn("リソース解放失敗, 対象ファイル={}",PROPERTY_FILE); 54 Logger.generateOutputWarnInfo(API_NAME, e); 55 //エラーページに飛ばす 56 gotoErrorPage(); 57 } 58 } 59 } 60 61 protected void doGet(HttpServletRequest request, HttpServletResponse response) 62 throws ServletException, IOException { 63 64 //TODO 未実装 65 66 } 67 68 protected void doPost(HttpServletRequest request, HttpServletResponse response) 69 throws ServletException, IOException { 70 //TODO 未実装 71 } 72 73 @Override 74 public void gotoErrorPage() { 75 //ここからエラーページにジャンプする 76 } 77 78}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

web.xml に error-page を設定すればできるのではないですか?

投稿2017/05/06 02:29

koko_u

総合スコア936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Linkey

2017/05/07 03:59

独自例外を作成してerror-pageに設定したところ期待通りになりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問