201312 月20
Nutz:通过URL路径查找对应的类及入口函数
由于Nutz是零配置的,所以通过URL找到处理类以及跳转的页面,就显得很麻烦,不方便维护。
于是,我在大神兽的指导下,实现如下功能:在项目启动时,将URL路径、类、方法、以及跳转页面写入项目中的一个文件中,方便查看。
@UrlMappingBy(value=UrlMappingSet.class) public class MainModule { }
在Nutz入口类,加入 @UrlMappingBy。
UrlMappingSet.java 实现在 /WEB-INF/ 目录下生成 paths.txt 文件,记录路径,文件格式如下:
UrlMappingSet.java 源码:
package com.hits.core; import java.io.File; import java.lang.reflect.Method; import org.nutz.lang.Files; import org.nutz.lang.Lang; import org.nutz.mvc.ActionChainMaker; import org.nutz.mvc.ActionInfo; import org.nutz.mvc.Mvcs; import org.nutz.mvc.NutConfig; import org.nutz.mvc.impl.UrlMappingImpl; /** * 类描述: 创建人:Wizzer 联系方式:www.wizzer.cn 创建时间:2013-12-19 下午10:36:17 * * @version */ public class UrlMappingSet extends UrlMappingImpl { private static int count = 0; public void add(ActionChainMaker maker, ActionInfo ai, NutConfig config) { super.add(maker, ai, config); printActionMappingThis(ai); } protected void printActionMappingThis(ActionInfo ai) { String[] paths = ai.getPaths(); StringBuilder sb = new StringBuilder(); if (null != paths && paths.length > 0) { sb.append(paths[0]); for (int i = 1; i < paths.length; i++) sb.append(",").append(paths[i]); } else { throw Lang.impossible(); } sb.append("\n"); // 打印方法名 Method method = ai.getMethod(); String str; if (null != method) str = String.format("%-30s : %-10s", Lang.simpleMetodDesc(method), method.getReturnType().getSimpleName()); else throw Lang.impossible(); sb.append("\t" + ai.getModuleType().getName()); sb.append("\n\r"); sb.append("\t" + str); sb.append("\n"); String filepath = Mvcs.getServletContext().getRealPath("/WEB-INF/") + "/paths.txt"; File f = new File(filepath); if (count == 0) { Files.write(f, sb.toString()); } else { Files.appendWrite(f, sb.toString()); } count++; } }
本文地址:https://wizzer.cn/archives/2824 , 转载请保留.
前人栽树,后人乘凉。