将JSP都放到WEB-INF目录下, 点击超链接都报404,该如何处理? WEB-INF一般不允许访问的, 放到WEB-INF上级目录中来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WEB-INF是库文件..是不允许直接访问的...放到WEB-INF外面去.. WEB-INF里的文件要通过web.XML文件去访问。放到上一级来! 你要放到和WEB-INF同一级目录下,才可以访问,WEB-INF目录下一般情况下是用来放置类文件和用的库文件(jar包)。目录结构:webapp/.jsp或者webapp/.htm webapp/WEB-INF/classes存放类文件,webapp/WEB-INF/lib/.jar用到的库文件,webapp/WEB-INF/web.xml配置文件。 呵呵!WEB-INF目录是限制访问的 其实就是一个用户登录系统以后, 他通过直接键入url, 访问了其它不该访问的页面.就是为了防止这种情况. 同上!厉害!jsp的安全性在你这里完美的体现了! 问题就在这里. 在同一目录下,如web-inf/jsp/, 从一个jsp连结到另一个jsp, 都报404 目录结构:你的应用目录\ index.jsp (及其他所有页面,可建立相应目录并将相应Jsp,htm文件放在其中) WEB-INF\ (此目录中的内容是不能通过URL访问的) classes\ 按照包名结构放置各个类(JavaBean 和 Servlet) lib\ (放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件) src\ (按照包名结构放置各个java文件,[仅建议]) web.xml文件(必须存在) 其他目录(图片目录images,等等) 晕,竟然没对齐。 目录classes,lib,src 及 文件web.xml 都在WEB-INF目录下。 楼上的误解我的意思了,我是说将jsp 文件也放到web-inf目录下 web-inf这个目录就是放置类和配置文件的.网络上有这种安全机制,就是不允许直接访问web-inf下的资源.你这么做是不合理的./ 如果你用struts就简单了再struts-config.xml里面配置一下即可通过action 的mappingForward过去了。普通的servlet不知道可以不可以,试下 我有试过, 但是, 比如你要在一个JSP中INCLUDE另一个JSP, 那么这时候, 又有路径的问题该如何写呢?比如我这样写; <%@ include file="./common/init.jsp" %> 或者 <%@ include file="<%=reuqest.getContextPath()%>/WEB-INF/jsp/common/init.jsp" %>但好象都不行. spring的example都是把jsp放到web-info底下的jsp目录。你可以看看他的例子怎么写的。 多谢楼上!确实可以. 我简单测试了以下,在任何一个子目录下, 都这样写 <%@ include file="/WEB-INF/jsp/common/init.jsp" %>在struts config文件中, 配置forward也是这样写. <forward name="main" path="/WEB-INF/jsp/common/main.jsp" redirect="false" />具体可参照spring中的例子. JSP文件可以放到/WEB-INF目录下,这样客户端就不能直接访问;唯一的访问方式是: 写一个servlet,判断用户是否有访问的权限,如果有,那么这么写:request.getSession().getServletContext().getRequestDispatcher("/WEB-INF/jsp/admin.jsp").forward(request,response);就可以访问到了。 但, 好象一般的url都失效, 如 1.<a href="/WEB-INF/jsp/....">link</a> 2.<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">用forward可以解决第一个问题. 第二个该如何解决呢? 想法!所有链接÷访问方式÷都必须走servlet.直接访问jsp不允许。 防止用户直接从浏览器访问可以做个过滤器WEB-INF目录是个安全目录,是不允许用户访问的,但如果是STRUTS框架,你可以针对每个JSP做个ACTION,也可能实现你的要求 tomcat是不允许客户直接访问WEB-INF下的文件的,这些文件只能由服务器访问。所以你必须将要访问的jsp页面都拿到WEB-INF的上级目录中。这样应该没有问题。 楼主说的<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">的问题,倒是没有考虑到。楼主测试过吗?是否真的不行。如果那样的话,用一个过滤器来实现对用户的控制。毕竟把jsp放web-inf底下只是个对所有用户都遮蔽的小技巧,不是正规方式。 测试过, 报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"这样的访问方式和用户直接输入超连接是一样的.所以,应该不行. 在jsp中如何调ActiveX控件,最好给个例子 java script 正则表达式 jsp导出到excel session问题 页面自动执行的问题 救急 求助:为什么我不能正确的远程获取到HTML文件 用dreamweaver开发jsp的问题 我的SESSION故意总是不超时 请指点一下Servlet中发送Email的问题??? 横向拼接多条sql查询结果返回使用实体接收 jsp验证码不能显示了 JSP字符串的截取(分数全送)
就是为了防止这种情况.
你的应用目录\
index.jsp (及其他所有页面,可建立相应目录并将相应Jsp,htm文件放在其中)
WEB-INF\ (此目录中的内容是不能通过URL访问的)
classes\ 按照包名结构放置各个类(JavaBean 和 Servlet)
lib\ (放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件)
src\ (按照包名结构放置各个java文件,[仅建议])
web.xml文件(必须存在)
其他目录(图片目录images,等等)
目录classes,lib,src 及 文件web.xml 都在WEB-INF目录下。
该如何写呢?
比如我这样写;
<%@ include file="./common/init.jsp" %> 或者
<%@ include file="<%=reuqest.getContextPath()%>/WEB-INF/jsp/common/init.jsp" %>
但好象都不行.
<%@ include file="/WEB-INF/jsp/common/init.jsp" %>
在struts config文件中, 配置forward也是这样写.
<forward name="main" path="/WEB-INF/jsp/common/main.jsp" redirect="false" />
具体可参照spring中的例子.
唯一的访问方式是:
写一个servlet,判断用户是否有访问的权限,如果有,那么这么写:
request.getSession().getServletContext().getRequestDispatcher("/WEB-INF/jsp/admin.jsp").forward(request,response);
就可以访问到了。
1.<a href="/WEB-INF/jsp/....">link</a>
2.<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">
用forward可以解决第一个问题.
第二个该如何解决呢?
可以做个过滤器
WEB-INF目录是个安全目录,是不允许用户访问的,但如果是STRUTS框架,你可以针对每个JSP做个ACTION,也可能实现你的要求
的问题,倒是没有考虑到。楼主测试过吗?是否真的不行。
如果那样的话,用一个过滤器来实现对用户的控制。毕竟把jsp放web-inf底下只是个对所有用户都遮蔽的小技巧,不是正规方式。
我测试了如下路径: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"这样的访问方式和用户直接输入超连接是一样的.
所以,应该不行.