我有一个Java类(Servlet)。我需要显示源代码;无论servlet中的内容如何。 这完全用于测试目的
我知道我可以通过附加到StringBuffer对象来做到这一点,但我有更多行。另一种替代方法是写入文件。它也是一样的。我应该使用文件编写器编写每一行。有一个简单的方法吗?
我怎样才能做到这一点?
public class TimeZoneValidator extends HttpServlet {
private static final long serialVersionUID = 1L;
public TimeZoneValidator() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//I need this code to be displayed in my JSP(index.jsp) file
request.setAttribute("oldNumberOfNghtsCalc", oldNumberOfNghtsCalc);
request.setAttribute("newNumberOfNghtsCalc", newNumberOfNghtsCalc);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/index.jsp");
requestDispatcher.forward(request, response);
}
}
答案 0 :(得分:0)
您可以使用这样的代码将类的java源代码加载到String值中:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream is = this.getClass().getResourceAsStream(this.getClass().getSimpleName() + ".java");
if (is == null) { // Eclipse doesn't want to copy .java files into binary folder
// So in developer mode we have to read it from "src" folder
is = new FileInputStream(new File("src", this.getClass().getName().replace(".", "/") + ".java"));
}
IOUtils.copy(is, baos);
is.close();
baos.close();
String javaSourceCode = new String(baos.toByteArray(), Charset.forName("utf-8"));
这是从Eclipse运行项目时从src读取java代码的一个技巧,它不会将.java文件复制到类中。但是,当您准备.war文件时,请确保在构建脚本(maven,ant)中手动将它们复制为资源。