问题描述
我现在在做一个系统,我想让点击“退出”链接后就把用户导航到登陆界面,并且通过“退出”链接触发js方法使session失效,达到用户必须登陆才能再进入系统。我“退出”触发的js方法中调用了setAttribute("user",null),session.invalidate()等方法都不管用,因为页面的其他地方也用到了session传递的参数,导致其他用到session的地方出错。我的问题是:怎样达到点击“退出”链接后退出系统并且使该用户必须在登陆才能进入系统?是通过使session失效吗?怎么做呢?求大侠指导、指导~
解决方案
解决方案二:
点按钮跳action中清session在跳系统主页面
解决方案三:
登录的时候,做点处理,叫浏览器不缓存,这样用户按“后退”也看不到主界面Listing1//...//initializeRequestDispatcherobject;setforwardtohomepagebydefaultRequestDispatcherrd=request.getRequestDispatcher("home.jsp");//Prepareconnectionandstatementrs=stmt.executeQuery("selectpasswordfromUSERwhereuserName='"+userName+"'");if(rs.next()){ //Queryonlyreturns1recordintheresultset;only1 passwordperuserNamewhichisalsotheprimarykey if(rs.getString("password").equals(password)){//Ifvalidpassword session.setAttribute("User",userName);//Savesusernamestringinthesessionobject } else{//Passworddoesnotmatch,i.e.,invaliduserpassword request.setAttribute("Error","Invalidpassword."); rd=request.getRequestDispatcher("login.jsp"); }}//Norecordintheresultset,i.e.,invalidusernameelse{ request.setAttribute("Error","Invalidusername."); rd=request.getRequestDispatcher("login.jsp");}}//Asacontroller,loginAction.jspfinallyeitherforwardsto"login.jsp"or"home.jsp"rd.forward(request,response);//...
退出就方便了Listing2//...session.removeAttribute("User");session.invalidate();//...
解决方案四:
直接session.removeAttribute("User");
解决方案五:
谢谢几位,我有点思路啦,谢谢啊