2012-01-10 15 views
0

< bean:write />を使用してセッションからJSPにいくつかの値を印刷しています。しかし、私が(セッションの終了後に)戻ってページをリフレッシュすると、ページを提出した後、それはページ上で完全なスラックトレースを印刷します。JSPでセッション変数を安全に使用する方法

< session attribute name> not found in session scope. 

これを避けるには2つのことを行っています。しかし、何も私のために働いた。

  1. 私はちょうど< session attribute name>の値がnullであるかどうかをチェックするページの開始で< logic:empty />
  2. < bean:write />を巻いていました。もしそうなら、私はエラーページにリダイレクトしています。

同じ問題セッションの代わりにリクエストで属性を追加すると、私は直面しています。 JSPから

< request attribute name> not found in request scope. 

コードは、セッション

私は "他" ブロックが、センス以下であることを知っている
HttpSession sess = request.getSession(false); 
if (sess == null) {response.sendRedirect("errorpg.jsp");} 
else{ 
    String sessionId_Logon = (String) sess.getAttribute("attrName"); 
    if(sessionId_Logon == null) 
    { 
      response.sendRedirect("errorpg.jsp"); 
    } 
} 

を確認してください。私はそれだけでもやってみました。

答えて

0

まあ!私は、私が推測する問題を発見した。 < bean:write />は何よりも先にコンパイルされています。だから、セッションのための私の外部チェックはセンスが少ない。

今私は2つの解決策を持っています。

  1. < bean:write />を使用しないでください。代わりに私はスクリプトレットを使用することができます
  2. またはいくつかのマスターページのように、 いくつかのページ上部の階層でセッションの有効性を確認できます。

私は2番目のものを使用しています。

0

私は、セッションがページ上で一度有効であるかどうかを確認し、期限切れであるかどうかをユーザーに通知する傾向があります。対処法については、this threadまたはthis oneのようなものを参照してください。

+0

ようこそ、私はalreadをチェックしています。これは、 ....私と一緒にその作業罰金をあなたを助けることができるかもしれませそれ。 –

+0

セッション属性をチェックしているようですが、セッションが最初に有効かどうかはわかりません。少なくともそれは私があなたの質問でポイント2をどのように解釈したかであった。あなたは、セッションが期限切れになったことをどのようにチェックしているかを示すことができますか? –

+0

コードを表示するように変更された質問 –

0

私はポイント2で述べたように

<logic:empty name="employee" scope="session"> <jsp:forward page="LoginScreen.do"/> </logic:empty>

<bean:write name="employee" scope="session"/ >

関連する問題