struts 用户退出问题 1.可以写一个Action来处理用户退出2.可以用Session的invalidate()方法将session清除3.这个跟防止重复提交差不多,搜一搜网上都是。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你清空了session之后,你后退也是没有用的,你必须先判断session里是否包含了登陆信息。 没有用的 session清空不了.试了很多办法~ 所谓的清空session,把原来放进去的东西设置为null不就可以了? session怎么会清不掉的?你把你的代码贴出来看看,记得用高亮 session是可以设为null可是就算session设为null了缓存里还是留着这个用户访问过的页面,后悔的话还是可以看到这个用户去过的页面的网上一搜用户退出全是正确优雅的解决struts,jsp用户退出问题,文章我是看了,也正是我想要的那种解决办法,可是我做不出来,谁能帮我做出来啊,我怎么弄上去就不好使的还有我写了Action可是退出的按钮怎么去访问这个action?我这样写好象不对呢?jsp<html:button property="PassWordBackOutButton" onclick="PassWordBackOutJavaScript();">退出</html:button>function PassWordBackOutJavaScript(){ document.forms[0].action='Base.do' ; document.forms[0].submit();}struts-config.xml<action input="/PassWordUpdate.jsp" path="/Base" scope="request" type="struts.action.BaseAction" validate="true"> <forward name="sessionEnded" path="/UserLogin.jsp" /> </action>Actionpackage struts.action;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;public abstract class BaseAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException { response.setHeader( "Cache-Control" , "no-cache" ); response.setHeader( "Cache-Control" , "no-store" ); response.setDateHeader( "Expires" , 0); response.setHeader( "Pragma" , "no-cache" ); if (!this.userIsLoggedIn(request)) { ActionErrors errors = new ActionErrors(); errors.add( "error" , new ActionError( "logon.sessionEnded" )); this.saveErrors(request, errors); return mapping.findForward( "sessionEnded" ); } return executeAction(mapping,form,request,response); } protected abstract ActionForward executeAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException; private boolean userIsLoggedIn(HttpServletRequest request) { if (request.getSession().getAttribute( "sessionUserName" ) == null) { return false; } return true; }} 针对登录与否的判断可以写在Filter里面,这样所有的访问都可以被Filter截获最好用户推出以后把session销毁掉,而不是只把一个属性置空。 同时可以用head里面的属性来指定不使用缓存 判断是否登陆的Filter写完了先抛开后退按钮能不能写个退出按钮和一个销毁session的Filter给我啊实在是不会写了,脑袋一点都不转了 session销毁用action来做就在execute方法里面request.getSession().invalidate();或者更简单,不配ActionForm什么的那些,弄个jsp,里面<% request.getSession().invalidate() %>然后再redirect退出按扭就弄个超链接就行了 我想销毁session后按浏览器的后退按钮也回不到曾访问过的页面只要清除缓存就可以 response.setHeader( "Cache-Control" , "no-cache" ); response.setHeader( "Cache-Control" , "no-store" ); response.setDateHeader( "Expires" , 0); response.setHeader( "Pragma" , "no-cache" ); 这就是清除缓存,可是我怎么按下按钮就找到这个action呀<action input="/PassWordUpdate.jsp" path="/Base" scope="request" type="struts.action.BaseAction" validate="true"> <forward name="sessionEnded" path="/UserLogin.jsp" /> </action> 我这么配怎么就不对呢?谁告诉我怎么配呀 response.setHeader( "Cache-Control" , "no-cache" ); response.setHeader( "Cache-Control" , "no-store" ); response.setDateHeader( "Expires" , 0); response.setHeader( "Pragma" , "no-cache" ); 干吗要用上面这种方法呢?你把所有jsp页面的头都设成这些不就完了么还是上面说的,要用Action来处理退出就必须给按钮单独弄个form,这个form指向"/Base.do",要不就弄个LookupDispatchAction,就可以把按钮都放到一个Action中了。再不就按我上面说的弄个超链接,链接到"/Base.do"去,或者就是个jsp处理一下 用这个onclick="window.location='/Base.do'"或者onclick="window.location='./Base.do'"可以作按钮的提交路径 清楚Session后,后退就会提示页面以过期. 是啊清除session后,按后退就提示页面过期了,我试试连个action试试吧,郁闷了,昨天一开始连action不好使,出错 HTTP Status 404 - /Base.do--------------------------------------------------------------------------------type Status reportmessage /Base.dodescription The requested resource (/Base.do) is not available.--------------------------------------------------------------------------------Apache Tomcat/5.5.17404错误我怎么就没觉得哪个路径配置错了呢???帮忙啊大哥们,一个退出弄两天了,55555555555struts-config.xml配置<action input="/PassWordUpdate.jsp" path="/Base" scope="request" type="struts.action.BaseAction" validate="true"> <forward name="sessionEnded" path="/UserLogin.jsp" /> </action> 我看到你配了validate,你是不是验证文件没写全?至于找不到页面,你必须把设计到的几个文件说下路径/ jsp<html:button property="ProtectListBackOutButton" onclick="ProtectListBackOutJavaScript();">退出</html:button>function ProtectListBackOutJavaScript(){ window.location.href = "BackOut.jsp" ;}BackOut.jsp <body> <% session.invalidate(); response.sendRedirect("UserLogin.jsp"); %> </body>formpublic ActionErrors validate(ActionMapping mapping,HttpServletRequest request) { ActionErrors errors = new ActionErrors() ; if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName"))) { errors.add("error",new ActionMessage("session.null")) ; mapping.findForward("sessionEnded"); } else { // 保护名单 if(protectListBrandNumberInput==null||"".equals(protectListBrandNumberInput)) { errors.add("errorProtectList",new ActionMessage("protectListBrandNumberInput.null")) ; } else { if(protectListBrandNumberInput.length()!=5) { errors.add("errorProtectList",new ActionMessage("protectListBrandNumberInput.leng")) ; } } } return errors; }相应action:public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName"))) { return mapping.findForward("sessionEnded"); } else { } ProtectListForm protectListForm = (ProtectListForm) form;public ActionErrors validate(ActionMapping mapping, HttpServletRequest request,HttpServletResponse response) { ActionErrors errors = new ActionErrors() ; if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName"))) { errors.add("error",new ActionMessage("session.null")) ; mapping.findForward("sessionEnded"); }这样在用户退出之后,可以返回到去过的页面,但是不能有任何操作,一进行操作的话就会返回到登陆页面 SSH中使用插件GooUploader批量上传图片调用Action不成功求助 求教Java 获得当前日期的上月时间 java检查性异常和运行异常有什么区别 怎么关掉window xp 的防火墙 JAR 打包为什么一直运行 面试题 加入我们Boat软件开发团队,让我们一起创业吧!(注意,这不是那些该死的公司招聘广告) 应用STRUTS中,TOMCAT启动的严重错误 tomcat下,我得.jar文件放哪里啊,才可以搜索到,放在classes下可以吗? java子类放大、缩小父类访问权限问题? hibernate 一对多插入数据失败 常用的JAVA企业级的编译工具是什么?
可是就算session设为null了
缓存里还是留着这个用户访问过的页面,后悔的话还是可以看到这个用户去过的页面的
网上一搜用户退出全是正确优雅的解决struts,jsp用户退出问题,文章我是看了,也正是我想要的那种解决办法,可是我做不出来,谁能帮我做出来啊,我怎么弄上去就不好使的
还有
我写了Action
可是退出的按钮怎么去访问这个action?
我这样写好象不对呢?
jsp
<html:button property="PassWordBackOutButton" onclick="PassWordBackOutJavaScript();">退出</html:button>
function PassWordBackOutJavaScript()
{
document.forms[0].action='Base.do' ;
document.forms[0].submit();
}struts-config.xml
<action
input="/PassWordUpdate.jsp"
path="/Base"
scope="request"
type="struts.action.BaseAction"
validate="true">
<forward name="sessionEnded" path="/UserLogin.jsp" />
</action>
Action
package struts.action;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;public abstract class BaseAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException
{
response.setHeader( "Cache-Control" , "no-cache" );
response.setHeader( "Cache-Control" , "no-store" );
response.setDateHeader( "Expires" , 0);
response.setHeader( "Pragma" , "no-cache" ); if (!this.userIsLoggedIn(request))
{
ActionErrors errors = new ActionErrors();
errors.add( "error" , new ActionError( "logon.sessionEnded" ));
this.saveErrors(request, errors); return mapping.findForward( "sessionEnded" );
}
return executeAction(mapping,form,request,response);
}
protected abstract ActionForward executeAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException;
private boolean userIsLoggedIn(HttpServletRequest request)
{
if (request.getSession().getAttribute( "sessionUserName" ) == null)
{
return false;
}
return true;
}
}
最好用户推出以后把session销毁掉,而不是只把一个属性置空。
先抛开后退按钮
能不能写个退出按钮和一个销毁session的Filter给我啊
实在是不会写了,脑袋一点都不转了
就在execute方法里面
request.getSession().invalidate();或者更简单,不配ActionForm什么的那些,弄个jsp,里面
<% request.getSession().invalidate() %>
然后再redirect
退出按扭就弄个超链接就行了
只要清除缓存就可以
response.setHeader( "Cache-Control" , "no-cache" );
response.setHeader( "Cache-Control" , "no-store" );
response.setDateHeader( "Expires" , 0);
response.setHeader( "Pragma" , "no-cache" );
这就是清除缓存,可是我怎么按下按钮就找到这个action呀
<action
input="/PassWordUpdate.jsp"
path="/Base"
scope="request"
type="struts.action.BaseAction"
validate="true">
<forward name="sessionEnded" path="/UserLogin.jsp" />
</action>
我这么配怎么就不对呢?谁告诉我怎么配呀
response.setHeader( "Cache-Control" , "no-store" );
response.setDateHeader( "Expires" , 0);
response.setHeader( "Pragma" , "no-cache" );
干吗要用上面这种方法呢?你把所有jsp页面的头都设成这些不就完了么
还是上面说的,要用Action来处理退出就必须给按钮单独弄个form,这个form指向"/Base.do",
要不就弄个LookupDispatchAction,就可以把按钮都放到一个Action中了。再不就按我上面说的弄个超链接,链接到"/Base.do"去,或者就是个jsp处理一下
清除session后,按后退就提示页面过期了,我试试连个action试试吧,郁闷了,昨天一开始连action不好使,出错
--------------------------------------------------------------------------------Apache Tomcat/5.5.17404错误
我怎么就没觉得哪个路径配置错了呢???
帮忙啊大哥们,一个退出弄两天了,55555555555
struts-config.xml配置<action
input="/PassWordUpdate.jsp"
path="/Base"
scope="request"
type="struts.action.BaseAction"
validate="true">
<forward name="sessionEnded" path="/UserLogin.jsp" />
</action>
function ProtectListBackOutJavaScript()
{
window.location.href = "BackOut.jsp" ;
}BackOut.jsp <body>
<%
session.invalidate();
response.sendRedirect("UserLogin.jsp");
%>
</body>formpublic ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
ActionErrors errors = new ActionErrors() ;
if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName")))
{
errors.add("error",new ActionMessage("session.null")) ;
mapping.findForward("sessionEnded");
}
else
{
// 保护名单
if(protectListBrandNumberInput==null||"".equals(protectListBrandNumberInput))
{
errors.add("errorProtectList",new ActionMessage("protectListBrandNumberInput.null")) ;
}
else
{
if(protectListBrandNumberInput.length()!=5)
{
errors.add("errorProtectList",new ActionMessage("protectListBrandNumberInput.leng")) ;
}
}
}
return errors;
}相应action:public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName")))
{
return mapping.findForward("sessionEnded");
}
else
{
}
ProtectListForm protectListForm = (ProtectListForm) form;
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request,HttpServletResponse response) {
ActionErrors errors = new ActionErrors() ;
if (request.getSession().getAttribute("sessionUserName")==null||"".equals(request.getSession().getAttribute("sessionUserName")))
{
errors.add("error",new ActionMessage("session.null")) ;
mapping.findForward("sessionEnded");
}
这样在用户退出之后,可以返回到去过的页面,但是不能有任何操作,一进行操作的话就会返回到登陆页面