Java 会话始终不为空是jsp
我正在开发一个简单的jsp web应用程序,其中如果会话不为null,那么它将包括header2.jsp,其中包含一个注销链接;如果会话为null,那么它将只包括header.jsp,其中包含登录和注册链接,但当我运行此应用程序时,它始终包括header2.jsp,其中包含注销链接,我也不知道为什么会话也是空的。请在此提供帮助。除非另有配置,否则JSP页面将始终创建会话 您不想检查空会话;而是检查会话中是否存在已知值Java 会话始终不为空是jsp,java,jsp,Java,Jsp,我正在开发一个简单的jsp web应用程序,其中如果会话不为null,那么它将包括header2.jsp,其中包含一个注销链接;如果会话为null,那么它将只包括header.jsp,其中包含登录和注册链接,但当我运行此应用程序时,它始终包括header2.jsp,其中包含注销链接,我也不知道为什么会话也是空的。请在此提供帮助。除非另有配置,否则JSP页面将始终创建会话 您不想检查空会话;而是检查会话中是否存在已知值 不相关,但所有这些scriptlet都不是一个好主意。如果没有会话,JSP页面
不相关,但所有这些scriptlet都不是一个好主意。如果没有会话,JSP页面默认创建会话。如果要绕过创建会话,则需要将以下内容添加到JSP中:
// 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中编程,而应该在servlet中完成。Scriptlet并不是构建软件的好方法。
<%@ page session="false" %>