开发者社区> 问答> 正文

404错误的配置问题,对不存在url返回404页面?报错

@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未定义,这个问题有办法解决么?

展开
收起
爱吃鱼的程序员 2020-06-22 18:55:13 538 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    对于第一个问题,我也发现了

    你可以这样来解决:

    this.getPara()取得那个参数,如果不为空则返回404,说白了就是对这个参数进行分析


    用拦截器那就得在每个不用参数的方法里面加这个判断了,这样全局配置的error其实就没有用了

    web.xml我工程的配置可以实现

    <error-page>
        <error-code>404</error-code>
        <location>/resource/404.html</location>
      </error-page>

    嗯,如果jFinal返回了404就好办,但现在的问题是它不返回404,因为url能匹配到方法,后面的被当成是无用的参数,而不是错误的url

    你要用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/ 页面甚至是整个域名下的页面的排名可能就会受到影响,被降权等惩罚

    这样的链接在本域名下是不会有的,使坏的人在其它域名中生成这些链接,估计影响会很小。JFinal目前的路由设计一是为了简单、二是为了匹配性能高到极致
    2020-06-22 18:55:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载