【问题标题】:view servlet source code through a JSP通过 JSP 查看 servlet 源代码
【发布时间】:2015-10-01 16:30:47
【问题描述】:

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

}

【问题讨论】:

  • 这闻起来像XY problem 问题。为什么要显示你的源代码?
  • 您可以将 .java 源添加到您的 Web 应用程序到 WEB-INF/classes 中,然后从 .class 文件中将它们作为资源读取。现在无法制作工作示例。我稍后会尝试做。
  • 另请参阅stackoverflow.com/questions/132052/…,了解有关提供静态资源的 servlet 代码示例。

标签: java jsp servlets


【解决方案1】:

您可以使用这样的代码将您的类的 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 运行项目并且它不会将 .java 文件复制到类中时,这是从 src 读取 java 代码的技巧。但请确保在准备 .war 文件时将它们手动复制到构建脚本(maven、ant)中作为资源。

【讨论】:

  • 这在 servlet 容器中不起作用,除非您以某种方式强制构建工具在战争中也包含 java 源代码。
  • 这里是如何使用 maven 包含 java 源代码:stackoverflow.com/questions/4264359/…
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多