访问WEB-INF目录下的jsp文件

大约两个小时的测试,终于对昨天的404问题有点一点眉目了。一般我们出于安全的考虑,会将jsp文件放在WEB-INF目录下,然后在外部通过index.jsp || index.html 链接进来。

最简单的方式就是<jsp:forward  page=”/WEB-INF/content/main.jsp” />,没错这是完美的解决方案。但问题也随之出来了,如果你/WEB-INF/content目录下的jsp文件中包含有Struts2的标签,
那么forward出来的页面中,form的action属性会让你很头疼,因为Struts2的<s:form />标签“翻译”出来的action属性居然这样的一个怪物“/IntegrateFramework/WEB-INF/jsp/myAction.action”。
很明显,Struts2框架又在“作恶“了,它貌似聪明的给你加上了一些莫须有的东西。也就是它人为的加上form页面的路径。至于这是为什么,很明显就是Struts2框架默认加了这些属性设置。
然后我们来思考如何解决这个问题,目前我的解决方案是这样的。之所以会出现上面的问题,就是jsp标签和struts2标签混淆了,导致它解析的时候产生了我认为的“不一致”问题。
 
解决的办法如下:
一、使用<jsp:forward>,然后进入的页面使用<form: action=”xxx”>这种不使用框架标签的做法。
二、在index页面就使用<s:form action=””/>,一开始就提交给Struts2的拦截器,这样后面都不存在这样的问题。
三、在同事的帮助下,发现了<s:form>居然有这样一个属性namespace,只要强制指定它的值为namespace=””,就可以达到我们要的效果了,问题是,难道我每次都要指定这样一个值吗?
忘记了咋办?因此,在我看来,最完美的解决方案还是前两个,任选其一吧。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值