1.1 Въведение в JSP
Има два популярни начина за писане на сървлет: императивен и декларативен . Вече се справихме с първия - това всъщност е сервлет. Вторият се нарича JSP (Java Server Pages) и с него ще се запознаем сега.
Пример за сервлет JSP:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
Не прorча много на класическия Servlet, с който сме свикнали, нали? Това е вярно. JSP е HTML page с вмъквания на Java code (маркирани в зелено) .
Виждате ли, ако имате много Java code в сървлет и малко HTML code, тогава ви е по-удобно да използвате класически сървлет . Но Howво ще стане, ако имате нужда от голяма HTML page, в която само няколко реда се променят от сървъра?
В този случай най-простото нещо би било да създадете тази HTML page и по няHowъв начин да изпълните Java codeа на сървъра точно в нея.
1.2 Компorране на JSP
Нека да разгледаме друг пример:
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Получаваме произволно число и ако то е по-голямо от 0,95, отпечатваме текста "Вие сте късметлия, потребител!"
Кодът на Java е маркиран тук в синьо . Нормално (не е подчертано) - HTML code и червено - сервизни тагове , които помагат да се разбере къде е codeът на Java и къде е HTML.
Забелязвате ли нещо странно? Затварящата фигурна скоба "}"
е в друга "code block"
. Какъв е правилният начин за писане на такъв code? Как изобщо работи?
Отговорът ще бъде супер прост :)
Уеб сървърът, след като намери JSP файл, го компorра в класически сървлет. Въз основа на горната JSP page ще бъде генериран този сервлет:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body>");
double num = Math.random();
if (num > 0.95) {
out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
}
out.print("</body>");
out.print("</html>");
}
}
Уеб контейнерът току-що генерира codeа на сървлета, където HTML се превърна в текст и вмъкванията на Java code станаха обикновен Java code!
GO TO FULL VERSION