,我要做的 是根据配置的sql语句 例如 select name as name,age as age from user as user 动态创建 javaBean,
例如public class User{
private String name;
private String age; public void setName(String name){
this.name=name;
}
public void getName(){
return this.name;
}
public void setAge(String name){
this.age=age;
}
public void getAge(){
return this.Age;
}
}然后自己做标签 做出一个增删改查,加搜索的模板来,如果这样配置个sql就可以了,然后jsp页面也是动态生成的。我在系统里有个配置sql的页面,提交一条sql配置相应的 jsp名称和路径 就可以访问这个sql对应的 信息表格了,之前我用asm动态创建class(强调一下::::是创建不是动态修改),但是创建的class被放到工程下默认包下面,我想指定包路径,但是没有找到相应设置的地方。也许你会说有很多开源可以用,但是目前开源往往是提供一个整体的解决方案,我希望是插件形式的,在已有项目中不需要做较大改动,导入n个jar就可以用的插件,我想做的东西只是处理开发过程中的一个环节,一个螺丝钉。。
例如public class User{
private String name;
private String age; public void setName(String name){
this.name=name;
}
public void getName(){
return this.name;
}
public void setAge(String name){
this.age=age;
}
public void getAge(){
return this.Age;
}
}然后自己做标签 做出一个增删改查,加搜索的模板来,如果这样配置个sql就可以了,然后jsp页面也是动态生成的。我在系统里有个配置sql的页面,提交一条sql配置相应的 jsp名称和路径 就可以访问这个sql对应的 信息表格了,之前我用asm动态创建class(强调一下::::是创建不是动态修改),但是创建的class被放到工程下默认包下面,我想指定包路径,但是没有找到相应设置的地方。也许你会说有很多开源可以用,但是目前开源往往是提供一个整体的解决方案,我希望是插件形式的,在已有项目中不需要做较大改动,导入n个jar就可以用的插件,我想做的东西只是处理开发过程中的一个环节,一个螺丝钉。。
BeanGenerator gen = new BeanGenerator() {
{
setNamePrefix("chdw.Object");
}
};
gen.addProperty("A", String.class);
gen.setSuperclass(Object.class);
System.out.println(gen.createClass());
“在visitClass中那个类名直接增加包名就可以的” 我试验过了 不行 报错
writer.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, "chdw/A", null,
"java/lang/Object", new String[0]);
writer.visitSource("Simple.java", null); MethodVisitor methodVisitor = writer.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
methodVisitor.visitCode();
methodVisitor.visitVarInsn(Opcodes.ALOAD, 0);
methodVisitor.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
methodVisitor.visitInsn(Opcodes.RETURN);
methodVisitor.visitMaxs(0, 0);
methodVisitor.visitEnd();
final byte[] b = writer.toByteArray();
Class clz = new ClassLoader() {
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
if(name.equals("chdw.A"))
return defineClass("chdw.A", b, 0, b.length);
else
return super.loadClass(name);
}
}.loadClass("chdw.A");
System.out.println(clz.newInstance().getClass().getName());