比如说在struts2框架下,我的action从前台页面接受到某个值,在action中做了该值的条件判断以后。
系统自动在另外一个.java文件中所有代码的某个位置(如匹配字符‘testStart’与‘testEnd’之间)写入一行代码。
举个栗子:
public String test(){
String aaa = getRequest().getParameter("para");
if(aaa.equals("bbb")){
String add = "I want to add the text";
//接下来我该怎么样把字符串add通过系统的文件操作
//自动写入.../test.java文件中的某个占位里
}
return "aaa";
}
将add写入.../test.java中:
public String test(){
testStart
//I want to add the text写入这里
endStart
return "ccc";
}
有办法实现这样的效果吗?
------解决思路----------------------
有的,spring的aop(动态代理),你可以看下
------解决思路----------------------
如果想有效率一点 使用RandomAccessFile记录游标进行写入
------解决思路----------------------
如果这个指定文件是java源码,你写完肯定想编译。
文件可以全部读进内存,操作完字符串整体写回。
编译可以用Runtime类调命令行编译器。
调用可以Class.forName取得Instance然后反射调用预定接口
------解决思路----------------------
原始设计就不够好,为什么不用jvm支持的脚本语言来做,Jython或groovy?
import groovy.lang.GroovyShell;
Binding binding = newBinding();
//传递参数
binding.setVariable("x",10);
binding.setVariable("language", "Groovy");
GroovyShell shell = newGroovyShell(binding);
//调用,返回值为10
Object value =shell.evaluate
("println\"Welcome to $language\"; y = x * 2; z = x * 3; return x ");