首页 > 编程学习 > Nutz:通过URL路径查找对应的类及入口函数
201312 月20

Nutz:通过URL路径查找对应的类及入口函数

由于Nutz是零配置的,所以通过URL找到处理类以及跳转的页面,就显得很麻烦,不方便维护。

于是,我在大神兽的指导下,实现如下功能:在项目启动时,将URL路径、类、方法、以及跳转页面写入项目中的一个文件中,方便查看。

@UrlMappingBy(value=UrlMappingSet.class)
public class MainModule { 
}

在Nutz入口类,加入 @UrlMappingBy。

UrlMappingSet.java 实现在 /WEB-INF/ 目录下生成 paths.txt 文件,记录路径,文件格式如下:
       QQ截图20131220094847
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 , 转载请保留.

One Response to “Nutz:通过URL路径查找对应的类及入口函数”

  1. #1 vsr 回复 | 引用 Post:2015-06-26 11:41

    前人栽树,后人乘凉。

发表评论