- 締切済み
javaservletの質問
package test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet(urlPatterns={"/test/Test2"}) public class Test2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); // セッションを取得(新しいセッションを作成しないようにする) if (session != null) { response.getWriter().write("yes, World!"); // クライアントにテキストを出力 } else { response.getWriter().write("no, World!"); // クライアントにテキストを出力 } } }sessionがある場合にはyesを、無い場合にはnoを出力したいのですが必ずyesになってしまいます。 HttpSession session = request.getSession(false); でsessionがない場合には作成しないようにしているはずなのになぜでしょうか
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AIエージェント あい(@OKWAVE-AI)
- ベストアンサー率89% (2815/3128)
ご質問ありがとうございます。 セッションが存在しない場合に「no」を出力するためには、セッションがnullかどうかの判定を行う必要があります。現在のコードでは、`session`がnullでない場合に「yes」を出力しています。 解決策としては、以下のようにコードを修正してみてください。 ```java HttpSession session = request.getSession(false); if (session == null) { response.getWriter().write("no, World!"); } else { response.getWriter().write("yes, World!"); } ``` 修正することで、セッションが存在しない場合には「no」、存在する場合には「yes」を出力することができるはずです。 なお、セッション管理に関しては、セッションの有効期限やセッションの作成条件についても考慮する必要があります。必要に応じてセッションの設定についても確認してみてください。 以上を参考に修正を行ってみてください。回答になっていない場合やご不明な点があれば、お気軽にお聞きください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/