需求
遍历存放session的list,如果list中存在一个session和当前发起请求的浏览器的session相同,则跳出方法。
/*
request对象监视器
*/
public class MyRequestListener implements ServletRequestListener{
/*
监视request对象的创建
*/
@Override
public void requestInitialized(ServletRequestEvent sre) {
(HttpServletRequest)request = (HttpServletRequest)sre.getServletRequest();
HttpSession currentSession = request.getSession();
ServletContext context = sre.getServletContext();
List<HttpSession> = (List<HttpSession>)context.getAttribute("list");
//错误在这里,里面的return;会跳出lambda表达式,而且这个return毫无作用
list.forEach((HttpSession s)->{
if(s == currentSession){
return;
}
});
list.add(currentSession);
}
}
上面的错误在于在lambda表达式里面写上return,最后会跳出lambda表达式。
如果想跳出方法,就写成一般的循环即可
public void function(){
for(HttpSession s:list){
if(s == currentSession){
return;
}
}
}
就写成上面即可。