2017-11-01 3 views
0

最近、私は、コンテキストオブジェクトが異なるユーザーやサーブレットで変更されないことを知りました。サーブレット:異なるブラウザからアクセスされたときにコンテキストオブジェクトがnullを表示する

私はsetAttributeメソッドを使用して、コンテキストオブジェクトを設定し、私のサーブレットを実行すると、それは私が別のブラウザを使用してサーブレットを実行しようとした場合それが必要私の知識のコンテキストオブジェクトの値にnull.Accordingを見せて、正しいvalue.Butを印刷します
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ 
    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 
    HttpSession session=request.getSession(); 
    String username=request.getParameter("username"); 
    ServletContext context=request.getServletContext(); 
    try{ 
     if(username!=null && !username.isEmpty()) 
      session.setAttribute("savedUserName", username); 
      context.setAttribute("name", username); 
    } 
    catch(NullPointerException e){ 

    } 
    out.println("Request parameter has username: "+username); 
    out.println("Session parameter has username: "+(String)session.getAttribute("savedUserName")); 
    out.println("Context parameter has username: "+(String)context.getAttribute("name")); 

} 

すべてのサーブレットで動作します。上記のプログラムでは、URLからパラメータを取得しています。私のコードの問題は何ですか?

+0

2つの要求の間に、サーバーを再起動したり、アプリケーションを再デプロイした可能性があります。 –

答えて

2

私の理解では、あなたのコードで{}を使用してください。if condition.itは、unsernameがnullでない場合にname属性の値を設定できるようにします。

あなたのコードでは、context.setAttribute("name", username);コードは、あなたが別のウェブブラウザからserveltを打ったときにnull値に設定されていることを示しています。

 try{ 
      if(username!=null && !username.isEmpty()){ 
       session.setAttribute("savedUserName", username); 
       context.setAttribute("name", username); 
      } 
     } 
     catch(NullPointerException e){ 

     } 
関連する問題