怎么实现用户退出功能,退出后按浏览器后退按钮,返回的是用户登录界面 点浏览器上的回退,到原来的画面是正常的,可你要是用session判断,就算退到原来的页面,画面应该不能操作了吧,一操作就可以根据有无session存在来迁移到登录画面。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是像CSDN啊,淘宝啊,一旦退出返回的都是登录画面,,不是页面已过期貌似,想知道下具体怎么做,还有就是我是用FORM属性来传递页面和后台的参数的,不是像INPUT那种控件写name,在后台用接受参数的方式传递的,也可以用注销session的方式来做注销功能么 看下我的博客中关于session注销的问题就解决了,可以增加一个按钮,作为退出按钮,点击时触发一个事件,在事件里把session注销,这样再返回时就重定向到登录界面了,那篇博客中有具体代码,这里就不贴代码了 HttpSession session = request.getSession(false); session.invalidate(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 跳转到初始登录界面 response.sendRedirect("login.jsp"); 这段代码卸载退出按钮触发的那个action里么,现在我在action是这样写的@Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.getSession().invalidate(); return mapping.findForward("success"); }能说的详细点么,一直做的都是登录,没接触过注销,先谢谢了 点击注销,进入action清空Session,跳转到login.jspClear.Session(); 浏览器的后退退回到原来的页面是正常的,如果你不想要原来的页面,可用ajax实现提交,还有在每个提交的action都判断一下当前session是否失效,来决定跳转与否 还没有,,试了好多都弄不出想CSDN这种效果 登录成功后的页面,可以判断session是否有效,无效就返回login.jsp 点击注销 就在action里面 session.invalidate();然后跳转jsp页面 这个是我写的注销的actionpublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.getSession().invalidate(); HttpSession session = request.getSession(false); session.invalidate(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 跳转到初始登录界面 response.sendRedirect("login.jsp"); return mapping.findForward("success"); }是这样覆盖方法,还是自己写一个构造函数 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(false); request.getSession().invalidate(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 跳转到初始登录界面 if(session==null||session.equals("")) { return mapping.findForward("success"); } return mapping.findForward("success"); }这样写可以么 现在这样写的public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(false); session.removeAttribute("perEmail"); request.getSession().invalidate(); // 跳转到初始登录界面 if(request.getSession(false)==null) { return mapping.findForward("self"); } return mapping.findForward("success"); }跳转的时候是跳转到self了,但回退还是一样session.removeAttribute("perEmail");这里的perEmail是FORM里面设置的属性在登录的action里response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); 还有,我想问下,用struts框架的时候,struts框架是不是在验证用户通过的时候会自动的生成一个session,也就是说,虽然我们没有去设置这个session,但框架是自己生成这个session的 不是的,只有自己存进session,才会在存在session中的 判断用户信息正确,注入session这样对么HttpSession session = request.getSession();session.setAttribute("customerInfo", vmform.getPerEmail()); 然后这个session进去的信息只要不注销,后台都能取到? 我在登录成功后设入session,然后在退出的action中vmtaForm vmform=(vmtaForm)form;HttpSession session = request.getSession();String a=(String)session.getAttribute("customerInfo");System.out.printf("这个是为注销前的session"+a);session.removeAttribute(vmform.getPerEmail());request.getSession().invalidate();String b=(String)session.getAttribute("customerInfo");System.out.printf("这个是为注销后的session"+b);// 跳转到初始登录界面 if(request.getSession(false)==null){ return mapping.findForward("success"); }return null;一开始可以打印出刚开始设入的值,也就是说session确实存在于整个会话中,当我用session.removeAttribute(vmform.getPerEmail());request.getSession().invalidate();后,不能打印出值,页面提示Session already invalidated已经注销,这样子的退出算已经注销了么,回退还有作用么,求解答 我点退出,进入退出的action,打印出了用户的用户名,然后在浏览器中点回退,又回到了登录后的画面,此时再点退出,打印出session已经为空这个是为注销前的session:*********@qq.com这个是为注销前的session:null回退后再点退出,不能打印出session,是不是说明已经注销了,不会造成那种用户还处在登录状态 注销session然后做一个过滤器 当session为空的情况下自动跳转登录页面 点击退出后走的是退出的action是forward到登录画面的,但是有一个问题就是用户可以点击浏览器的回退按钮,又回到了第一次登录成功的画面,做不出像CSDN这种一旦点注销,就算你回退也是回到登录画面 你做一个过滤器呢?判断session是否存在,如果不存在 自动跳转到登录页面 过滤器,是指spring security这种么,还是写一个.java文件,凡遇到session为空的时候,都让他返回登录画面,这个需要在struts-config.xml中配置么 可以写一个.java文件 遇到session为空的时候返回登录画面,然后在web.xml文件内加载这个文件 session清楚直接跳转到EXIT页面<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html> <head> </head> <body> <% session.invalidate(); response.sendRedirect("login.jsp"); %> </body></html> 这个需要登录Session机制的配合,每次用户访问特殊页面,都需要查看Session,看用户是否已经登录。如果发现还未登录,则进行页面的重定向,redirect到登录页面,让用户进行登录。注销以后,session为空,再次访问这些页面,就自动判断未登录,也就跑到登录界面了。 我是感觉做过滤器的方法应该可以实现这个功能,不过现在没有用这个做,而是直接在注销session后跳转登录界面,在jsp页面上阻止用户使用回退按钮,无论怎么回退都跳转同指定页面 logout之后可以跳转到你登录成功后的页面,应为你在登录成功后的页面已经有sessionCheck。一但跳到这个页面会自动跳转到登录页面,并且没法返回了……。我就这么做的 今天也在弄这个,网上看了很多,感觉最快捷方便的就是用js在登入后的主页加 location.replace("outLogon"); //outLogon即是你所要转的退出登录的Action地址具体参考http://www.thinksaas.cn/group/topic/322806/http://llyzq.iteye.com/blog/1042816 Hibernate 一对多映射map子数据未保存问题 求助,这段代码中的alert不运行怎么回事?在手机浏览器上做的测试 Eclipse插件求助--Dali JPA或WTP的安装 代理服务器缓存造成内网登陆混论问题 连接SQL JbuilderX能否使用Tomcat5.5 如何在href链接中传递带+号的参数 来接分吧.有个小问题.顺便来谈谈你的想法 checkbox与multibox有什么区别 各位大大,帮我看看,谢谢。在线等待。 EL表达式取值问题我的某个属性是个类。如何取 进来看看这个是什么问题,在自己的机可以运行,拿去服务器就这个样了
session.invalidate();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 跳转到初始登录界面
response.sendRedirect("login.jsp");
这段代码卸载退出按钮触发的那个action里么,现在我在action是这样写的
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.getSession().invalidate();
return mapping.findForward("success");
}
能说的详细点么,一直做的都是登录,没接触过注销,先谢谢了
Clear.Session();
点击注销 就在action里面 session.invalidate();
然后跳转jsp页面
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.getSession().invalidate();
HttpSession session = request.getSession(false);
session.invalidate();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 跳转到初始登录界面
response.sendRedirect("login.jsp");
return mapping.findForward("success");
}
是这样覆盖方法,还是自己写一个构造函数
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession(false);
request.getSession().invalidate();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 跳转到初始登录界面
if(session==null||session.equals(""))
{
return mapping.findForward("success");
} return mapping.findForward("success");
}
这样写可以么
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession(false);
session.removeAttribute("perEmail");
request.getSession().invalidate();
// 跳转到初始登录界面
if(request.getSession(false)==null)
{
return mapping.findForward("self");
} return mapping.findForward("success");
}
跳转的时候是跳转到self了,但回退还是一样session.removeAttribute("perEmail");这里的perEmail是FORM里面设置的属性
在登录的action里
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
HttpSession session = request.getSession();
session.setAttribute("customerInfo", vmform.getPerEmail());
然后这个session进去的信息只要不注销,后台都能取到?
vmtaForm vmform=(vmtaForm)form;
HttpSession session = request.getSession();
String a=(String)session.getAttribute("customerInfo");
System.out.printf("这个是为注销前的session"+a);
session.removeAttribute(vmform.getPerEmail());
request.getSession().invalidate();
String b=(String)session.getAttribute("customerInfo");
System.out.printf("这个是为注销后的session"+b);
// 跳转到初始登录界面
if(request.getSession(false)==null)
{
return mapping.findForward("success");
}
return null;
一开始可以打印出刚开始设入的值,也就是说session确实存在于整个会话中,当我用
session.removeAttribute(vmform.getPerEmail());
request.getSession().invalidate();
后,不能打印出值,页面提示Session already invalidated
已经注销,这样子的退出算已经注销了么,回退还有作用么,求解答
这个是为注销前的session:*********@qq.com这个是为注销前的session:null
回退后再点退出,不能打印出session,是不是说明已经注销了,不会造成那种用户还处在登录状态
然后做一个过滤器 当session为空的情况下自动跳转登录页面
你做一个过滤器呢?
判断session是否存在,如果不存在 自动跳转到登录页面
可以写一个.java文件 遇到session为空的时候返回登录画面,
然后在web.xml文件内加载这个文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html>
<head> </head>
<body>
<%
session.invalidate();
response.sendRedirect("login.jsp");
%>
</body>
</html>
js在登入后的主页加 location.replace("outLogon"); //outLogon即是你所要转的退出登录的Action地址
具体参考
http://www.thinksaas.cn/group/topic/322806/
http://llyzq.iteye.com/blog/1042816