- - PR -
jspの処理終了コマンド
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-03-07 10:47
TOMCATでセッションを使うWebアプリを組んでます。
アクセスごとにセッションがタイムアウトしたかどうかをチェックしようと思い、各ページで次のようなjspをインクルードしています。 checksession.jsp ----------------------------------------- <% if(session.getAttribute("appobj") == null){ //セッションに共通で使うオブジェクトがなければ(=セッションが切れていれば) //メッセージとログイン画面へのリンクを出力 %> Session time out <A HREF="login.jsp">Login画面へ</A> <% out.close(); //出力ストリームを閉じる 本当はこの時点でJSP処理を終了したい } %> このファイルを各ファイルの先頭で <jsp:include page='<%=response.encodeURL("checksession.jsp")%>' flush="true"/> <% //hogehoge %> のようにインクルードしています。 実際にセッションが切れた場合、クライアントでは正しく表示されるのですが、サーバでinclude以降のコードがそのまま実行されてしまい、セッションから消えたオブジェクトを使おうとしてNullPointerExceptionが出てしまいます。 任意の時点でjspの処理を終わらせることはできるのでしょうか? ちなみにSystem.exit()を呼ぶと案の定TOMCATが昇天しました;-) よろしくお願いいたします。 | ||||
|
投稿日時: 2002-03-07 11:12
checksession.jspでは例外をスローするだけにして、例外をキャッチしたところで「Login画面へ」を表示させるようにすれば良いと思います。
| ||||
|
投稿日時: 2002-03-07 21:13
なるほど、参考になりました。
これまではif〜elseで無理やり囲っていましたので。 ASPのResponse.End(即座にスクリプト処理終了)のようなメソッドはやはりないのですかね。 #J2EEのJavaDocには該当しそうなものありませんし。 | ||||
|
投稿日時: 2002-03-08 03:11
とかどうでしょう :b JSP がどう Servlet に展開されるかわかってれば。 いちど、.jsp から生成される .java のソースをのぞいてみればいかがでしょうか。 tomcat なら TOMCAT_HOME/work の下の方に転がってます。 | ||||
|
投稿日時: 2002-03-08 09:24
あ、なるほど、returnすればよかったんですね・・・
デバッグ時に生成されたjavaは読んでたのですが、returnは思い当たりませんでした。 _jspService()を単純に抜ければいいのですね ということで checksession.jsp ----------------------- <% if(session.getAttribute("appobj") == null){ %> <A HREF="login.jsp">Login画面へ</A> <% out.close(); return; } %> ----------------------- としたものを、ページの先頭で <%@ include file="checksession.jsp"%> とすることで本体コードに入る前に処理を終わらせることができました。 #<jsp:include>と<%@include%>を間違えてました ありがとうございました。 | ||||
1
