Топ-100Комментарии в JSP - CodOrbits
LogoCodOrbits

Раздел: JSP

В этом разделе вы узнаете, как использовать JavaServer Pages (JSP) для генерации HTML-контента на стороне сервера.

Все разделы
Иконка JSP

Комментарии в JSP

Last updated: 10 мая 2025 г.

На JSP странице можно пользоваться двумя видами комментариев. <%----%> и <!---->.

Первый это jsp комментарий, второй это html комментарий.

Пример программы:

1<html>
2<head>
3    <title>Tags JSP</title>
4</head>
5<body>
6    <!--Этот комментарий клиент видит при просмотре 
7    кода страницы у себя в браузере-->
8    <%--Этот комментарий клиент не видит--%>
9</body>
10</html>

Откроем код страницы в Chrome нажав F12 и убедимся, что JSP комментария там нет.

Видим, что в коде в браузере присутствует только <!----> комментарий.


Тег <%! %>

Поясним на примере программы:

1<html>
2<head>
3    <title>First JSP</title>
4</head>
5<body>
6<%int x=2,y=2;%>
7<%private int add(int a, int b){return a+b;}%>
8<!-- Верхние две строки в созданном по этой
9    странице сервлете будут интерпретированы
10    как данные, определённые за методом doGet, то есть:
11    int x=2,y=2;
12    private int add(int a, int b){return a+b;}
13    public void doGet(HttpServletRequest request,
14                      HttpServletResponse response)
15        throws ServletException, IOException {}
16-->
17</body>
18</html>

Тег <%= %>

Тег вставляет содержимое в этом теге в pw.write();

Пример программы:

1<html>
2<head>
3    <title>Tags JSP</title>
4</head>
5<body>
6<%!int x=2,y=2;%>
7<%!private int add(int a, int b){return a+b;}%>
8<!-- Верхние две строки в созданном по этой 
9    странице сервере будут интерпретированы 
10    как данные определённые за методом doGet то есть:
11        int x=2,y=2;
12        private int (a, b){return a+b;}
13        public void doGet(HttpServletRequest request,
14                          HttpServletResponse response)
15                throws ServletException, IOException {}
16-->
17
18<!--вставляет содержимое 
19в этом теле в pw.write("hello world");-->
20<%="hello world"%>
21<%=add(x,y)%>
22<!-- верхние две строки в созданном по этой странице 
23    сервере будут интерпретированы как возвращаемые 
24    значения сервером пользователю в строковой форме:
25        public void doGet(HttpServletRequest request,
26                          HttpServletResponse response)
27                throws ServletException, IOException {
28                    PrintWriter pw = response.getWriter();
29                    pw.write("hello world");
30                    pw.write(add(x,y));
31                }
32-->
33</body>
34</html>

Вывод:


Тег <% %>

В этом теге пишеться обычный java код, который окажеться в doGet в сгенерированном по этой jsp странице сервлете.

Например, создадим куки в этом теге, отправим его клиенту в браузер и выведем все куки клиента.

Search Icon

Откуда взялись request и response пока не обращайте внимание, дальше это рассмотрим. Просто знайте, что это те request и response, которые являются параметрами в методе doGet.

Пример программы:

1<html>
2<head>
3<title>First JSP</title>
4</head>
5<body>
6<%
7        java.io.PrintWriter pw = response.getWriter();
8        Cookie cookie = new Cookie("someCookieName",
9                                "someCookieValue");
10
11        response.addCookie(cookie); //и отправить его клиенту
12        Cookie[] allcookies = request.getCookies();
13        for (Cookie somecookie : allcookies) {
14            pw.println(somecookie.getName() + " = "
15                       +somecookie.getValue());
16        }
17
18%>
19</body>
20</html>

Вывод:


Тег <%@%>

С помощью <%@%> мы можем устанавливать некоторые параметры страницы.

Пример программы:

1<!--можем импортировать библиотеки-->
2<%@ page import="java.lang.Math"%>
3<!--отключить сессию у клиентов-->
4<%@ page session="false"%>
5<!--чтобы класс сервлета этой jsp страницы наследовал какой-то класс или реализовать интерфейс-->
6<%@ page extends="org.apache.jasper.runtime.HttpJspBase"%>
7<!--при возникновении ошибки вывести страницу-->
8<%@ page errorPage="myErrorPg.html"%>
9<!--и другое-->
10<html>
11<head>
12    <title>Tags JSP</title>
13</head>
14<body>
15<%!
16int x=2,y=2;
17%>
18<%!
19private double add(int a, int b){
20        return Math.pow(a,b);
21}
22%>
23<%= "hello world"%>
24<%= add(x,y) %>
25</body>
26</html>

Вывод:

Еще с помощью этого тега можно включать другую страницу в эту страницу или перенаправлять (jsp версии include() и forward() в сервлете).

Search Icon

Но лучше пользоваться action дерективой jsp:include (о которых поговорим в другом уроке).

Первый вариант хоть и лучше тем, что можно, например, использовать переменные и методы в этом сервлете из включаемого сервлета после того, как мы его включили, но просто лучше не надо 😉

Пример программы:

1<%@ page import="java.lang.Math"%>
2<%@ page session="false"%>
3<%@ page extends="org.apache.jasper.runtime.HttpJspBase"%>
4<%@ page errorPage="myErrorPg.html"%>
5
6<html>
7<head>
8    <title>Tags JSP</title>
9</head>
10<body>
11<%@ include file="FirstJSP.jsp"%>
12<jsp:include page="FirstJSP.jsp"/>
13
14<%int x=2,y=2;%>
15<%private double add(int a, int b){
16    return Math.pow(a,b);}
17%>
18
19<%="hello world"%>
20<%=add(x,y)%>
21</body>
22</html>

Вывод:

Видим, что страница FirstJSP.jsp включилась два раза.


Методы init(), destroy(), service() в JSP

Вместо методов init(), destroy(), service() в jsp методы  jspInit(), jspDestroy(), _jspService().

Разницы никакой, но _jspService() здесь уже нельзя переопределять.

Давайте переопределим  jspInit() и jspDestroy().

Переопределяются они ясное дело в <%! %> поскольку, как мы помним, init, service и destroy переопределяются за пределами doGet.

Пример программы:

1<html>
2<head>
3	<title>First JSP</title>
4</head>
5<body>
6<%!     
7        public void jspInit() {
8		System.out.println("Initcialization");
9	}
10	public void jspDestroy() {
11		System.out.println("release resources");
12	}
13%>
14</body>
15</html>

Вывод:

Как видим, при переходе на страницу был вызван jspInit. Если что то изменить в коде страницы и перейти на нее, снова вызовется jspDestroy. Это случилось.


Следующие уроки

Неявные объекты в JSP: session, request и др.

14
мин.

Similar Articles Icon
Divider

Что такое actionBeans в JSP?

17
мин.

Similar Articles Icon
Divider

Паттерн MVC в веб-разработке на Java

16
мин.

Similar Articles Icon