通过JSP查看servlet源代码

时间:2015-10-01 16:30:47

标签: java jsp servlets

我有一个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);
}

}

1 个答案:

答案 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)中手动将它们复制为资源。