Tồn tại một chương trình (được sử dụng bởi bất kỳ máy chủ ứng dụng nào bạn đang sử dụng) để biên dịch tệp .jsp thành tệp .java. Ví dụ, phiên bản mặt trời / oracle jspc .
Khi bạn có .java sẽ được tạo bởi bản dịch .jsp (bạn thậm chí có thể muốn xem xét sử dụng phần này như một phần của quy trình xây dựng - biên dịch trước jsp để cải thiện hiệu suất trong lần truy cập đầu tiên), sau đó bạn có thể chạy thử nghiệm với nó bằng cách chế nhạo yêu cầu và xác minh phản hồi là những gì bạn đang mong đợi.
(chỉnh sửa với ví dụ :)
Phương pháp chính cho việc này là _jspService(HttpServletRequest, HttpServletResponse)
phương pháp.
Một thế giới xin chào tầm thường jsp:
<html>
<head>
<title>Hello world</title>
</head>
<body>
<h1>Hello world</h1>
Today is: <%= new java.util.Date().toString() %>
</body>
</html>
(test.jsp nằm trong thư mục có tên 'webapp' và cũng là thư mục 'out') Khi được biên dịch với lệnh sẽ jspc -v -d out -compile -uriroot webapp/ test.jsp
đặt vào thư mục out một tệp được gọi test_jsp.java
. Tệp này có trong đó (cùng với một chút thiết lập cấu hình khác):
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);
}
}
}
Tại thời điểm này, hãy kiểm tra để đảm bảo rằng JspWriter được gọi bằng ghi hoặc in và nội dung của cuộc gọi là những gì bạn mong đợi.
Tất cả những gì đã nói, trong một thế giới lý tưởng, người ta không nên có bất kỳ logic nào trong jsp - logic đó sẽ nằm trong bộ điều khiển hoặc taglib được thử nghiệm với các kỹ thuật khác.