日期:2014-05-18  浏览次数:20668 次

我迷糊了,用Struts 做了一个没有登陆的用户访问该页时出错的程序,我崩溃了。。。
我的目的是,当用户输入合法的信息后,存入session,然后别的页面根据这个session是否存在就能判断是否登陆,如果未登陆将跳转到出错页,可是我这么做出错了,
首先是登陆的action
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)   {
LoginForm   loginForm   =   (LoginForm)   form;//   TODO   Auto-generated   method   stub
if( "aaa ".equals(loginForm.getUanme())&& "bbb ".equals(loginForm.getUpass())){
HttpSession   session=request.getSession();
session.setAttribute( "flag ",   "ok ");
}
return   mapping.findForward( "go ");
}


go是跳转到了su.jsp页,代码如下
<%@   page   language= "java "   pageEncoding= "GBK "%>

<jsp:include   page= "Su.do "> </jsp:include>

        欢迎您的到来

Su.do的代码如下:
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)   {
SuForm   suForm   =   (SuForm)   form;//   TODO   Auto-generated   method   stub
HttpSession   session=request.getSession();
request.setAttribute( "msg ",   "asdf ");
if(session.getAttribute( "flag ")==null){
return   mapping.findForward( "error ");
}
return   null;
}

error是跳转到了error.jsp页代码如下
    <body>
        对不起,您没有登陆   <br>
    </body>

我的流程是当直接访问su.jsp页面时,他会调用su.do,然后su.do就会判断用户是否登陆,如果登陆返回null显示su.jsp页,如果未登陆,那么就return   mapping到出错页,可是无论登陆还是未登陆都可以正常显示su.jsp页

------解决方案--------------------
su.do里面设个断点,看看进去没有~~
------解决方案--------------------
return null;了嘛,当然是什么也看不到了,换一个actionforward
------解决方案--------------------
这中全局性的东西最好交给filter来搞,简单的多