日期:2014-05-17  浏览次数:20689 次

请教 JSP页面之间跳转的问题 !!
home.jsp

Java code
<%
    String un = (String)session.getAttribute("userName");
    if("".equals(un) && un == null){
        response.sendRedirect("login.jsp");
    }
%>


在进入主页面之前先判断 session里面有没有用户名的值 防止直接输入地址进入主页面
如果没有值 就跳回登陆页面

但是我这样写没有作用 还是可以直接进入

请教错在什么地方? 
还有就是怎么加个弹出窗口提示 alert("请您先登陆!");

------解决方案--------------------
你这样写的判断条件结果永远为假。应该是if("".equals(un) || un == null),而不是 && 吧。
------解决方案--------------------
写个过滤器多好
核心代码
isLogin = (String) session.getAttribute("islogin");
//把不要过滤的内容排除掉:如首页
if (req.getRequestURI().equals(req.getContextPath()+"/")
|| req.getRequestURI().equals(req.getContextPath() + "XXXX")
) {
filterChain.doFilter(req, res);
}else if ((isLogin != null) && (isLogin.equals("true"))) {
filterChain.doFilter(req, res);
//System.out.println("Login success");
} else {
System.out.println("Login fail");
session.invalidate();
res.sendRedirect(req.getContextPath()+"/Page/relogin.jsp?reg=msg");
//验证不成功,让用户登录。
}

------解决方案--------------------
首先这句String un = (String)session.getAttribute("userName");就有问题,如果session中没有userName,那么session.getAttribute("userName")=null,(String)null是会发生异常的。但是在JSP中的JAVA代码产生的异常不会中断JSP页面,而是发生异常时,这段代码就被pass掉了。
所以,假设你未登录就访问某个页面,还是不会跳到登录页面去。
建议用过滤器实现,简单方便。
------解决方案--------------------
写个过滤器可以实现你的要求,何必写那么多验证。
请看
http://blog.csdn.net/wpabbs/archive/2008/08/21/2806677.aspx