现在有个web工程, 目录下有web/admin/video 三等目录
 
 防止用户在地址栏敲入http://localhost:8080/web/admin 看到所有admin目录下的所有jsp页面 请问怎么办好? 

解决方案 »

  1.   

    我现在用的是过滤器 过滤.do的请求不知道防止进入admin目录 的过滤器 怎么写?谢谢大家
      

  2.   

    在项目web.xml中配置欢迎列表
    <!-- The Usual Welcome File List -->
      <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
      </welcome-file-list>在 程序的页面中String type = (String)session.getAttribute("suType");if(type==null){
    response.sendRedirect("/netcom/login.jsp");
    }
    这个方法有点古老的。
      

  3.   

    就用过滤器  当前用户权限不允许访问的路径 sendRedirect到error界面或其他
    先查下filter的使用方法吧
      

  4.   

    admin里面的内容都是固定的用户才能访问的
    你可以先设置session,如果有用户登陆,就把用户信息录入到session中
    如果没有用户登陆,那session就为空。
    然后再判断session的值,如果是管理员账户信息,则允许进入admin目录,如果session为空或者用户信息不为管理员信息,则强制跳转到一个自定义的错误页面
      

  5.   

    给你贴代码,你自己看吧,建议看看filter的东西import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;public class LogonFilter implements Filter { private static final String LOGON_URI = "LOGON_URI"; private static final String HOME_URI = "HOME_URI"; private String logon_page; private String home_page; public void destroy() {
    // TODO Auto-generated method stub
    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest httpReq = (HttpServletRequest) request;
    HttpServletResponse httpResp = (HttpServletResponse) response;
    httpResp.setContentType("text/html");
    httpResp.setCharacterEncoding("utf-8");
    HttpSession session = httpReq.getSession();
    PrintWriter out = httpResp.getWriter();
    // 得到用户请求的URI
    String request_uri = httpReq.getRequestURI();
    // 得到web应用程序的上下文路径
    String ctxPath = httpReq.getContextPath();
    // 去除上下文路径,得到剩余部分的路径
    String uri = request_uri.substring(ctxPath.length());
    // 判断用户访问的是否是登录页面
    if (uri.equals(logon_page) || uri.equals(home_page)) {
    chain.doFilter(request, response);
    return;
    } else {
    // 如果访问的不是登录页面,则判断用户是否已经登录
    if (session.getAttribute("user") != "" && session.getAttribute("user") != null) {
    chain.doFilter(request, response);
    return;
    } else {
    out.println("<script language=\"javaScript\">"
    + "parent.location.href='"+ctxPath+logon_page+"'" 
    + "</script>");
    //httpReq.getRequestDispatcher(logon_page).forward(httpReq,httpResp);
    return;
    }
    }
    } public void init(FilterConfig config) throws ServletException {
    // TODO Auto-generated method stub
    // 从部署描述符中获取登录页面和首页的URI
    logon_page = config.getInitParameter(LOGON_URI);
    home_page = config.getInitParameter(HOME_URI);
    // System.out.println(logon_page);
    if (null == logon_page || null == home_page) {
    throw new ServletException("没有找到登录页面或主页");
    }
    }}web.xml  <filter>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <filter-name>LogonFilter</filter-name>
        <filter-class>LogonFilter</filter-class>
        <init-param>
              <param-name>LOGON_URI</param-name>
              <param-value>/management/jsp/index.jsp</param-value>
        </init-param>
        <init-param>
              <param-name>HOME_URI</param-name>
              <param-value>/management/jsp/</param-value>
        </init-param>
      </filter>
      

  6.   

    防止用户在地址栏敲入http://localhost:8080/web/admin 看到所有admin目录下的所有jsp页面 
    =============================================================================
    没有权限控制吗?你的jsp上不做权限判断啊?
      

  7.   

    正常的做法是,jsp页面全部放在web-inf/jsp/目录下
      

  8.   

    感谢大家以上的回复大家在这个地址回复一下 http://topic.csdn.net/u/20090707/14/83d521c8-89dd-40b2-b875-1f535cac2f64.html我给分数 
      

  9.   

    还有这个地址 都是零回复的http://topic.csdn.net/u/20090707/17/46d54c8f-2e94-4cd1-a179-6ea73a48b111.html
      

  10.   

    把jsp页面放到WEB-INF下, WEB-INF中的东西用户是不能通过浏览器访问的
      

  11.   

    如果tomcat,打开conf/web.xml
    <init-param>
       <param-name>listings</param-name>
       <param-value>false</param-value>
    </init-param>
    这样用户打开目录的时候就不会将所有jsp页面都显示出来了
      

  12.   

    有N多方法,不管用哪个方法,都是在到达访问action之前做点手脚。
    比如过滤
      

  13.   

    引入 spring 用他的权限的相应部分。
      

  14.   

    filter  就可以完全搞定。
      

  15.   

    啥跟啥啊! tomcat 自己有配置防范这个
    请教大大们,怎样防止TomCat暴露服务器路径? 文件列表
      

  16.   

    恩 这个很简单吧
    今天我还弄了呢
    是用ssh的项目
      

  17.   

    谢谢大家下面的连接还有问题 麻烦了http://topic.csdn.net/u/20090716/14/1ed5cb2b-cb5d-4aed-87eb-cd3de135ce54.html
      

  18.   

    一般情况下,所有的jsp放在/WEB-INF/下面
      

  19.   

    验证,从session中判断是否有权限
      

  20.   

    楼主,可以有过滤器。
    拦截器是strust2里的spring拦截器不起作用 拦截不了页面的东西。strust2拦截器只能拦截参数和请求!filter 拦截所用页面
    第一步:做权限验证。
    第二步:可以有Filter把所用文件全部过滤掉在客户请求判断该URL是否违法。。
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException { HttpServletRequest hreq = (HttpServletRequest) request; HttpServletResponse hres = (HttpServletResponse) response; HttpSession session = hreq.getSession(true);
    System.out.println(hreq.getRequestURL());
                  


      String sh=hreq.getRequestURL().toString();
    String s0="Login.jsp";
    if(sh.lastIndexOf(s0)==sh.length()-s0.length())
    { chain.doFilter(request, response);
      return;
    }
      参考  你只需要修改代码就可以啦!!
    我测试过没问题。大概思路就是这样的
      

  21.   

     有N多方法  最唱用的就是使用action 同时使用过滤 不让直接访问js页面  同时设置权限 或者session  无权或未登陆的不让访问。 
      

  22.   

    用SESSION来判断有没有改用户,没有就返回来主页面。不让他进去
      

  23.   

    用SESSION来判断有没有改用户,没有就返回来主页面。不让他进去。过滤器的意思啦
      

  24.   

    如果用struts就放在web-inf下面
    如果不是就用过滤器判断是否登录等相关信息
      

  25.   

    越看越有意思。我只想跟楼主说。请将所有你不想被直接访问的资源放到WEB-INF目录下。
    对这些资源都进行内部转发。
      

  26.   

    如果你使用jsp处理业务逻辑。请使用一个jsp进行权限的检查,转发到WEB-INF目录下相应目录。
    如果使用struts框架,请使用action进行权限的检查,所有WEB-INF目录下页面请使用org.apache.struts.actions.ForwardAction转发。使用org.apache.struts.actions.IncludeAction包含页面。也就是说你访问页面如果有XXX.JSP(index.jsp除外)那就是错误的。
    其它的估计你也不必要了解了。
      

  27.   

    用过滤器,web.xml配置文件的路径中填写你要过滤的文件件或者文件名称。
    这种技术也叫做"防盗链"
      

  28.   

    1.过滤器
    2.通过SESSION判断用户是否存在
    3.把重要页面放到WEB-INF下(STRUTS)
      

  29.   

    两个思路,更改服务器的配置或者用Filter
      

  30.   

    1.过滤器
    2.通过SESSION判断用户是否存在
    3.把重要页面放到WEB-INF下(STRUTS)
      

  31.   

    用servlet可以访问  而直接访问就不可以! 最好的解决方法