Что такое неявный объект JSP?
- Неявные объекты JSP создаются на этапе трансляции JSP в сервлет.
- Эти объекты могут быть непосредственно использованы в сценариях, которые идут в методе обслуживания.
- Они создаются контейнером автоматически, и к ним можно получить доступ с помощью объектов.
Сколько неявных объектов доступно в JSP?
В контейнере доступно 9 типов неявных объектов:
- вне
- запрос
- ответ
- конфиг
- применение
- сессия
- PageContext
- страница
- исключение
Давайте изучать один за другим
вне
- Out — это один из неявных объектов для записи данных в буфер и отправки вывода клиенту в ответ
- Объект Out позволяет нам получить доступ к выходному потоку сервлета
- Out является объектом класса javax.servlet.jsp.jspWriter
- При работе с сервлетом нам нужен объект printwriter
Пример:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP1</title>
- </head>
- <body>
- <% int num1=10;int num2=20;
- out.println("num1 is " +num1);
- out.println("num2 is "+num2);
- %>
- </body>
- </html>
Explanation of the code:
Code Line 11-12– out is used to print into output stream
When we execute the above code, we get the following output:
Output:
- In the output, we get the values of num1 and num2
Request
- The request object is an instance of java.servlet.http.HttpServletRequest and it is one of the argument of service method
- It will be created by container for every request.
- It will be used to request the information like parameter, header information , server name, etc.
- It uses getParameter() to access the request parameter.
Example:
Implicit_jsp2.jsp(form from which request is sent to guru.jsp)
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru form JSP2</title>
- </head>
- <body>
- <form action="guru.jsp">
- <input type="text" name="username">
- <input type="submit" value="submit">
- </form>
- </body>
- </html>
Guru.jsp (где выполняется действие)
Объяснение кода:
Строка кода 10-13: в implicit_jsp2.jsp (form) отправляется запрос, следовательно, переменная username обрабатывается и отправляется в guru.jsp, который является действием JSP.
Guru.jsp
Строка кода 10-11: это действие jsp, в котором обрабатывается запрос, а имя пользователя берется из формы jsp.
Когда вы выполните приведенный выше код, вы получите следующий вывод
Вывод:
Когда вы пишете тест и нажимаете кнопку «Отправить», вы получаете следующий вывод «Welcome Test».
отклик
- «Response» — это экземпляр класса, который реализует интерфейс HttpServletResponse
- Контейнер генерирует этот объект и передает его методу _jspservice () в качестве параметра
- «Объект ответа» будет создаваться контейнером для каждого запроса.
- Он представляет собой ответ, который может быть дан клиенту
- Неявный объект ответа используется для типа контента, добавления cookie и перенаправления на страницу ответа.
Пример:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP4</title>
- </head>
- <body>
- <%response.setContentType("text/html"); %>
- </body>
- </html>
Пояснение к коду:
Строка кода 11: в объекте ответа мы можем установить тип содержимого
Здесь мы устанавливаем только тип содержимого в объекте ответа. Следовательно, для этого нет выхода.
конфиг
- «Config» имеет тип java.servlet.servletConfig
- Он создается контейнером для каждой страницы JSP
- Используется для получения параметра инициализации в web.xml
Пример:
Web.xml (указывает имя и отображение сервлета)
Implicit_jsp5.jsp (получение значения имени сервлета)
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP5</title>
- </head>
- <body>
- <% String servletName = config.getServletName();
- out.println("Servlet Name is " +servletName);%>
- </body>
- </html>
Пояснение к коду:
В web.xml
Строка кода 14-17: в web.xml у нас есть отображение сервлетов на классы.
Implicit_jsp5.jsp
Строка кода 10-11: чтобы получить имя сервлета в JSP, мы можем использовать config.getServletName, который поможет нам получить имя сервлета.
Когда вы выполните приведенный выше код, вы получите следующий вывод:
Вывод:
- Имя сервлета — «GuruServlet», так как имя присутствует в web.xml
заявка
- Объект приложения (строка кода 10) является экземпляром javax.servlet.ServletContext и используется для получения контекстной информации и атрибутов в JSP.
- Объект приложения создается контейнером один на приложение, когда приложение развертывается.
- Servletcontext объект содержит набор методов, которые используются для взаимодействия с контейнером сервлета. Мы можем найти информацию о контейнере сервлета
Пример:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Guru Implicit JSP6</title>
- </head>
- <body>
- <% application.getContextPath(); %>
- </body>
- </html>
Пояснение к коду:
- В приведенном выше коде атрибут приложения помогает получить контекстный путь страницы JSP.
сессия
- Сеанс содержит объект «httpsession» (строка кода 10).
- Объект сеанса используется для получения, установки и удаления атрибутов в области сеанса, а также для получения информации о сеансе.
Пример:
Implicit_jsp7 (атрибут установлен)
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit JSP</title>
- </head>
- <body>
- <% session.setAttribute("user","GuruJSP"); %>
- <a href="implicit_jsp8.jsp">Click here to get user name</a>
- </body>
- </html>
Implicit_jsp8.jsp (getAttribute)
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>implicit Guru JSP8</title>
- </head>
- <body>
- <% String name = (String)session.getAttribute("user");
- out.println("User Name is " +name);
- %>
- </body>
- </html>
Пояснение к коду:
Implicit_jsp7.jsp
Code Line 11: we are setting the attribute user in the session variable, and that value can be fetched from the session in whichever jsp is called from that (_jsp8.jsp).
Code Line 12: We are calling another jsp on href in which we will get the value for attribute user which is set.
Implicit_jsp8.jsp
Code Line 11: We are getting the value of user attribute from session object and displaying that value
When you execute the above code, you get the following output:
When you click on the link for the username. You will get the following output.
Output:
- When we click on link given in implicit_jsp7.jsp then we are redirected to second jsp page, i.e (_jsp8.jsp) page and we get the value from session object of the user attribute (_jsp7.jsp).
pageContext:
- This object is of the type of pagecontext.
- It is used to get, set and remove the attributes from a particular scope
Scopes are of 4 types:
- Page
- Request
- Session
- Application
Example:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP9</title>
- </head>
- <body>
- <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE);
- String name = (String)pageContext.getAttribute("student");
- out.println("student name is " +name);
- %>
- </body>
- </html>
Explanation of the code:
Code Line 11: we are setting the attribute using pageContext object, and it has three parameters:
- Key
- Value
- Scope
В приведенном выше коде ключ «студент», а значение «gurustudent», а область действия — область страницы. Здесь область действия — «страница», и она может использоваться только с областью действия страницы
Строка кода 12: мы получаем значение атрибута, используя pageContext
Когда вы выполните приведенный выше код, вы получите следующий вывод:
Вывод:
- На выходе будет напечатано «имя студента — gurustudent».
страница
- Неявная переменная страницы содержит текущий исполняемый объект сервлета для соответствующего jsp.
- Действует как этот объект для текущей страницы JSP.
Пример:
В этом примере мы используем объект страницы, чтобы получить имя страницы с помощью метода toString.
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP10</title>
- </head>
- <body>
- <% String pageName = page.toString();
- out.println("Page Name is " +pageName);%>
- </body>
- </html>
Пояснение к коду:
Строка кода 10-11: в этом примере мы пытаемся использовать метод toString () объекта страницы и пытаемся получить строковое имя страницы JSP.
При выполнении кода вы получите следующий вывод:
Вывод:
- Вывод — это строковое имя над страницей jsp
исключение
- Исключением является неявный объект класса throwable.
- Используется для обработки исключений в JSP.
- Объект исключения может использоваться только на страницах ошибок.
Пример:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1" isErrorPage="true"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Implicit Guru JSP 11</title>
- </head>
- <body>
- <%int[] num1={1,2,3,4};
- out.println(num1[5]);%>
- <%= exception %>
- </body>
- </html>
Пояснение к коду:
Строка кода 10-12 — имеет массив чисел, т.е. num1 с четырьмя элементами. В выводе мы пытаемся распечатать пятый элемент массива из num1, который не объявлен в списке массивов. Таким образом, он используется для получения объекта исключения из JSP.
Вывод:
Мы получаем ArrayIndexOfBoundsException в массиве, где мы получаем массив num1 пятого элемента.