jsp如何防止用户直接输入其他页面的URL,跳过登陆界面呢?
我看到很多人使用Session或者设置过滤器,请说的详细点,最好有代码。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zylt】截止到2008-06-26 10:23:23的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:30                 
    结贴数:1                  结贴分:10                 
    未结数:1                  未结分:20                 
    结贴率:50.00 %            结分率:33.33 %            
    楼主加油
      

  2.   

    没个页面检查session就可以了,如果 session没有的话就转到登陆的页面
      

  3.   

    在web.xml中配置过滤器啊,过滤器里面主要的代码就是判断该用户是否已经登录,也就是session里面有没有用户信息。没有的话就跳到登录页面让登录就OK了。
      

  4.   

    比如在web.xml中这样配置过滤器,用于过滤/webadmin目录下所有的jsp页面<filter>
        <filter-name>userFilter</filter-name>
        <filter-class>jp.nec.web.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>userFilter</filter-name>
        <url-pattern>/webadmin/*</url-pattern>
    </filter-mapping>下面是一个简单的过滤器代码,用于过滤未登录用户public class MyFilter implements Filter { public void destroy() {
               //TODO
    } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException {

    HttpServletRequest hrequest = (HttpServletRequest) request;
    HttpSession session=hrequest.getSession();

    //这里判断session中是否有用户信息,假设判断用户名
    if (session.getAttribute("adminUser")==null||session.getAttribute("adminUser").equals("")) {
                            //如果没登录,则跳到登录页面,这里假设登录页面的目录为/web/Login.jsp
    hrequest.getRequestDispatcher("/web/Login.jsp").forward(request, response); } else {
    // 如果登录了,继续往下执行 */
    chain.doFilter(request, response);
    }
    } public void init(FilterConfig arg0) throws ServletException { }}
      

  5.   

    晕,这是个不是问题的问题。
    任何java程序要跑起来的话,必须编译为class文件啊
    包括普通的*.java,*.jsp这些都最终是要被编译为*.class文件才能够执行。
    建议你把基础在好好看看,这些最基本的东西都要清楚才好。
      

  6.   

    我以前没做过Web开发,这次时间紧。必须一边做一边学,基础的东西只有用到的时候学了。
      

  7.   

    如果你用的是servlet的话
    进哪个登陆页面的时候可以这样String forward = "";
    if(role == 用户1) {
      forward = "用户1v.jsp";
    }
    if...
    RequestDispatcher dis = request.getRequestDispatcher(forward);
    dis.forward(request, response);
    如果用户种类很多的话
    可以把他们的登陆页面设成index+"用户"
    这样forward = “index”+"用户";
      

  8.   

    如果是jsp的话,引入另一个jsp吧(里面判断用户是否登录)
      

  9.   

    检测session或其他验证信息;
    用servlet过滤器
      

  10.   

    在其他jsp中做如下处理
    <%
    String a=session.getAttribute(??);
    if(a!=null)
    {
      symol=1;
    }
    else
    {
      symol=2;
      全部都跳到一个抱错的jsp,这个error.jsp自动在回去登陆页
    }
    %>
      

  11.   

    角色不同跳转到不同页面
    String role = session.getAttribute("role");
    if(role.equals("admin")){
        跳转
    }else if(role.equals("user")){
        跳转到另外页面....
    } else if{
        ......
    }
      

  12.   

    登陆的时候把用户名放到 Session 中。sess.setAtrXXXX("username",username);在 JSP页面。sessionScope.getatrXXX("username");
    <c:if($test==null)>
    <c:forward.......
    </c:if>
    唉。,。环境把俺给害了。。
    现在发现。没得环境。好多东西都不会写了
      

  13.   

    用session是不行的,如果在登陆检查或主页设置session变量,跳过主页和登录而直接在其他页面调用session会报错,因为session中的变量没有定义