请问各位这个
session.removeAttribute("un");
不是把un的值删除了吗,为什么后面
<h1>
```标签里还能获取到un的值?

<%
String un = (String) session.getAttribute("name");
if (un == null) {
response.sendRedirect("login.jsp");
}
session.removeAttribute("un");
%>
sessionID:<%=session.getId()%>
<h1>
欢迎<%=un%>登录本网站
</h1>
```
标签里获取的是字符串变量 un,其值来自session.getAttribute("name")。与session.removeAttribute("un");无关
void removeAttribute(String key)
//通过键删除对应的数据
在JSP页面中使用session.removeAttribute("un")代码可以删除session中名为"un"的属性。但是,有可能在删除之后,通过session.getAttribute("un")仍然能够获取到该值,原因是可能存在多个不同的session对象。如果在代码中创建了多个session对象,在其中一个session对象中删除了"un"属性,但是在另一个session对象中仍然可以获取该值。
为了避免这种情况的发生,可以在获取session对象时使用getSession(false)方法,传入false参数可以在不存在session对象时返回null,避免创建多个session对象。具体使用方法如下:
HttpSession session = request.getSession(false); //获取session对象,如果不存在则返回null
if(session != null) {
session.removeAttribute("un"); //删除名为"un"的属性
}
如果仍然存在问题,建议查看代码中是否存在多个session对象的创建或使用,以及在不同页面或请求中使用了不同的session对象。