请问,jsp页面如何做到只有通过登陆界面才能访问,而不能在地址栏输入地址就可以访问.我目前得情况就是在地址栏输入要访问得页面地址就可以访问.
许多网友介绍通过过滤器和session实现.我只是在登录页面设置一个登录标记如下,session.setAttribute("flag","flag");然后在没有个jsp页面,添加下面得代码:
String num = (String)session.getAttribute("vnum");
if(num != "101")
{%>
   <SCRIPT language=javascript>     
      top.location.replace("../login/errorpage.htm");
   </SCRIPT>
可是当两个以上用户通过同一个浏览器访问时,第一个后面的用户又在浏览器地址栏直接输入地址就可以访问了?
请问各位网友,这个问题怎么解决,能不能给一个例子研究学习一下?

解决方案 »

  1.   

    那是因为session已经在本地保存了数据,只要不关ie的情况下session的数据不会消失。我认为可以将数据分别保存在session和request中,然后判断session.getattribute和request.getattribute是否相等
      

  2.   

    可以再退出网页时注销session,用session.Invalidate();
      

  3.   

    cnyxlxw(黑夜给了我黑色的眼睛我用他来寻找光明) ( ) 信誉:100  2006-04-29 15:23:00  得分: 0  是filter和session一起用吗?可以给一个例子吗?我没有接住过,谢谢!
      

  4.   

    用过滤器咯
    /*
     * Created on 2006-4-17
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package filter;
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.Filter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.FilterConfig;
    import javax.servlet.http.HttpSession;
    /**
     * @author YangBin
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class SignonFilter implements Filter
    {
    String LOGIN_PAGE="../index.jsp";
    protected FilterConfig filterConfig;
    /* (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig config) throws ServletException {
    // TODO Auto-generated method stub
    this.filterConfig=config;
    } /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    public void doFilter(final ServletRequest req, final ServletResponse res, FilterChain chain) throws IOException, ServletException
    {
    // TODO Auto-generated method stub
    HttpServletRequest hreq=(HttpServletRequest)req;
    HttpServletResponse hres=(HttpServletResponse)res;
    HttpSession session=hreq.getSession();
    // String isLogin="";
    try{
    Boolean isLogin = (Boolean)session.getAttribute("isLogin");

    if(isLogin!=null)
    {
    // System.out.println("hehe");
    chain.doFilter(req,res);
    }
    else
    {
    // System.out.println("asdfasdf");
    hres.setContentType("text/html;charset=gb2312");
    PrintWriter out=hres.getWriter();
    out.println("<html>");
    out.println("<body>");
    out.println("<script>");
    out.println("alert('您未登陆或登陆时间过长!先请登陆');");
    out.println("history.back();");
    out.println("</script>");
    out.println("</body>");
    out.println("</html>");
    // hres.sendRedirect(LOGIN_PAGE);
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    public void setFilterConfig(final FilterConfig filterConfig)
    {
    this.filterConfig=filterConfig;
    }
    /* (non-Javadoc)
     * @see javax.servlet.Filter#destroy()
     */
    public void destroy() {
    // TODO Auto-generated method stub
    this.filterConfig=null;
    }

    }
    web.xml里设置下
    <filter>
    <filter-name>auth</filter-name>
    <filter-class>filter.SignonFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>auth</filter-name>
    <url-pattern>/这里是登陆才允许访问的页面/*</url-pattern>
    </filter-mapping>
      

  5.   

    用过滤器咯
    /*
     * Created on 2006-4-17
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package filter;
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.Filter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.FilterConfig;
    import javax.servlet.http.HttpSession;
    /**
     * @author YangBin
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class SignonFilter implements Filter
    {
    String LOGIN_PAGE="../index.jsp";
    protected FilterConfig filterConfig;
    /* (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig config) throws ServletException {
    // TODO Auto-generated method stub
    this.filterConfig=config;
    } /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    public void doFilter(final ServletRequest req, final ServletResponse res, FilterChain chain) throws IOException, ServletException
    {
    // TODO Auto-generated method stub
    HttpServletRequest hreq=(HttpServletRequest)req;
    HttpServletResponse hres=(HttpServletResponse)res;
    HttpSession session=hreq.getSession();
    // String isLogin="";
    try{
    Boolean isLogin = (Boolean)session.getAttribute("isLogin");

    if(isLogin!=null)
    {
    // System.out.println("hehe");
    chain.doFilter(req,res);
    }
    else
    {
    // System.out.println("asdfasdf");
    hres.setContentType("text/html;charset=gb2312");
    PrintWriter out=hres.getWriter();
    out.println("<html>");
    out.println("<body>");
    out.println("<script>");
    out.println("alert('您未登陆或登陆时间过长!先请登陆');");
    out.println("history.back();");
    out.println("</script>");
    out.println("</body>");
    out.println("</html>");
    // hres.sendRedirect(LOGIN_PAGE);
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    public void setFilterConfig(final FilterConfig filterConfig)
    {
    this.filterConfig=filterConfig;
    }
    /* (non-Javadoc)
     * @see javax.servlet.Filter#destroy()
     */
    public void destroy() {
    // TODO Auto-generated method stub
    this.filterConfig=null;
    }

    }
    web.xml里设置下
    <filter>
    <filter-name>auth</filter-name>
    <filter-class>filter.SignonFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>auth</filter-name>
    <url-pattern>/这里是登陆才允许访问的页面/*</url-pattern>
    </filter-mapping>