WEB-INF一般不允许访问的, 放到WEB-INF上级目录中来

解决方案 »

  1.   

    WEB-INF是库文件..是不允许直接访问的...放到WEB-INF外面去..
      

  2.   

    WEB-INF里的文件要通过web.XML文件去访问。放到上一级来!
      

  3.   

    你要放到和WEB-INF同一级目录下,才可以访问,WEB-INF目录下一般情况下是用来放置类文件和用的库文件(jar包)。目录结构:webapp/.jsp或者webapp/.htm webapp/WEB-INF/classes存放类文件,webapp/WEB-INF/lib/.jar用到的库文件,webapp/WEB-INF/web.xml配置文件。
      

  4.   

    呵呵!WEB-INF目录是限制访问的
      

  5.   

    其实就是一个用户登录系统以后, 他通过直接键入url, 访问了其它不该访问的页面.
    就是为了防止这种情况.
      

  6.   

    同上!厉害!jsp的安全性在你这里完美的体现了!
      

  7.   

    问题就在这里. 在同一目录下,如web-inf/jsp/, 从一个jsp连结到另一个jsp, 都报404
      

  8.   

    目录结构:
    你的应用目录\
             index.jsp (及其他所有页面,可建立相应目录并将相应Jsp,htm文件放在其中)
             WEB-INF\ (此目录中的内容是不能通过URL访问的)
                     classes\ 按照包名结构放置各个类(JavaBean 和 Servlet)
                     lib\ (放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件)
                     src\ (按照包名结构放置各个java文件,[仅建议])
                     web.xml文件(必须存在)
             其他目录(图片目录images,等等)
      

  9.   

    晕,竟然没对齐。
      目录classes,lib,src 及 文件web.xml 都在WEB-INF目录下。
      

  10.   

    楼上的误解我的意思了,我是说将jsp 文件也放到web-inf目录下
      

  11.   

    web-inf这个目录就是放置类和配置文件的.网络上有这种安全机制,就是不允许直接访问web-inf下的资源.你这么做是不合理的./
      

  12.   

    如果你用struts就简单了再struts-config.xml里面配置一下即可通过action 的mappingForward过去了。普通的servlet不知道可以不可以,试下
      

  13.   

    我有试过, 但是, 比如你要在一个JSP中INCLUDE另一个JSP, 那么这时候, 又有路径的问题
    该如何写呢?
    比如我这样写; 
        <%@ include file="./common/init.jsp" %> 或者
        <%@ include file="<%=reuqest.getContextPath()%>/WEB-INF/jsp/common/init.jsp" %>
    但好象都不行.
      

  14.   

    spring的example都是把jsp放到web-info底下的jsp目录。你可以看看他的例子怎么写的。
      

  15.   

    多谢楼上!确实可以. 我简单测试了以下,在任何一个子目录下, 都这样写
      <%@ include file="/WEB-INF/jsp/common/init.jsp" %>
    在struts config文件中, 配置forward也是这样写.
      <forward name="main" path="/WEB-INF/jsp/common/main.jsp" redirect="false" />
    具体可参照spring中的例子.
      

  16.   

    JSP文件可以放到/WEB-INF目录下,这样客户端就不能直接访问;
    唯一的访问方式是:
        写一个servlet,判断用户是否有访问的权限,如果有,那么这么写:
    request.getSession().getServletContext().getRequestDispatcher("/WEB-INF/jsp/admin.jsp").forward(request,response);
    就可以访问到了。
      

  17.   

    但, 好象一般的url都失效, 如 
      1.<a href="/WEB-INF/jsp/....">link</a>
      2.<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">
    用forward可以解决第一个问题.
      第二个该如何解决呢?
      

  18.   

    想法!所有链接÷访问方式÷都必须走servlet.直接访问jsp不允许。
      

  19.   

    防止用户直接从浏览器访问
    可以做个过滤器
    WEB-INF目录是个安全目录,是不允许用户访问的,但如果是STRUTS框架,你可以针对每个JSP做个ACTION,也可能实现你的要求
      

  20.   

    tomcat是不允许客户直接访问WEB-INF下的文件的,这些文件只能由服务器访问。所以你必须将要访问的jsp页面都拿到WEB-INF的上级目录中。这样应该没有问题。
      

  21.   

    楼主说的<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">
    的问题,倒是没有考虑到。楼主测试过吗?是否真的不行。
    如果那样的话,用一个过滤器来实现对用户的控制。毕竟把jsp放web-inf底下只是个对所有用户都遮蔽的小技巧,不是正规方式。
      

  22.   

    测试过, 报404.
    我测试了如下路径:src="/common/menu.jsp"
    src="../common/menu.jsp"
    src="/WEB-INF/jsp/common/menu.jsp"
    src="<%=request.getContextPath()%>/WEB-INF/jsp/common/menu.jsp"
    我人为,<frame src="/common/menu.jsp"这样的访问方式和用户直接输入超连接是一样的.
    所以,应该不行.