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

juanxincai 2004-09-08 01:27:22
将JSP都放到WEB-INF目录下, 点击超链接都报404,该如何处理?
...全文
1855 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
可否告知具体写法, 谢谢!!
加载更多回复(16)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧