Es gibt ein Programm (das von jedem von Ihnen verwendeten Anwendungsserver verwendet wird), das eine .jsp-Datei in eine .java-Datei kompiliert. Zum Beispiel die Sonnen- / Orakelversion jspc .
Sobald Sie die .java-Datei haben, die von der .jsp-Übersetzung erzeugt wird (möglicherweise möchten Sie diese sogar als Teil des Erstellungsprozesses verwenden - die jsp-Datei wird beim ersten Treffer vorab kompiliert, um die Leistung zu verbessern), können Sie Tests dagegen ausführen Sie verspotten die Anfrage und überprüfen die Antwort.
(mit Beispiel bearbeiten :)
Die Schlüsselmethode hierfür ist die _jspService(HttpServletRequest, HttpServletResponse)
Methode.
Eine triviale Hallo Welt jsp:
<html>
<head>
<title>Hello world</title>
</head>
<body>
<h1>Hello world</h1>
Today is: <%= new java.util.Date().toString() %>
</body>
</html>
(test.jsp befindet sich in einem Verzeichnis mit dem Namen 'webapp' und auch in einem 'out'-Verzeichnis.) Beim Kompilieren mit dem Befehl jspc -v -d out -compile -uriroot webapp/ test.jsp
wird eine Datei mit dem Namen' out ' in ein out-Verzeichnis gestellt test_jsp.java
. Diese Datei enthält (zusammen mit einigen anderen Konfigurationskonfigurationen):
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("<html>\n\t<head>\n\t\t<title>Hello world</title>\n\t</head>\n\t<body>\n\t
\t<h1>Hello world</h1>\n\t\tToday is: ");
out.print( new java.util.Date().toString() );
out.write("\n\t</body>\n</html>\n\n");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
An diesem Punkt wird überprüft, ob der JspWriter mit Schreiben oder Drucken aufgerufen wird und der Inhalt des Aufrufs so ist, wie Sie es erwarten.
Alles in allem sollte man in einer idealen Welt keine Logik innerhalb des JSP haben - eine solche Logik wäre entweder im Controller oder in Taglibs, die mit anderen Techniken getestet werden.