我是用session做的登陆页面~
我用清除session的方法来实现注销
可是在注销之后 我点后退按钮 然后再刷新 注销的用户又自动登陆了 ~~
解决方案 »
- java.lang.NullPointerException的问题??
- hibernate报错 database product name cannot be null,求救
- 哎, 这个,到底要怎么办呢?(下载文件中文件名的乱码问题)
- 如何读取地址栏中的信息呀
- 完全免费-CSDN Direct精简版,看贴飞快,保存帖子为HTML页面,程序内嵌回复,自动登陆……
- 高手帮我看看源程序有什么问题吗??我在线等着。谢拉
- 有关org.apache.poi包
- JSP书籍?
- 怎样使用javamail发送带有html格式信息的文件
- weblogic+oracle8 平台,请教如何存入上载的文件到数据库中??急!
- 我需要定时的把一个表中的数据传送到另一张表中,并清空原来的表。两表字段一样。怎么处理呢?我的数据库是sql2000 ,编程语言是java
- 怎样在myeclipse中运行jsp程序?
1.session确实destroy了么?
2.后退刷新的时候,对session进行检查了么?
第二步要对session检查什么东西啊,怎么检查?
* 登出
*/
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/** 清除session中的用户信息并销毁当前session */
request.getSession().removeAttribute("user");
request.getSession().removeAttribute("modules");
request.getSession().removeAttribute("functions");
request.getSession().removeAttribute("allUsers");
request.getSession().invalidate();
response.sendRedirect("/SIMS/index.jsp");
return null;
}这个后退是通过 浏览器 回到上一个页面,你那样操作当然能回到之前的页面,我想你控制不了这个吧,但是你的session里的user确实已经没有了,你可以测试一下,从session中获取一下user的信息看看。
比如你的页面验证是否登陆信息为userid,则在你的登陆页面里面加入如下代码
session.setAttribute("userid",null);
session.setAttribute("userid",user);
//注销
session.removeAttribute("userid");
//登陆的时候判断session的userid 是不是为空就行了
1.登录的时候你肯定是要拿到session id,然后还有用户等等.如果你session销毁了,再次刷新的时候session应该不会相同了吧..session id应该也不会相同了.所以你要判断session id是否相等..
{
private static final long serialVersionUID = 1L;
public void init(FilterConfig filterConfig) throws ServletException
{
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
RequestDispatcher dispatcher = request.getRequestDispatcher("KK_BlacklistVehicle_UserLogin.jsp");//这里设置如果没有登陆将要转发到的页面
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
// System.out.println(((HttpServletRequest) request).getRequestURI());
// 从session里取的用户名信息
String username = (String) session.getAttribute("sessionKK_BlacklistVehicle_UserLogin_ID");//这里获取session,为了检查session里有没有保存用户信息,没有的话回转发到登陆页面
// 判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username))
{
// 跳转到登陆页面
dispatcher.forward(request,response);
// System.out.println("用户没有登陆,不允许操作");
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",0);
res.setHeader("Pragma","no-cache");
}
else
{
// 已经登陆,继续此次请求
chain.doFilter(request,response);
// System.out.println("用户已经登陆,允许操作");
}
}
public void destroy()
{
}
}
第二步注销:
/**
* 登出
*/
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/** 清除session中的用户信息并销毁当前session */
request.getSession().removeAttribute("user");
request.getSession().invalidate();
response.sendRedirect("/SIMS/index.jsp");
return null;
}