我点击页面上一个logout的链接,去action里使session.invalidate,再forward到之前的页面,这个时候,用标签判断一下session里的user是否存在,存在就显示logout链接,否则logon,但action的success页面如果是forward的时候,仍然显示成logon链接了,只有redirect的时候,才能真正决断出来,这是为什么?session的invalidate应该是立即生效啊,在后台输出也是user=null了,相关配置如下:jsp:<table width="368" border="1" height="52" style="width: 368px;">
<s:if test="#session.user==null">
<tr>
<td>
<a href="/myblog/user/beforeDo.do">Register</a>
</td>
<td>
<a href="/myblog/logon.jsp">Log on </a>
<br>
</td>
</tr>
</s:if>
<s:else>
<tr>
<td>
Personal Homepage
<br>
</td>
<td>
Manage Category
<br>
</td>
<td>
<a href="/myblog/user/logout.do"> Log Out</a>
<br>
</td>
</tr>
</s:else>
</table>
<br>
struts.xml:<action name="logout" class="userAction" method="logout">
<result type="redirect" name="success">/index.jsp</result>
</action>
action:public String logout(){
ServletActionContext.getRequest().getSession().invalidate();
System.out.println(getSession().getAttribute("user"));
return SUCCESS;
}
<s:if test="#session.user==null">
<tr>
<td>
<a href="/myblog/user/beforeDo.do">Register</a>
</td>
<td>
<a href="/myblog/logon.jsp">Log on </a>
<br>
</td>
</tr>
</s:if>
<s:else>
<tr>
<td>
Personal Homepage
<br>
</td>
<td>
Manage Category
<br>
</td>
<td>
<a href="/myblog/user/logout.do"> Log Out</a>
<br>
</td>
</tr>
</s:else>
</table>
<br>
struts.xml:<action name="logout" class="userAction" method="logout">
<result type="redirect" name="success">/index.jsp</result>
</action>
action:public String logout(){
ServletActionContext.getRequest().getSession().invalidate();
System.out.println(getSession().getAttribute("user"));
return SUCCESS;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货