【问题标题】:session always not null is jsp [duplicate]会话总是不为空是jsp [重复]
【发布时间】:2014-10-23 12:34:45
【问题描述】:
      // login.jsp
                    <%
                        if(session!=null){
                            %>
                            <%@  include file="header2.jsp"%>
                            <%
                        }else{
                            %>
                            <%@ include file="header.jsp" %>
                            <%
                        }
                        %>

                        <form action="validate.jsp">
                        username:<input type="text" name="username"><br>
                        password:<input type="password" name="password" ><br>
                        <input type="submit" name="submit">

                        </form>

                        <%@ include file="footer.jsp"%>

            //validate.jsp

            <% 
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            if(password.equals("password")){
                //HttpSession ses1 = request.getSession();
                session.setAttribute("username", username);
                //response.sendRedirect("success.jsp");
                request.getRequestDispatcher("success.jsp").forward(request, response);
            }else{
                out.print("login fail");
                request.getRequestDispatcher("fail.jsp").forward(request, response);
            }

            %>
             //success.jsp
            <%

            if(session!=null){
                %>
                <%@  include file="header2.jsp"%>
                <%
            }else{
                %>
                <%@ include file="header.jsp" %>
                <%
            }


            %>
            <h2> success</h2>

            <% String n =(String)session.getAttribute("username");

            out.print("welcome"+n);
            %>

            <%@ include file="footer.jsp"%>
            //logout.jsp
              <%
              if(session!=null){
                %>
                <%@  include file="header2.jsp"%>
                <%
            }else{
                %>  
                <%@ include file="header.jsp" %>
                <%
            }
            %>  
            <%  
            session.setAttribute("username","");
               session.invalidate();
            %>
            <h2>You have been logged out</h2>

            <%@ include file="footer.jsp"%>

我正在开发一个简单的 jsp Web 应用程序,其中如果会话不为空,那么它将包含 header2.jsp,其中包含一个注销链接,否则如果会话为空,那么它将仅包含具有登录和注册的 header.jsp链接,但是当我运行这个应用程序时,它总是包含 header2.jsp 哪个注销链接,我不知道为什么会话也是空的。请在这里帮忙。

【问题讨论】:

  • 因为默认情况下总是创建会话。如果您不想要会话,请将 &lt;%@ page session="false" %&gt; 添加到您的页面。否则,您将始终隐含地获得会话。此外,您不应该在应该在 servlet 中完成的 JSP 中进行编程。 Scriptlet 并不是构建软件的好方法。

标签: java jsp


【解决方案1】:

除非另有配置,否则 JSP 页面将始终创建会话。

您不想检查空会话;而是检查会话中是否存在已知值。

不相关,但所有这些小脚本都不是一个好主意。

【讨论】:

    【解决方案2】:

    如果没有会话,JSP 页面默认创建会话。如果您想绕过创建会话,您需要将以下内容添加到您的 JSP:

    <%@ page session="false" %>
    

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多