社区
Web 开发
帖子详情
讨论:关于jsp页面是放在webroot目录下和web-inf下优缺点
lgm277531070
2009-10-16 12:50:33
jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问。
因此放在web-inf下jsp页面显得要安全。
既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要放在web-inf目录下呢
还有放在webroot和放在web-inf目录下都各有什么明显的优缺点 。
望大家讨论...
...全文
4481
16
打赏
收藏
讨论:关于jsp页面是放在webroot目录下和web-inf下优缺点
jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问。 因此放在web-inf下jsp页面显得要安全。 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要放在web-inf目录下呢 还有放在webroot和放在web-inf目录下都各有什么明显的优缺点 。 望大家讨论...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寿辰东
2012-04-21
打赏
举报
回复
放在 WEB-INF 安全
xiajunsongfan
2010-10-14
打赏
举报
回复
自己习惯了怎么用,就怎么用呗。
huster12-zoujm
2010-04-30
打赏
举报
回复
那如果实在工程下的另外一个文件夹下了,
该如何调用了??
sunnyfun888
2009-10-19
打赏
举报
回复
如果是用struts之类的放在web-inf比较安全
wang1986614
2009-10-19
打赏
举报
回复
安全问题吧!
三界五行外
2009-10-19
打赏
举报
回复
[Quote=引用 10 楼 adaikiss 的回复:]
二楼说的做法我作个比喻,放web-inf下为方法甲,放webroot下为方法乙.
就像一条河,本来有一个独木桥,人容易掉下去.
于是甲不走独木桥(不使用webroot访问jsp),只是在边上造一座安全的桥通行(用服务端转发方式访问jsp).
乙说有桥为什么不走,造桥多破坏环境呀,他要走独木桥,可是他的做法是先将独木桥踹飞("加一个过滤器阻止所有对*.jsp的访问"),再在原地造一座安全的桥通行(阻止了所有对*.jsp的访问,必然还需要一个服务端转发方式来访问jsp页面)
既然都不走独木桥为什么要那么麻烦还去理独木桥?直接另造座桥就好了.桥造在原地和造在边上有什么区别.更何况,两者在转发时的区别只不过是转发url中甲比乙多了一个文件夹.入口还不是一样.
放在webroot下又麻烦(要针对用户直接访问作一些预防动作)又不安全(一些敏感页面),放在web-inf下也不见得打乱了项目文件结构,怕和classes lib弄混,可以在web-inf下创个名为jsp的文件夹专放jsp文件.
直接用模板框架如freemarker,省了这些个麻烦~``
扯得蛋疼~```
[/Quote]
一、加个过滤器并不麻烦,而且加上后就可以永远不用再管了。
二、放在WEB-INF下面,首先从理解上就很别扭,然后WEB-INF下面通常有很多文件,开发过程中从里面寻找一个文件或文件夹是很不方便的。
feyyee
2009-10-16
打赏
举报
回复
关注中。。。
adaikiss
2009-10-16
打赏
举报
回复
二楼说的做法我作个比喻,放web-inf下为方法甲,放webroot下为方法乙.
就像一条河,本来有一个独木桥,人容易掉下去.
于是甲不走独木桥(不使用webroot访问jsp),只是在边上造一座安全的桥通行(用服务端转发方式访问jsp).
乙说有桥为什么不走,造桥多破坏环境呀,他要走独木桥,可是他的做法是先将独木桥踹飞("加一个过滤器阻止所有对*.jsp的访问"),再在原地造一座安全的桥通行(阻止了所有对*.jsp的访问,必然还需要一个服务端转发方式来访问jsp页面)
既然都不走独木桥为什么要那么麻烦还去理独木桥?直接另造座桥就好了.桥造在原地和造在边上有什么区别.更何况,两者在转发时的区别只不过是转发url中甲比乙多了一个文件夹.入口还不是一样.
放在webroot下又麻烦(要针对用户直接访问作一些预防动作)又不安全(一些敏感页面),放在web-inf下也不见得打乱了项目文件结构,怕和classes lib弄混,可以在web-inf下创个名为jsp的文件夹专放jsp文件.
直接用模板框架如freemarker,省了这些个麻烦~``
扯得蛋疼~```
w275221545c
2009-10-16
打赏
举报
回复
关注ing
wenbinglove
2009-10-16
打赏
举报
回复
安全 web-inf
方便 webroot
lgm277531070
2009-10-16
打赏
举报
回复
问题是jsp里面内容都是要通过请求才能获取的 那如果放在webroot下 直接访问的话 页面就空空如也了 或者直接报错
herowach
2009-10-16
打赏
举报
回复
放web-inf干嘛,web-inf一般都是用来放不允许用户访问到的东西吧,JSP本来就是用于访问的,感觉像是一个private的interface一样...,又是让人调又隐藏...
lgm277531070
2009-10-16
打赏
举报
回复
我听一个群里人说 没必要放在web-inf目录里面 但又不知道为不用放 难道放到web-inf里面比放在webroot下面效率要低小 执行速度要慢些???
xihui912
2009-10-16
打赏
举报
回复
web-inf下安全些 自己配置访问方式
Springside3好象是全部放在web-inf下面的
wgj830823
2009-10-16
打赏
举报
回复
如果把这些JSP页面文件移到WEB-INF 目录下,在调用页面的时候就必须把"WEB-INF"添加到URL中。 我们知道,实现页面的跳转有两种方式,一种是通过redirect的方式,一种是通过forward的方式。redirect方式的跳转,系统会在一个新的页面打开要跳转的网页;而forward方式跳转,系统会在原来的页面上打开一个要跳转的网页。所以放到WEB-INF目录下的文件是不允许采用redirect方式的跳转来访问的,如下例1:/test/test1.jsp文件 <html><body> <form name="testform" action="/WEB-INF/jsp/test/test.jsp"> <input type = "submit" value="test"> </form></body></html> 上面这段语句只有一个名为test的按钮,如果单击这个按钮是,系统就会跳转到/WEB-INF/jsp/test/test.jsp,它的代码如下:例2:/WEB-INF/jsp/test/test.jsp文件<html><body>跳转成功!</body></html>事实上,这个跳转是无法成功的,点击按钮后,IE会报“403 Forbidden”的错误。而forward方式的跳转则可以成功,如下代码:例3:/test/test2.jsp文件<html><body><form name="testform"><jsp:forward page = "/WEB-INF/jsp/test/test.jsp" /> </form></body></html> 请注意上面红色的语句,这段就是通过forward的形式来访问/WEB-INF/jsp/test/test.jsp文件,在IE输入地址http://localhost/test1/test2.jsp,网页上就显示“跳转成功!”的信息了,这表示放到了WEB-INF可以通过forward的方式来访问。 个人认为,像这种方式的可能不大时候采用一般jsp进行编程的系统,因为很多页面上都有采用submit这样的方式来进行跳转,但这种方式却非常适合采用struts结构的系统。因为采用这个结果大多是先跳转到一个Action类,然后在Action类进行相关处理后(比如说获取相关的信息保存到session中,进行有效性的判断),然后再forward到另外一个页面,这样放到WEB-INF中的jsp代码可以被正常访问,也防止了对这些页面的直接访问,下面我来举例说明。 下面我们先对配置文件struts-config.xml进行配置,如下:例4:WEB-INF/struts-config.xml文件 <?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config><!-- ========== Action Mapping Definitions ============================== --><action-mappings><action path="/test" type=" test.TestAction" scope="request"> <forward name="test" path="/WEB-INF/jsp/test/test.jsp"/> </action> </action-mappings></struts-config> 上面这个配置非常简单,这里定义了一个action类,它的路径为/test,所对应的类为test.TestAction.java,它都一个跳转页面,别名为test,对应的页面为/WEB-INF/jsp/test/test.jsp。 下面我们对例1的内容进行修改,使其跳转到/test去。例5:修改后的/test/test1.jsp文件 <html><body> <form name="testform" action="/test"> <input type = "submit" value="test"> </form></body></html> 这样我们在IE中访问http://localhost/test/test1.jsp,然后点击test按钮,页面就会跳转到test.TestAction.java这个类来,下面是这个类的内容。package test;import javax.servlet.http.*;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;public class TestAction extends Action{public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { return mapping.findForward("test"); }} 可以看到,这个类是继承Action类的,所有的控制类都必须继承Action类,这个类里面有一个perform方法,跳转到这个类都是从这个方法进行访问的(新版本可以是execute方法),现在这个方法里面只有一条语句,这句话的意思就是跳转到一个别名为test的页面,也就是/WEB-INF/jsp/test/test.jsp页面,这样我们点击test按钮后,IE就会显示“跳转成功!”这条信息,这表示系统允许这样的跳转。注意:CSS文件要存放在根目录,此时引用要用绝对路径!!!引用格式如:/项目名/css文件夹/*.css
标准的MVC模型建议把JSP放在WEB-INF下!
三界五行外
2009-10-16
打赏
举报
回复
通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问。所以说放在哪里就看习惯是什么样了。
一般项目都是要求隐藏性的,只让客户通过请求访问而不是直接访问jsp页面。若放在webroot下面,肯定要加一个过滤器阻止所有对*.jsp的访问。只要比较的话:
放在webroot下面:优点,程序结构清晰,便于编码和维护;缺点,要加过滤器。
放在web-inf下面:优点,不用过滤器;缺点,打乱了程序结构,编码和维护麻烦点。
其实二者没啥大区别,个人倾向于放在webroot下面
关于
jsp页面
是
放在
web
root
目录
下和
web
-
inf
下
优缺点
问: jsp
放在
web
root
目录
下 这样就可以让用户直接访问,jsp
放在
web
-
inf
目录
下就必须要通过请求才能访问。 因此
放在
web
-
inf
下
jsp页面
显得要安全。 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要
放在
web
-
inf
目录
下呢 还有
放在
web
root
和
放在
web
-
inf
目录
下都各有什么明显的
优缺点
。 答1: 通过设置过滤器,
放在
web
关于
jsp页面
是
放在
web
root
目…
搞清楚动态网站工程的这个小知识点原文地址:关于
jsp页面
是
放在
web
root
目录
下和
web
-
inf
下
优缺点
作者:子阳jsp
放在
web
root
目录
下 这样就可以让用户直接访问,jsp
放在
web
-
inf
目录
下就必须要通过请求才能访问。 因此
放在
web
-
inf
下
jsp页面
显得要安全。 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要
放在
web
-
inf
目录
下呢 还有
放在
web
root
和
放在
w
web
inf
下jsp访问css_关于
jsp页面
是
放在
web
root
目录
下和
web
-
inf
下
优缺点
/(如何访问
Web
Root
中的CSS...
问:jsp
放在
web
root
目录
下这样就可以让用户直接访问,jsp
放在
web
-
inf
目录
下就必须要通过请求才能访问。因此
放在
web
-
inf
下
jsp页面
显得要安全。既然这样,那是不是只要是需要通过请求才可以访问的页面就一定要
放在
web
-
inf
目录
下呢还有
放在
web
root
和
放在
web
-
inf
目录
下都各有什么明显的
优缺点
。答1:通过设置过滤器,
放在
web
root
下面的文件也可以实现不能直接访问。...
关于
jsp页面
是
放在
web
root
目录
下和
web
-
inf
下
优缺点
/(如何访问
Web
Root
中的CSS和JS文件)
问: jsp
放在
web
root
目录
下 这样就可以让用户直接访问,jsp
放在
web
-
inf
目录
下就必须要通过请求才能访问。 因此
放在
web
-
inf
下
jsp页面
显得要安全。 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要
放在
web
-
inf
目录
下呢 还有
放在
web
root
和
放在
web
-
inf
目录
下都各有什么明显的
优缺点
。 答1: 通过设置过滤器,
放在
web
jsp页面
放在
web
-
inf
和
web
root
下的
优缺点
jsp页面
放在
web
-
inf
和
web
root
下的
优缺点
CSDN问题:jsp
放在
web
root
目录
下 这样就可以让用户直接访问,jsp
放在
web
-
inf
目录
下就必须要通过请求才能访问。 因此
放在
web
-
inf
下
jsp页面
显得要安全。 既然这样 ,那是不是只要是需要通过请求才可以访问的页面就一定要
放在
web
-
inf
目录
下呢 还有
放在
web
root
和
放在
web
-
inf
目录
下都各有什么明显的
优缺点
Web 开发
81,120
社区成员
341,747
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章