首先你打印一下error的值,看看是否执行了if语句

解决方案 »

  1.   

     if(error!=null&&error.equals("error"))
              {
                  request.setAttribute("message","访问该页面需要登录!");
                  response.sendRedirect("login.jsp");
              }
    这个是肯定执行了的因为第二个代码就是在login.jsp中的,而且调试时我也看了 if(error!=null&&error.equals("error"))error有值
      

  2.   

    <%
              String error=(String)session.getAttribute("error");
              if(error!=null&&error.equals("error"))
              {
                  request.setAttribute("message","访问该页面需要登录!");
                  response.sendRedirect("login.jsp");改成 request.getRequestDispatcher("login.jsp").forward(request, response);          }//试试,可能不行,但也试试
    %>
    另外<% 
            String message=(String)request.getAttribute("message"); 
            if(message!=null&&message!="") //应该是!"".equals(message)
                out.print(message+"<br>");
    %> 
      

  3.   

    response.sendRedirect("login.jsp");
    不是基于同一次请求的,它是两次不同的请求,是重定向啊!
    你把值放到request中,就是放到了请求中呀!
    request.setAttribute("message","访问该页面需要登录!");你放到session中或是用转发。。
      

  4.   


    response.sendRedirect("login.jsp");  会丢失请求作用域的参数的,因为它可以理解是跳转到其他站点或者是其他页面,也就是楼上所说的 请求不一样了.换一种跳转方式或者是将值存储到 application 或者是 session 作用域中.
      

  5.   

    当然没有 。。sendRedirect直接跳转是不会保存REQUEST对象的 。。
    还是用request.getRequestDispatcher().forward(request,response)好了 。。
    参考下:
    http://topic.csdn.net/u/20070525/13/c3cd6e2c-3c07-4f97-97c9-04f7051882b3.html
      

  6.   

    response.sendRedirect是重定向。重定向是指向另一个Servlet或jsp重新发送一条请求,
    那么你在这之前定义的request(request.setAttribute)在另一个Servlet中是得不到这个值的 。
    你可以用请求转发的方式 ,如request.getRequestDispatcher("XXX.jsp").forward(request, response);
      

  7.   

    <% 
            String message=(String)request.getAttribute("message"); 
            if(message!=null&&message!="") //应该是!"".equals(message)
                out.print(message+"<br>");
    %> 正解