点集贵州电脑网
 
 
 梦想之源 ›› 灌水专区 ›› logout 版主:
灌水专区
新建论坛
申请免费TS
1 / 1 页
<< 1 >>
跳转
 主题:logout
 
 lele
发表时间:[2007-12-07 15:36:01] [向作者发站内短信] [复制链接告诉朋友]
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0

 public IPage logout(IRequestCycle cycle) {
  LoginPage page = null;
  // 必须执行销毁session、清理系统资源的操作
  // 正确执行退出操作之后才可以跳转
  // 如果session存在
 
   SessionImplPO oo = getPrivilegeResult();
   oo.setPassword(null);

   oo.setPrivilegeSet(null);
   oo.setRefeshinterval(null);
   oo.setUserid(null);
   oo = null;
 
   page = (LoginPage) cycle.getPage("Login");
   cycle.getRequestContext().getSession().invalidate();
   return page;
 }
这是个退出方法 

主要是销毁session 似乎是能清掉session

但是我希望在退出系统前进行确认,如下

<script language="javascript">
function logout(){
 if(confirm("确认关闭系统?")){
 
 window.location.href="/application/Main,Head.logout.sdirect";
 
 }

}
</script>

这里就出了问题,推出后,就在也登陆不了,application/Main,Head.logout.sdirect这个就是登陆后,进入主页面的链接

目的就是 在退出系统前,确认下,然后,清除session,回到原始登陆页面login


 楼主更多新贴 :  
灌水专区jfreechart图形上的链接
灌水专区itemselection的问题
灌水专区ognl:devicegroup.id
灌水专区foreach的问题
  楼1  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2007-12-07 15:51:10] [向作者发站内短信] [复制链接告诉朋友]

 // 取出系统中已经存在的session
 @InjectState("SessionImplPO")
 // 判断session是否存在
 public abstract SessionImplPO getPrivilegeResult();

 @InjectStateFlag("SessionImplPO")
 public abstract boolean isSessionExists();

还有获取session的  忘记贴上来了

  楼2  
等 级:列兵
经 验:498
性 别:帅哥
文 章:138
精 华:0
 lele
发表时间:[2007-12-07 16:18:24] [向作者发站内短信] [复制链接告诉朋友]

问题似乎已经解决了

function logout(){
 if(confirm("确认关闭系统?")){
 
 window.location.href="/application/logout.svc";
 
 }

}

 

然后我写了一个logout service

package com.longcredit.KEye.app.business;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.services.CookieSource;
import org.apache.tapestry.services.LinkFactory;
import org.apache.tapestry.services.ServiceConstants;

public class LogoutService implements IEngineService {

    private Log _log;

  
    private HttpServletRequest _request;

 
    private HttpServletResponse _response;

 
    private LinkFactory _linkFactory;


    private String _servletPath;
   
   
    @SuppressWarnings("unchecked")
    public ILink getLink(boolean post, Object parameter)
    {
        //该服务允许带参数,所以屏蔽以下两句,若不允许带参数取消注释
        // if (parameter != null)
        // throw new IllegalArgumentException(EngineMessages.serviceNoParameter(this));

        Map parameters = new HashMap();
        //key必须为ServiceConstants所指定的key,否则会有异常
        parameters.put(ServiceConstants.SERVICE, getName());
        //其中parameter参数为,@ServiceLink组件的parameters
        parameters.put(ServiceConstants.PARAMETER,parameter);
        return _linkFactory.constructLink(this, post, parameters, true);
    }

   
    public void service(IRequestCycle cycle) throws IOException
    {
        String serviceName = cycle.getParameter(ServiceConstants.SERVICE);
        System.out.println(serviceName);
        HttpSession session = _request.getSession(false);
       
        //注销清除cookie
        CookieSource cookieSource=cycle.getInfrastructure().getCookieSource();
        //获得@ServiceLink组件的parameters
        Object[] obj=_linkFactory.extractListenerParameters(cycle);
        for (Object object : obj) {
            cookieSource.removeCookieValue((String)object);
        }
       
        if (session != null)
        {
            try
            {
                session.invalidate();
            }
            catch (IllegalStateException ex)
            {
                _log.warn("Exception thrown invalidating HttpSession.", ex);

                // Otherwise, ignore it.
            }
        }

        String url = cycle.getAbsoluteURL(_servletPath);

        _response.sendRedirect(url);
    }

    //指定该service的名字
    public String getName()
    {
        return "logout";
    }

    /** @since 4.0 */
    public void setLog(Log log)
    {
        _log = log;
    }

    /** @since 4.0 */
    public void setRequest(HttpServletRequest request)
    {
        _request = request;
    }

    /** @since 4.0 */
    public void setResponse(HttpServletResponse response)
    {
        _response = response;
    }

    /** @since 4.0 */
    public void setLinkFactory(LinkFactory linkFactory)
    {
        _linkFactory = linkFactory;
    }

    /** @since 4.0 */
    public void setServletPath(String servletPath)
    {
        _servletPath = servletPath;
    }
}

但是不是太理解

  楼3  
等 级:下士
经 验:1682
性 别:帅哥
文 章:496
精 华:2
 干煸四季豆
发表时间:[2007-12-07 17:52:06] [向作者发站内短信] [复制链接告诉朋友]

晕,没有必要这么复杂,以前说了很多次的转换URL的方法,用那些方法构造你需要跳转页面的URL,一般用pageLink的url,然后throw new RedirectException即可。

1 / 1 页
<< 1 >>
跳转
  快速回复
  帐号: 密码: 匿名不登陆
回复内容:  
验 证 码:
 
 
·9800GT+19'液晶DIY仅售3500元
·双核特惠:1999、2999、3999
·什么是点金积分,如何查看自
·团购一期:三星R458-DS0G+高
·抽奖活动已结束,感谢大家支
  
贵州点集科技发展有限责任公司·点集贵州电脑网 版权所有©2006-2008
中华人民共和国增值电信业务经营许可证 黔B-20070010号
客服QQ: 93804809818866281927205370
电子邮件: deangi@vip.sina.com
技术支持: 0851-5109268