Ada sebuah program (digunakan oleh server aplikasi apa pun yang Anda gunakan) yang mengkompilasi file .jsp menjadi file .java. Misalnya, versi sun / oracle jspc .
Setelah Anda memiliki .java yang akan dihasilkan oleh terjemahan .jsp (Anda bahkan mungkin ingin mempertimbangkan untuk menggunakan ini sebagai bagian dari proses build - mengkompilasi jsp untuk peningkatan kinerja pada hit pertama), Anda kemudian dapat menjalankan tes terhadapnya. dengan mengejek permintaan dan memverifikasi respons adalah apa yang Anda harapkan.
(sunting dengan contoh :)
Metode kunci untuk ini adalah _jspService(HttpServletRequest, HttpServletResponse)
metode.
Halo halo dunia yang sepele:
<html>
<head>
<title>Hello world</title>
</head>
<body>
<h1>Hello world</h1>
Today is: <%= new java.util.Date().toString() %>
</body>
</html>
(test.jsp terletak di dalam direktori bernama 'webapp' dan juga direktori 'keluar') Ketika dikompilasi dengan perintah jspc -v -d out -compile -uriroot webapp/ test.jsp
menempatkan ke dalam direktori keluar file yang disebut test_jsp.java
. File ini ada di dalamnya (bersama dengan sedikit pengaturan konfigurasi lainnya):
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);
}
}
}
Pada titik ini, ini merupakan tanda centang untuk memastikan bahwa JspWriter dipanggil dengan tulis atau cetak dan isi panggilannya sesuai dengan yang Anda harapkan.
Semua yang dikatakan, di dunia yang ideal, seseorang seharusnya tidak memiliki logika dalam jsp - logika seperti itu akan berada di controller atau taglibs yang diuji dengan teknik lain.