@JFinal 你好,想跟你请教个问题:
比如网校网这样的url http://www.wangxiaowang.com/kecheng
在后面随便再加什么,比如 http://www.wangxiaowang.com/kecheng/tyu 都会被认为是 kecheng 方法的参数,然后返回正常的结果页面。但其实这个url是不存在的,jFinal并不会返回404。
有什么办法让jFinal能对所有不存在的url都返回404呢?
还有,在config里配置了error代码
me.setError404View("/common/error.html");
me.setError500View("/common/error.html");
以后,如果是404或500,不会经过我添加的为传递session的拦截器,导致页面报错 session未定义,这个问题有办法解决么?
对于第一个问题,我也发现了
你可以这样来解决:
this.getPara()取得那个参数,如果不为空则返回404,说白了就是对这个参数进行分析web.xml我工程的配置可以实现
<error-page>
<error-code>404</error-code>
<location>/resource/404.html</location>
</error-page>
你要用session的话,应该跳到jsp中把
this.setAttr()设置的是request
this.setSessionAttr设置的是session
session用的之前别人发的代码,用拦截器解决了,但好像全局配置的404不经过拦截器就直接跳转到404页面了JFinal提供了 NoUrlPara这个拦截器来支持楼主的需求,只需要这样:@Before(NoUrlPara.class)
如果me.setError404View还搞不定需求,可以考虑扩展IErrorRenderFactory来灵活实现各种异常处理需求
看了下源码,这就是1L说的方法,哈哈这肯定设计到JFinal路由的配置
@JFinal
再补充一下,很多网站与jfinal处理的方式是一样的,一般来说链接都是点击进入的,很少有直接输入的,例如oschina的新闻频道链接: http://www.oschina.net/news/abc回复 @VikingZ:使用@Before(NoUrlPara.class)搞定这个我知道,但对不存在的url处理不好,会被人恶意做出很多不同url但内容相同的页面链接,搜索引擎抓取后,如果判定是作弊,那对网站的影响就很大了如果下面这样的链接让搜索引擎全部抓取到:
http://www.wangxiaowang.com/kecheng/tyu
http://www.wangxiaowang.com/kecheng/abc
http://www.wangxiaowang.com/kecheng/qwe
h
ttp://www.wangxiaowang.com/kecheng/lkj
......
假如被搜索引擎认为是作弊,那
http://www.wangxiaowang.com/kecheng/ 页面甚至是整个域名下的页面的排名可能就会受到影响,被降权等惩罚
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。