loginRedirect.jsp
<jsp:directive.page import="entity.ActingAdminUser" />
<%
ActingAdminUser admin = new ActingAdminUser();
Object o_adminfo = session.getAttribute("user");
if (o_adminfo != null) {
admin = (ActingAdminUser) o_adminfo;
} else {
response.sendRedirect("login.jsp");
}

%>test.jsp<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<html>
  <head>
   
  </head>
   <jsp:directive.page import="entity.ActingAdminUser" />
<%
ActingAdminUser admin = new ActingAdminUser();
Object o_adminfo = session.getAttribute("user");
if (o_adminfo != null) {
admin = (ActingAdminUser) o_adminfo;
} else {

response.sendRedirect("login.jsp");

}
%>
  <body>
   </body>
</html>
test.jsp
<jsp:directive.page import="entity.ActingAdminUser" />
<jsp:include page="loginRedirect.jsp"></jsp:include>
直接把sesion判断的jsp代码复制到test,就可以实现session空的话就跳到login.jsp
但是下面那个引用sesion判断页面的话就不行怎么办,如何实现登陆判断啊,不然被人直接敲地址就进来了

解决方案 »

  1.   

     else {    
            response.sendRedirect("login.jsp");
        }你的这个代码,在前面已经有html的内容输出了,所以再进行redirect肯定不行了。
    可以改用 javascript方式,记得改成类似
     else {    
            out.println("<script......>");// 自己写吧
            return; // 这一句很重要。
        }
      

  2.   

    简单!
    直接在<head>下加<%if (session.getAttribute("user")!=null 
    在</html>前加
    <%}
    else
    { response.sendRedirect("errorpage.jsp");} %>
    这样就行了!
      

  3.   

    自己写个类 implements Filter 
    在doFilter中执行你的操作,如果存在则怎么这么,如果不存在则怎么这么滴,
    然后在webxml中配置下就OK了
      

  4.   


    <filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>
    tools.SetCharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter> <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping> <filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig;
    protected String encodingName;
    protected boolean enable; public SetCharacterEncodingFilter() {
    encodingName = "UTF-8";
    enable = false;
    } // 初始化
    public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    } // 每个请求设置UTF-8
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("UTF-8"); HttpServletRequest httprequest = (HttpServletRequest) request;
      HttpServletResponse httpresponse = (HttpServletResponse) response;
      HttpSession session = httprequest.getSession();  
      AdminUser user=new AdminUser();
      try { //获得在session中所记录的isLogin属性,该属性由登录部分的代码写入   
       user = (ActingAdminUser) session.getAttribute("user");
       if (user!=null) //验证成功,继续处理
       {
        chain.doFilter(request, response);
       } else //验证不成功,让用户登录。
       {     
        String targetURL = httprequest.getContextPath()+"/login.jsp";
        httpresponse.sendRedirect(targetURL);     
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
      
    }
    public void destroy() {
    }
    }
    我配了这个,是在编码过滤器那里顺便加点session判断,但是我开个网页都卡在那里,好像在反复重定向,左下角闪烁正在打开"http://localhost:8080/test/login.jsp"  和 "正在重新定向到http://localhost:8080/test/login.jsp"  我写错哪里了?
      

  5.   

    kien5是不是你啊?
    <filter-mapping>
            <filter-name>SetCharacterEncodingFilter</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>    <filter-mapping>
            <filter-name>SetCharacterEncodingFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
    配置错了!看kien5那里回复的去
      

  6.   

    if (user!=null) //验证成功,继续处理
               {
                chain.doFilter(request, response);
               } else //验证不成功,让用户登录。
               {            
                String targetURL = httprequest.getContextPath()+"/login.jsp";
                httpresponse.sendRedirect(targetURL);        
               }
              } catch (Exception e) {
               e.printStackTrace();
              }
    -------------------------------------------------------------
    改为:
    RequestDispatcher dispatcher=request.getRequestDispatcher("login.jsp");
    if (user!=null) //验证成功,继续处理
               {
                chain.doFilter(request, response);
               } else //验证不成功,让用户登录。
               {            
               dispatcher.forward(request, response);
             }
      

  7.   


    当我点登陆按钮后,又跳回login.jsp了连login的action都不进le
      

  8.   

    public class CheckLoginFilter    
    implements Filter    
    {    
    public static String[] NoFilter_Pages = {
           "/index.jsp",
           "/servlet/IndexServlet",
    };
    public void init(FilterConfig filterConfig) throws ServletException {
    } public void doFilter(ServletRequest request, ServletResponse response,
                           FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        
        HttpSession session = req.getSession(true);
        String path = req.getServletPath();     //从session里取的用户名信息
        Object user = session.getAttribute("user"); for (int i = 0; i < NoFilter_Pages.length; i++) {

       if (path.indexOf(NoFilter_Pages[i]) > -1) {
        chain.doFilter(req, res);
        return;
       }
    }
        
        //判断如果没有取到用户信息,就跳转到登陆页面
        if (user == null) {
          //跳转到登陆页面
          res.sendRedirect(req.getContextPath()+"/index.jsp ");//这里是返回域名的根目录地址,若直接返回当前的目录下的文件,则用res.sendRedirect("/login.jsp")
        }
        else {
          //已经登陆,继续此次请求
          chain.doFilter(request,response);
        }
    } public void destroy() {
    }
    }
      

  9.   

    <filter>   
         <filter-name>CheckLoginFilter</filter-name>   
          <filter-class>coms.uece.test.CheckLoginFilter</filter-class>   
      </filter>   
      <filter-mapping>
          <filter-name>CheckLoginFilter</filter-name>   
          <url-pattern>/*</url-pattern>   
      </filter-mapping>web.xml 这样配上就行了。NoFilter_Pages 数组里面存的页面是不需要登录就可以看到的界面
      

  10.   

    你得屏掉login.jsp时候的doFilter啊,因为这个时候session里的值还是空的啊,所以才会总是呆在这个页面。应该login.jsp点击登陆操作之后不进行doFilter,而是直接登陆验证,再设置session里面的值,到其他页面再doFilter。
      

  11.   

    把公用的抽出来做一个jsp,其他页面include这个页面就可以了.
      

  12.   

    include公用 页面时最简单的了,又不麻烦,引用标签也可以写在里面啊