CodeGym/Java курс/Модул 3/JSP: декларативен начин за дефиниране на сървлет

JSP: декларативен начин за дефиниране на сървлет

На разположение

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!

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари