1.可以写一个Action来处理用户退出
2.可以用Session的invalidate()方法将session清除
3.这个跟防止重复提交差不多,搜一搜网上都是。
2.可以用Session的invalidate()方法将session清除
3.这个跟防止重复提交差不多,搜一搜网上都是。
解决方案 »
- log4j用DailyRollingFileAppender每半天切换一个文件,切换了,还是在写老日志文件
- 请问数据库表中的冗余字段的作用?
- jquery ajax局部刷新uri问题。
- 自定义标签的问题
- 请大家进来讨论:java大型项目中适合引入模板引擎吗?(散分)
- Cookie,自动登录
- 两个Tomcat服务器同时在一台PC里运行时, 环境变量CataLina_home怎样设置呢?(帮帮忙)
- 如何对大型web站点的中间层进行性能优化??
- EJB的好书,请推荐,我看了<精通EJB2.0>,好薄哟!!
- 求助,FTP下载不了文件的问题
- 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");
}
这样在用户退出之后,可以返回到去过的页面,但是不能有任何操作,一进行操作的话就会返回到登陆页面