Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTable类型集合元素的功能,不支持元素的移除操作。
Java8中Enumeration接口的源码:
public interface Enumeration<E> {
/**
* Tests if this enumeration contains more elements.
*
* @return <code>true</code> if and only if this enumeration object
* contains at least one more element to provide;
* <code>false</code> otherwise.
*/
boolean hasMoreElements();//判断是否包含元素
/**
* Returns the next element of this enumeration if this enumeration
* object has at least one more element to provide.
*
* @return the next element of this enumeration.
* @exception NoSuchElementException if no more elements exist.
*/
E nextElement();//获得下一个元素
}
通过Enumeration的源码分析可得,Enumeration有两个方法:
(1)boolean hasMoreElements();//是否还有元素,如果有返回true,否则表示至少含有一个元素
(2)E nextElement();//如果Enumeration枚举对象还有元素,返回对象只能的下一个元素,否则抛出NoSuchElementException异常。
所以,可以通过Enumeration获取到session中的属性,然后依次对session属性进行删除
@SuppressWarnings("rawtypes")
@RequestMapping(value ="/logout",method = RequestMethod.GET)
public String logout(HttpServletRequest request, HttpServletResponse response, HttpSession session, RedirectAttributes redirectAttributes) {
//清session
Enumeration em = request.getSession().getAttributeNames();
while(em.hasMoreElements()){
request.getSession().removeAttribute(em.nextElement().toString());
}
return "....";
}
本文介绍如何利用Java中的Enumeration接口遍历并清除session中的所有属性。通过实现hasMoreElements()方法来检查是否存在更多元素,以及nextElement()方法获取下一个元素,从而实现了对session属性的有效管理和清理。

433

被折叠的 条评论
为什么被折叠?



