session.removeAttribute(“sessionname”)是清除SESSION里的某个属性.
session.invalidate()是让SESSION失效.
或许你可以用getAttributeNames来得到所有属性名,然后再removeAttribute
我是如下在Spring中实现的:
private void initSession(HttpServletRequest request){
Enumeration em = request.getSession().getAttributeNames();
while(em.hasMoreElements()){
request.getSession().removeAttribute(em.nextElement().toString());
}
}
第一种方法(继承SessionAware类来取得session,然后用invalidate()方法清理)
public class ExitAction extends ActionSupport implements SessionAware{
@Override
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session1 = request.getSession();
session1.invalidate();
return super.execute();
}
public void setSession(Map arg0) {
}
}
//第二种方法(用ActionContext取session,然后用clear()方法清理)
public class ExitAction extends ActionSupport{
@Override
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.remove("buser");
session.remove("guser");
session.remove("fuser");
return super.execute();
}
}
jsp:
session.invalidate(); 清空了session中的所有的值
而session.removeAttribute("aaaa")只清空了session 对应的的某个属性
<%
Lduser lduser = (Lduser) ActionContext.getContext().getSession().get("lduser");
if (lduser == null) {
session.putValue("lduser",null);
out.println("session以关闭");
%>
jsp获取action传来的session值问题有一下几种方法:
比如我action中有个session (“sessionid”,”sessionValue”)
一、用struts标签获取:
二、<%=request.getSession.getAttribute(“sessionid”);>session也是内置对象之一,可以直接用session,比request.getSession方便多了
也可以写成<%=session.getAttribute(“sessionid”);>
三、el表达式获取:
sessionScope.sessionid如果赋值的是个bean,也是一样的,类似于
{sessionScope.bean.beanProperty}
一般session的时间是30分钟,如果判断session是否存在
<%
String id = “”;
String username = “”;
User user = (User)session.getValue(“docUser”);
//判断user是否为空,如果不为空才操作以下。不然会报空指针异常。
if(user != null){
id = user.getId();
username = user.getUsername();
}
%>
也可以清空session获取到session然后把他的值设置为null<%
Lduser lduser = (Lduser) ActionContext.getContext().getSession().get(“lduser”);
if (lduser == null) {
session.putValue(“lduser”,null);
out.println(“session以关闭”);
%>