用JFinal实现UrlRewriteHandler问题

Jieven 发布于 2013/08/18 18:21
阅读 468
收藏 1

@JFinal

波波请教一个问题:

// 伪静态:URL重写
nextHandler.handle(UrlRewrite(target), request, response, isHandled);

private static String UrlRewrite(String target) {

// 首页分页/index/1.html
regex = "^/index/([0-9]*).html$";
values = RegexUtil.getMatcherValue(regex, target);
if (!xx.isEmpty(values)) {
return "/?pageNumber=" + values[0];
}

这样无法获取到 pageNumber
-----------
UrlPara     : ?pageNumber=5

Parameter:没有参数
难道要在Handler手工修改request的参数,或者用URL参数代替/index/numxx-pagexx



加载中
1
JFinal
JFinal

    web请求从浏览器过来到达tomcat/jetty这类容器以后,问号挂参如 ?p=k 已然被解析到了 HttpServletRequest对象之中,而到达JFinal Handler 时已经解析都已完成,此时想在target后面用问号挂参是不起作用的。

    如果非要这么做,可以在Handler中挂参后用 redirect重定向让浏览器再发个请求过来

Jieven
Jieven
也只能这样了,我研究了一下request.getParameterMap() 这个Map是一个特殊Map是被锁定的,要修改比较麻烦,直接放作用域里算了
0
菜根乱谭
菜根乱谭

用handler做复杂的url重写的确不太适合,除非action中不要用带有?和参数名的传参方式,改成占位符的方式。比如/blog?id=4改成/blog/4这种方式。

@JFinal 再完善一下handler,使其功能更加强大一些吧,抽时间研究一下urlrewrite的代码,把它借鉴到jfinal中。

菜根乱谭
菜根乱谭
回复 @JFinal : 好,抽时间研究一下handler
JFinal
JFinal
回复 @Jieven : Handler 可扩展的能力是无限的,就好比JFinal 的核心控制中心 ActionHandler 就是Handler扩展,有朋友用 Handler 写了网站防采集功能,所以需要发挥想象力。
Jieven
Jieven
感觉handler是个牛B的东西,但是只有三个参数URL request response,没玩出牛B的感觉,可能现在遇到的需求还不够多。
返回顶部
顶部