当前位置:编程学习 > html/css >>

用户退出和退出后按后退按钮又可以操作的问题

用户退出解决办法:  
在JSP里写  
Html代码   
<html:button property="PassWordBackOutButton" ="PassWordBackOutJava();">退出</html:button>   
VehicleDriveManageInte易做图ceBackOutJava()   
{   
  location.href = "BackOut.jsp" ;   
}   
<html:button property="PassWordBackOutButton" ="PassWordBackOutJava();">退出</html:button> 
VehicleDriveManageInte易做图ceBackOutJava() 

  location.href = "BackOut.jsp" ; 

 
BackOut.jsp为我定义的清空session的代码,代码如下:  
Html代码   
<%    
session.invalidate();  //这行为清空session   
response.sendRedirect("UserLogin.jsp");//这行为转到的页面,我设置转到登陆页面   
%>   
<%  
session.invalidate();  //这行为清空session 
response.sendRedirect("UserLogin.jsp");//这行为转到的页面,我设置转到登陆页面 
%> 
好,用户退出功能完成,可是退出之后,按下后退按钮,看到了登陆时看过的页面,试着往文本框里输入了值,点提交,汗,提交成功了,这个是大事了,开始找解决办法,找来找去,暂时只有禁止缓存了,禁止缓存的方法为:  
 
在想禁止缓存的页面的<body></body>里加入:  
Html代码   
<%      
  response.setHeader("Pragma","No-cache");        
  response.setHeader("Cache-Control","no-cache");        
  response.setDateHeader("Expires",0);      
  %>   
<%    
  response.setHeader("Pragma","No-cache");      
  response.setHeader("Cache-Control","no-cache");      
  response.setDateHeader("Expires",0);    
  %> 
 
即 
Html代码   
:<body>   
<%      
  response.setHeader("Pragma","No-cache");        
  response.setHeader("Cache-Control","no-cache");        
  response.setDateHeader("Expires",0);      
  %>   
</body>   
:<body> 
<%    
  response.setHeader("Pragma","No-cache");      
  response.setHeader("Cache-Control","no-cache");      
  response.setDateHeader("Expires",0);    
  %> 
</body> 
 
如果不管用,可以在Filter里也加上  
 
Java代码   
esponse.setHeader("Pragma","No-cache");        
response.setHeader("Cache-Control","no-cache");        
response.setDateHeader("Expires",0);      
esponse.setHeader("Pragma","No-cache");      
response.setHeader("Cache-Control","no-cache");      
response.setDateHeader("Expires",0);    
 
这样退出后再后退就不会访问到登陆时能看到的页面了,可是有一个缺点,就是禁止了缓存,每次执行一个页面的时候,都要重新提交,占资源,速度也会变慢,解决办法,有待进一步去发现,而且这样有一个非常重大的缺陷,就是用户在登陆的时候,如果提交了页面,再按后退的话,就会显示页面过期,所以,12 月23号上班,我又改进了一下用户退出,不禁止缓存了,现在的用户退出是,用户退出之后可以访问曾看过的页面,但是不可以提交东西了,如果填写的东西满足 errors的判断,一提交,就会返回到登陆页面,如果不满足errors判断的,就显示,请登陆后在进行操作。下面是实现的方法  
 
有退出按钮的jsp  
Html代码   
<html:button property="ProtectListBackOutButton" ="ProtectListBackOutJava();">退出</html:button>   
ProtectListBackOutJava()   
{   
  location.href = "BackOut.jsp" ;   
}   
<html:button property="ProtectListBackOutButton" ="ProtectListBackOutJava();">退出</html:button> 
ProtectListBackOutJava() 

  location.href = "BackOut.jsp" ; 

 
BackOut.jsp  //就是有退出功能的jsp  
 
 
Html代码   
<body>   
    <%    
    session.removeAttribute("sessionUserName");      
  session.removeAttribute("UserLogin.do");    
    session.invalidate();   
    response.sendRedirect("UserLogin.jsp");   
       
   response.setHeader("Cache-Control","no-store");          
 response.setDateHeader("Expires",0);          
 response.setHeader("Pragma","no-cache");   
    %>   
  </body>   
<body> 
    <%  
    session.removeAttribute("sessionUserName");    
  session.removeAttribute("UserLogin.do");  
    session.invalidate(); 
    response.sendRedirect("UserLogin.jsp"); 
     
   response.setHeader("Cache-Control","no-store");        
 response.setDateHeader("Expires",0);        
 response.setHeader("Pragma","no-cache"); 
    %> 
  </body> 
 
相应的form  
 
 
Java代码   
public Actis validate(ActionMapping mapping,   
   HttpServletRequest request) {   
  Actis errors = new Actis() ;   
  if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName")))    
     {   
   errors.add("error",new ActionMessage(

补充:web前端 , HTML/CSS  ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,