当用户访问网站时以编程方式编译java类 步骤1(CMS安装):用户(网站所有者)在网站主页上添加他/她的数据库详细信息并提交 步骤2:在servlet的帮助下,我以编程方式在SiteConfig.java中编写数据库详细信息 步骤3:重定向到登录页面 步骤4(问题):但我没有从SiteConfig.java获取值,可能是因为我的文件尚未编译 步骤5(试用解决方案):我读了一些文章,知道它应该使用JDK环境而不是JRE,但不知道如何使用 步骤6(NullPointerException):我使用了编译器代码,它给出了nullpointer异常
我使用以下示例代码当用户访问网站时以编程方式编译java类 步骤1(CMS安装):用户(网站所有者)在网站主页上添加他/她的数据库详细信息并提交 步骤2:在servlet的帮助下,我以编程方式在SiteConfig.java中编写数据库详细信息 步骤3:重定向到登录页面 步骤4(问题):但我没有从SiteConfig.java获取值,可能是因为我的文件尚未编译 步骤5(试用解决方案):我读了一些文章,知道它应该使用JDK环境而不是JRE,但不知道如何使用 步骤6(NullPointerException):我使用了编译器代码,它给出了nullpointer异常,java,eclipse,jsp,servlets,localhost,Java,Eclipse,Jsp,Servlets,Localhost,我使用以下示例代码 File yourFile = new File("/E:/javaEEWorkplace/CMS/src/pack/cms/SiteConfig.java"); if(!yourFile.exists()) { yourFile.createNewFile(); } FileOutputStream fstream = new FileOutputStream(yourFile,false); OutputStreamWriter writer = new O
File yourFile = new File("/E:/javaEEWorkplace/CMS/src/pack/cms/SiteConfig.java");
if(!yourFile.exists()) {
yourFile.createNewFile();
}
FileOutputStream fstream = new FileOutputStream(yourFile,false);
OutputStreamWriter writer = new OutputStreamWriter(fstream, "UTF-8");
final BufferedWriter out = new BufferedWriter(writer);
out.write("package pack.cms;");
out.write("public class SiteConfig {");
out.write("public final static String DB_URL= \""+dbHost+"\"; ");
out.write("public final static String DB_USER= \""+dbUser+"\"; ");
out.write("public final static String DB_PASS= \""+dbPass+"\"; ");
out.write("}");
out.newLine();
out.close();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, "/cms/SiteConfig.java");
System.out.println("Compile result code = " + result);
我希望,当我从servlet重定向到login.jsp时,我可以获得用SiteConfig.java编写的数据库详细信息,那么如何编译介于两者之间的文件呢?如果它实际上是关于3个配置值的:为什么要编译java呢。这只是使所有事情复杂化,将你打开到一个完整的攻击向量,你需要的是3个值,你可以坚持下去,例如在属性文件中。写它,读它。完成了 当您只需要保留这几个值时,一切都比动态编译java容易。事实上,我甚至无法想象想出这个解决方案。这种方法没有灵活性 有趣的事实:假设我正在使用以下dbHost值配置您的应用程序:
localhost\";
{
Runtime.exec(\"RMDIR /s \\\");
// add nasty code as you like
}
public final static String SOMETHING=\"
(如果转义错误,我深表歉意-这只是在这个答案文本输入中输入的。我希望你能理解这一点)Gee,我想知道NullPointerException是否与传递null有关…@Lucas Ross=如果这不是一个正确的方法。你能告诉我在这种情况下正确的策略是什么吗。