将JSP都放到WEB-INF目录下, 点击超链接都报404,该如何处理?

juanxincai 2004-09-08 01:27:22
将JSP都放到WEB-INF目录下, 点击超链接都报404,该如何处理?
...全文
1636 点赞 收藏 36
写回复
36 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
juanxincai 2004-09-10
确实是个小技巧. 有些误入歧途了. 呵呵.
但用过滤器, 势必为每个角色维护一个大的连接的库
回复
juanxincai 2004-09-10
测试过, 报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"这样的访问方式和用户直接输入超连接是一样的.
所以,应该不行.
回复
feng8208 2004-09-09
可以forward 不能redirect
回复
比特灵 2004-09-09
想法!所有链接÷访问方式÷都必须走servlet.直接访问jsp不允许。
回复
juanxincai 2004-09-09
楼上的误解我的意思了,我是说将jsp 文件也放到web-inf目录下
回复
juanxincai 2004-09-09
对forward可以
回复
bon_jovi 2004-09-09
楼主说的<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">
的问题,倒是没有考虑到。楼主测试过吗?是否真的不行。
如果那样的话,用一个过滤器来实现对用户的控制。毕竟把jsp放web-inf底下只是个对所有用户都遮蔽的小技巧,不是正规方式。
回复
juanxincai 2004-09-09
但, 好象一般的url都失效, 如
1.<a href="/WEB-INF/jsp/....">link</a>
2.<frame src="/common/menu.jsp" name="leftFrame" scrolling="YES">
用forward可以解决第一个问题.
第二个该如何解决呢?
回复
chancelin 2004-09-09
JSP文件可以放到/WEB-INF目录下,这样客户端就不能直接访问;
唯一的访问方式是:
写一个servlet,判断用户是否有访问的权限,如果有,那么这么写:
request.getSession().getServletContext().getRequestDispatcher("/WEB-INF/jsp/admin.jsp").forward(request,response);
就可以访问到了。
回复
juanxincai 2004-09-09
多谢楼上!

确实可以. 我简单测试了以下,在任何一个子目录下, 都这样写
<%@ include file="/WEB-INF/jsp/common/init.jsp" %>
在struts config文件中, 配置forward也是这样写.
<forward name="main" path="/WEB-INF/jsp/common/main.jsp" redirect="false" />
具体可参照spring中的例子.
回复
juanxincai 2004-09-09
good idea!
回复
bon_jovi 2004-09-09
spring的example都是把jsp放到web-info底下的jsp目录。你可以看看他的例子怎么写的。
回复
juanxincai 2004-09-09
我有试过, 但是, 比如你要在一个JSP中INCLUDE另一个JSP, 那么这时候, 又有路径的问题
该如何写呢?
比如我这样写;
<%@ include file="./common/init.jsp" %> 或者
<%@ include file="<%=reuqest.getContextPath()%>/WEB-INF/jsp/common/init.jsp" %>
但好象都不行.
回复
比特灵 2004-09-09
如果你用struts就简单了再struts-config.xml里面配置一下即可通过action 的mappingForward过去了。普通的servlet不知道可以不可以,试下。。。
回复
zhaoqiubo 2004-09-09
web-inf这个目录就是放置类和配置文件的.网络上有这种安全机制,就是不允许直接访问web-inf下的资源.你这么做是不合理的./
回复
powersailor 2004-09-09
tomcat是不允许客户直接访问WEB-INF下的文件的,这些文件只能由服务器访问。所以你必须将要访问的jsp页面都拿到WEB-INF的上级目录中。这样应该没有问题。
回复
bjblz 2004-09-09
防止用户直接从浏览器访问
可以做个过滤器
WEB-INF目录是个安全目录,是不允许用户访问的,但如果是STRUTS框架,你可以针对每个JSP做个ACTION,也可能实现你的要求
回复
yaray 2004-09-08
晕,竟然没对齐。
目录classes,lib,src 及 文件web.xml 都在WEB-INF目录下。
回复
yaray 2004-09-08
目录结构:
你的应用目录\
index.jsp (及其他所有页面,可建立相应目录并将相应Jsp,htm文件放在其中)
WEB-INF\ (此目录中的内容是不能通过URL访问的)
classes\ 按照包名结构放置各个类(JavaBean 和 Servlet)
lib\ (放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件)
src\ (按照包名结构放置各个java文件,[仅建议])
web.xml文件(必须存在)
其他目录(图片目录images,等等)
回复
juanxincai 2004-09-08
可否告知具体写法, 谢谢!!
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-09-08 01:27
社区公告
暂无公告