`
zzzzzz5530041
  • 浏览: 34327 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

根据文件模板用ant设值

阅读更多
最近有个需求,要求用java生成一段js的变量,因为变量是动态的,项目也是global的。因此想到了用ant.刚写完,现在乘热打铁。
我用的是filter去截取用户请求路径。主要业务是在doFilter里面,只是个demo哈。
package com.test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;

public class TestFilter implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		System.out.println("--------------");
		HttpServletRequest req = (HttpServletRequest) arg0;
		String uri = req.getRequestURI();
		System.out.println(uri);
//要生成的jsp,把var 变量就放在这里了,其他JSP直接include这个jsp就行
		String reportFileName = "lala.jsp";
		System.out.println("reportFileName == " + reportFileName);
		//ant 模板
		String tempPathAnt = "jsVarable.xml";
		//build的路径
		String buildPath = "D:\\study\\myeclipse6.0\\test\\src\\com\\test\\"
				+ tempPathAnt;
//要生成的jsp的路径
		String destPath = "D:\\study\\myeclipse6.0\\test\\WebRoot\\"
				+ reportFileName;
		System.out.println("destPath " + destPath);
		Map map = new HashMap();
		// set content value
		String content = "<script>var test=\">"+uri+"<\"</script>";
		//设值,以便ant能得到
		map.put("destPath", destPath);
		map.put("content", content);
		build(buildPath, map, true);
		try {
			//因为是文件更新,所以用点时间去等他更新, 必须修改
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		arg2.doFilter(arg0, arg1);
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

	public static boolean build(String buildFile, Map propertyMap,
			boolean isDebug) {

		File file = new File(buildFile);
		Project project = new Project();
		ProjectHelper helper = ProjectHelper.getProjectHelper();

		if (isDebug) {
			DefaultLogger consoleLogger = new DefaultLogger();
			consoleLogger.setErrorPrintStream(System.err);
			consoleLogger.setOutputPrintStream(System.out);
			consoleLogger.setMessageOutputLevel(Project.MSG_ERR);
			project.addBuildListener(consoleLogger);
		}

		project.fireBuildStarted();
		project.init();
//遍历传来的map
		Iterator iterator = propertyMap.keySet().iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			Object value = propertyMap.get(key);
			if (value instanceof String) {
				project.setProperty(key, (String) value);
			}
		}

		helper.parse(project, file);

		project.executeTarget(project.getDefaultTarget());
		project.fireBuildFinished(null);
		return true;

	}
}




jsVarable.xml
<?xml version="1.0" encoding="UTF-8"?>

<project name="test" default="test" basedir=".">

	<!-- 1、过滤参数 -->
	<target name="setParam">

		<!-- 内容 -->
		<filter token="content" value="${content}" />
	</target>
	<!-- 2、删除原有文件 -->
	<target name="removeFile" depends="setParam">
		<delete file="${destPath}" />
	</target>

	<!-- 3、创建文件 -->
	<target name="test" depends="setParam,removeFile">
		<copyfile dest="${destPath}" src="jsTemplate.jsp" filtering="true" forceoverwrite="true" />
		<echo message="copyfile ${destPath} success" />
			 
	</target>
</project>


jsTemplate.jsp


@content@





分享到:
评论

相关推荐

    ant的build.xml模板

    本文将深入解析Ant的`build.xml`模板,探讨其核心概念,并通过实例展示如何利用`build.xml`文件进行项目构建。 `build.xml`是Ant的构建配置文件,它是Ant执行任务的蓝图,定义了一系列的构建目标和任务。文件的结构...

    Axure ant design pro后台模板可交互

    这个后台模板包含的文件“ant design4.40-web组件库”很可能是Ant Design Pro的最新版本4.40的Web组件集合,其中包括按钮、表单、表格、导航、模态框等常用元素,方便设计师直接应用到Axure项目中。而“ant design ...

    ant项目模板

    在使用模板时,开发者无需从零开始设置项目,而是可以直接利用已有的框架进行修改和扩展,节省了大量的时间。这尤其对于遵循特定编码规范或有固定项目结构需求的团队来说,是极其有益的。 模板中的关键组成部分可能...

    AXURE Ant Design 4.40 - web组件库 ant design pro 后台模板 产品经理

    在压缩包子文件的文件名称“ant design4.40-web组件库 ant design pro后台模板(精作)”中,我们可以推测该压缩包包含的是精心制作的Ant Design 4.40版本Web组件库,以及基于Ant Design Pro的后台管理模板。...

    ant安装文件+使用模板

    Ant是Apache软件基金会的一个开放源代码项目,它是一个基于Java的构建工具,主要用于自动化Java项目的构建、...在实际开发中,根据项目的具体需求,灵活运用Ant提供的各种任务和特性,可以实现高度定制化的构建流程。

    ant design4.40 web组件库 ant design pro后台模板库(精细-完整)

    ant design4.40-web组件库 是基于Axure ,参考Ant Design 的样式而设计的一套模板库,是产品经理必备套件库,Ant Design4.40-最新精编文件22年3月,AXURE原型设计,需要的素材和模板内容里面都有可以借鉴。...

    Vue3+Vite+Ant Design 后台管理系统模板.zip

    Vue3+Vite+Ant Design 后台管理系统模板是一个现代且高效的前端开发框架组合,用于构建功能丰富的Web应用。这个模板结合了Vue.js的最新版本3、Vite构建工具以及Ant Design Vue UI库,旨在提供一个快速开发后台管理...

    SpringBoot+AntDesignVue实现excel导入功能

    描述: 该文章旨在介绍如何使用 SpringBoot 和 AntDesignVue 实现 Excel 导入功能,该功能主要是使用 Ant Design Vue 中的 upload 组件来实现导入 excel 文件的功能。 标签: SpringBoot AntDesignVue excel 实现 ...

    ant脚本通用模板222 ant脚本通用模板222

    ### ant脚本通用模板222解析与应用 在软件开发过程中,构建工具扮演着重要的角色,能够自动化处理编译、测试、打包等任务,提高开发效率并减少人为错误。Apache Ant作为一款流行的Java项目构建工具,凭借其简单易用...

    ant-ux omnigraffle模板

    使用Ant-UX.gstencil文件,用户可以直接在Omnigraffle中导入并开始设计。gstencil格式是Omnigraffle的图形库文件,包含了预设的图形、形状和样式,使得设计师能够即拖即用,大大提升了工作效率。只需简单几步,就...

    ant脚本通用模板 ant脚本通用模板

    ### ant脚本通用模板知识点详解 #### 一、Ant简介 Apache Ant 是一个Java环境下的构建工具,主要用于编译、测试、部署等任务的自动化执行。Ant使用XML格式来描述构建过程,使得整个构建流程清晰易懂。对于中小型...

    jax生成client代码的Ant配置文件模板

    在提供的Ant配置文件模板中,我们看到以下关键元素: 1. `&lt;project&gt;` 元素:这是Ant构建文件的根元素,定义了项目的名称(`name`)和基础目录(`basedir`),以及默认目标(`default`)——`wsclientgen`。 2. `...

    react-基于antdmobile的react项目模版

    它作为一个项目模板,可以帮助开发者理解和学习如何组织React项目的文件结构,设置配置文件,以及如何引入和使用Ant Design Mobile的组件。 在文件名称列表"react-antd-mobile-master"中,我们可以推断出这是该项目...

    替换文本文件中Ant表达式的Ant扩展任务

    该程序为Ant的扩展任务,在拷贝文本格式的文件的同时替换文件中的Ant表达式,类似于 ${property.name},属性值来自于Ant脚本加载的属性文件,如果没有属性文件中没有定义相关属性,那么保留原来的表达式;...

    ant design4.40 web组件库 ant design pro后台模板库(精细-完整).rar

    ant design4.40-web组件库 是基于Axure ,参考Ant Design 的样式而设计的一套模板库,是产品经理必备套件库,Ant Design4.40-最新精编文件22年3月,AXURE原型设计,需要的素材和模板内容里面都有可以借鉴。

    Jmeter+ant实现测试报告build.xml和报告模板jmeter-results-newreport.xsl

    运行Ant构建文件,它会执行JMeter测试,生成CSV或XML结果文件,并使用`jmeter-results-newreport.xsl`模板转换成HTML报告。如果配置了邮件发送任务,那么测试报告将自动发送到指定的邮箱。 通过以上步骤,你可以...

    AntDesign的Axure模板

    在使用AntDesign的Axure模板时,首先,你需要确保已安装了包含AntDesign风格的Axure部件库。这个库通常包含了AntDesign中的各种组件,如按钮、表单、布局、导航等,这些都是构建网页或应用界面的基础元素。你可以...

    2023文件名批量重命名软件AntRenamer-2.12.0-Portable中文版

    1. **模板重命名**:AntRenamer允许用户自定义模板,如添加前缀、后缀、替换特定字符串、增加数字序列等,满足各种重命名需求。 2. **元数据重命名**:对于图片、音乐等文件,AntRenamer可以提取文件的元数据(如...

    用ant编译J2ME代码的build.xml模板

    在使用模板前,你需要根据自己的项目结构修改这些路径,确保Ant能够正确地找到源代码和依赖库。 在`buildfiles`这个压缩包中,除了`build.xml`外,可能还包含了一些辅助文件,如`Conf.properties`和`GEN.properties...

Global site tag (gtag.js) - Google Analytics