最近有个需求,要求用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`模板,探讨其核心概念,并通过实例展示如何利用`build.xml`文件进行项目构建。 `build.xml`是Ant的构建配置文件,它是Ant执行任务的蓝图,定义了一系列的构建目标和任务。文件的结构...
这个后台模板包含的文件“ant design4.40-web组件库”很可能是Ant Design Pro的最新版本4.40的Web组件集合,其中包括按钮、表单、表格、导航、模态框等常用元素,方便设计师直接应用到Axure项目中。而“ant design ...
在使用模板时,开发者无需从零开始设置项目,而是可以直接利用已有的框架进行修改和扩展,节省了大量的时间。这尤其对于遵循特定编码规范或有固定项目结构需求的团队来说,是极其有益的。 模板中的关键组成部分可能...
在压缩包子文件的文件名称“ant design4.40-web组件库 ant design pro后台模板(精作)”中,我们可以推测该压缩包包含的是精心制作的Ant Design 4.40版本Web组件库,以及基于Ant Design Pro的后台管理模板。...
Ant是Apache软件基金会的一个开放源代码项目,它是一个基于Java的构建工具,主要用于自动化Java项目的构建、...在实际开发中,根据项目的具体需求,灵活运用Ant提供的各种任务和特性,可以实现高度定制化的构建流程。
ant design4.40-web组件库 是基于Axure ,参考Ant Design 的样式而设计的一套模板库,是产品经理必备套件库,Ant Design4.40-最新精编文件22年3月,AXURE原型设计,需要的素材和模板内容里面都有可以借鉴。...
Vue3+Vite+Ant Design 后台管理系统模板是一个现代且高效的前端开发框架组合,用于构建功能丰富的Web应用。这个模板结合了Vue.js的最新版本3、Vite构建工具以及Ant Design Vue UI库,旨在提供一个快速开发后台管理...
描述: 该文章旨在介绍如何使用 SpringBoot 和 AntDesignVue 实现 Excel 导入功能,该功能主要是使用 Ant Design Vue 中的 upload 组件来实现导入 excel 文件的功能。 标签: SpringBoot AntDesignVue excel 实现 ...
### ant脚本通用模板222解析与应用 在软件开发过程中,构建工具扮演着重要的角色,能够自动化处理编译、测试、打包等任务,提高开发效率并减少人为错误。Apache Ant作为一款流行的Java项目构建工具,凭借其简单易用...
使用Ant-UX.gstencil文件,用户可以直接在Omnigraffle中导入并开始设计。gstencil格式是Omnigraffle的图形库文件,包含了预设的图形、形状和样式,使得设计师能够即拖即用,大大提升了工作效率。只需简单几步,就...
### ant脚本通用模板知识点详解 #### 一、Ant简介 Apache Ant 是一个Java环境下的构建工具,主要用于编译、测试、部署等任务的自动化执行。Ant使用XML格式来描述构建过程,使得整个构建流程清晰易懂。对于中小型...
在提供的Ant配置文件模板中,我们看到以下关键元素: 1. `<project>` 元素:这是Ant构建文件的根元素,定义了项目的名称(`name`)和基础目录(`basedir`),以及默认目标(`default`)——`wsclientgen`。 2. `...
它作为一个项目模板,可以帮助开发者理解和学习如何组织React项目的文件结构,设置配置文件,以及如何引入和使用Ant Design Mobile的组件。 在文件名称列表"react-antd-mobile-master"中,我们可以推断出这是该项目...
该程序为Ant的扩展任务,在拷贝文本格式的文件的同时替换文件中的Ant表达式,类似于 ${property.name},属性值来自于Ant脚本加载的属性文件,如果没有属性文件中没有定义相关属性,那么保留原来的表达式;...
ant design4.40-web组件库 是基于Axure ,参考Ant Design 的样式而设计的一套模板库,是产品经理必备套件库,Ant Design4.40-最新精编文件22年3月,AXURE原型设计,需要的素材和模板内容里面都有可以借鉴。
运行Ant构建文件,它会执行JMeter测试,生成CSV或XML结果文件,并使用`jmeter-results-newreport.xsl`模板转换成HTML报告。如果配置了邮件发送任务,那么测试报告将自动发送到指定的邮箱。 通过以上步骤,你可以...
在使用AntDesign的Axure模板时,首先,你需要确保已安装了包含AntDesign风格的Axure部件库。这个库通常包含了AntDesign中的各种组件,如按钮、表单、布局、导航等,这些都是构建网页或应用界面的基础元素。你可以...
1. **模板重命名**:AntRenamer允许用户自定义模板,如添加前缀、后缀、替换特定字符串、增加数字序列等,满足各种重命名需求。 2. **元数据重命名**:对于图片、音乐等文件,AntRenamer可以提取文件的元数据(如...
在使用模板前,你需要根据自己的项目结构修改这些路径,确保Ant能够正确地找到源代码和依赖库。 在`buildfiles`这个压缩包中,除了`build.xml`外,可能还包含了一些辅助文件,如`Conf.properties`和`GEN.properties...