在sae中使用jfinal框架开发web工程遇到的问题

sae使用总结

一、部署应用后访问报错
web应用在本地开发完成,部署使用无问题,在部署到sae上后访问应用,报以下错误
在sae中使用jfinal框架开发web工程遇到的问题_第1张图片

经定位,原因在在于jfinal中的JFinalFilter类中。
本地开发时,在JFinalFilter的第57行代码String contextPath = filterConfig.getServletContext().getContextPath();得到的contextPath是/jusousuo
第66行代码String target = request.getRequestURI();得到的是/jusousuo/xxxxxx
67        if (contextPathLength != 0)
68            target = target.substring(contextPathLength);
其中contextPathLength为contextPath的长度,因此JFinalFilter处理的路径是去掉应用名的路径,即targer为/xxxxxx

将war包部署到sae中后,contextPath值为/1/jusousuo,request.getRequestURI()的值为/xxxxxx,因此在sae中,JFinalFilter需要注释掉67、68行代码,得到的target已经不包含应用名


二、sae环境中重定向及页面contextPath
在sae中访问应用主页的可以通过访问http://jusousuo.sinaapp.com/或者http://jusousuo.sinaapp.com/1/jusousuo/

在jfinal的controller中,直接调用redirect("/")方法,浏览器重新访问的是http://jusousuo.sinaapp.com/1/jusousuo/
在jsp页面中,<base href="http://jusousuo.sinaapp.com:80/1/jusousuo/">
因此contextPath及base href通过配置文件,使重定向(给出绝对路径)及base href中不出现/1/jusousuo,直接使用http://jusousuo.sinaapp.com/访问到应用


以上在sae中应用是通过war包部署,版本号为1。

源码地址https://github.com/seightday/isearch


你可能感兴趣的:(sae,jFinal)