Web — это система интернет-серверов, которая поддерживает форматированные документы. Документы форматируются с использованием языка разметки, называемого HTML (HyperText Markup Language), который поддерживает ссылки на другие документы, такие как графические, аудио- и видеофайлы и т. д.
- HTTP (протокол передачи гипертекста)
- Введение в сервлеты
- Жизненный цикл
- Загрузка
- Инициализация
- Обработка запросов
- Уничтожение
- Шаги по созданию
- Универсальные
- HTML-файл
- Файл класса Java
- web.xml
- Отслеживание сеансов
- Файлы cookie
- Как работает Cookie?
- Пример
- Страницы сервера Java
- Элементы сценариев
- Тег скриптлета
- Тег выражения
- Тег объявления
- Объекты запросов и ответов
- Пример неявного объекта запроса JSP
- Неявный объект ответа JSP
- Пример ответа неявного объекта
HTTP (протокол передачи гипертекста)
HTTP используется клиентами и серверами для общения в сети. Он считается протоколом без сохранения состояния, поскольку поддерживает только один запрос на соединение. С помощью HTTP клиенты подключаются к серверу для отправки одного запроса, а затем отключаются. И этот механизм позволяет большему количеству пользователей подключаться к данному серверу в течение определенного периода времени. Здесь клиент отправляет HTTP-запрос, а сервер отвечает клиенту с помощью HTML-страницы, используя HTTP.
Введение в сервлеты
Сервлет — это программный модуль Java на стороне сервера, который обрабатывает запросы клиентов и реализует интерфейс сервлета. Могут отвечать на любые запросы, и они обычно используются для расширения приложений, размещаемых на веб-серверах.

Жизненный цикл
Весь жизненный цикл сервлета управляется контейнером сервлета, который использует интерфейс javax.servlet.Servlet для понимания объекта сервлета и управления им.
Жизненный цикл сервлета проходит в основном четыре этапа:

Загрузка
Когда сервер запускается, контейнер сервлета развертывается и загружает все сервлеты.
Инициализация
Затем сервлет инициализируется путем вызова метода init(). Метод Servlet.init() вызывается контейнером Servlet для уведомления о том, что этот экземпляр Servlet успешно создан и готов к запуску.
Обработка запросов
Затем сервлет вызывает метод service() для обработки запроса клиента и вызывается для информирования сервлета о клиентских запросах.
Уничтожение
Наконец, сервлет завершается вызовом destroy(). Метод запускается только один раз за время существования сервлета и сообщает об окончании экземпляра сервлета.
Методы init() и destroy() вызываются только один раз. Наконец, сервлет — это сборщик мусора сборщиком мусора JVM. Итак, на этом завершается жизненный цикл сервлета.
Шаги по созданию
Чтобы создать сервлет, нам нужно выполнить несколько шагов по порядку. Они заключаются в следующем:
- Создать структуру каталогов.
- Создать сервлет.
- Скомпилировать сервлет.
- Добавить сопоставления в файл web.xml.
- Запустить сервер и развернуть проект.
- Доступ к сервлету.
Теперь, основываясь на вышеописанных шагах, давайте создадим программу, чтобы лучше понять, как работает сервлет.
Для запуска программы сервлета у нас должен быть установлен и настроен сервер Apache Tomcat. Eclipse для Java EE предоставляет встроенный Apache Tomcat. Как только сервер настроен, вы можете начать с вашей программы. Следует отметить один важный момент — для любой программы сервлета вам нужно 3 файла — файл index.html, файл классов Java и файл web.xml. Самый первый шаг — создать динамический веб-проект, а затем продолжить.
Теперь давайте рассмотрим пример, в котором будем создавать простой сервлет входа в систему и отображать вывод в браузере.
Сначала создадим файл index.html.
<!DOCTYPE html> <html> <body> <form action="Login" method="post"> <table> <tr> <td>Name:</td> <td><input type="text" name="userName"></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="userPassword"></td> </tr> </table> <input type="submit" value="Login"> </form> </body> </html>
Далее закодируем файл класса Java.
package Edureka;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse;
public class Login extends HttpServlet
{
protected void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
PrintWriter pw=res.getWriter();
res.setContentType("text/html");
String user=req.getParameter("userName");
String pass=req.getParameter("userPassword");
pw.println("Login Success...!")
if(user.equals("edureka") pass.equals("edureka"))
pw.println("Login Success...!");
else
pw.println("Login Failed...!");
pw.close();
}
}
В приведенном выше коде установили условие — если имя пользователя и пароль равны edureka, только тогда он будет отображаться успешно вошли в систему, в противном случае вход будет отказано. После написания файла класса Java последний шаг — добавить сопоставления в файл web.xml. Давайте посмотрим, как это сделать.
Файл web.xml будет присутствовать в папке WEB-INF вашего веб-контента. Если его нет, вы можете щелкнуть по дескриптору развертывания и нажать «Создать заглушку дескриптора развертывания». Как только вы подготовите файл web.xml, нужно добавить в него сопоставления. Давайте посмотрим, как выполняется сопоставление на следующем примере:
<?xml version="1.0"encoding="UTF-8"?> <web-app xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns="<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a>"xsi:schemaLocation="<a href="http://xmlns.jcp.org/xml/ns/javaee">http://xmlns.jcp.org/xml/ns/javaee</a> <a href="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd</a>"version="3.1"> <display-name>LoginServlet</display-name> <servlet> <servlet-name>Login</servlet-name> <servlet-class>Edureka.Login</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> <url-pattern>/Login</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
Универсальные
Это независимый от протокола сервлет, который должен переопределять метод service() для обработки клиентского запроса. Метод service() принимает два аргумента: объект ServletRequest и объект ServletResponse. Работа объекта запроса состоит в том, чтобы информировать сервлет о запросе, сделанном клиентом, в то время как объект ответа возвращает ответ клиенту. GenericServlet является абстрактным классом, и у него есть только один абстрактный метод — service(). В этом вся концепция, когда мы создаем универсальный сервлет путем расширения класса GenericServlet, мы должны переопределить метод service().
Теперь давайте посмотрим, как создать и вызвать универсальный сервлет. Будем кодировать 3 файла, как показано ниже:
HTML-файл
Мы создаем файл HTML, который будет вызывать сервлет, как только нажмем на ссылку на веб-странице. Создайте этот файл в папке WebContent. Путь к этому файлу должен выглядеть следующим образом: WebContent / index.html
<html> <title>Generic Servlet Demo</title> </head> <body> <a href="welcome">Click here to call Generic Servlet</a> </body> </html>
Файл класса Java
Здесь мы будем создавать универсальный сервлет, расширяя класс GenericServlet. При создании GenericServlet необходимо переопределить метод service(). Щелкните правой кнопкой мыши на папке src и создайте новый файл класса и назовите файл как общий. Путь к файлу должен выглядеть следующим образом: Java Resouces / src / default package / generic.java
package EdurekaGeneric;
import java.io.*;
importjavax.servlet.*;
public class generic extends GenericServlet{
public void service(ServletRequest req,ServletResponse res) throws IOException,ServletException{
res.setContentType("text/html");
PrintWriter pwriter=res.getWriter();
pwriter.print("<html>");
pwriter.print("<body>");
pwriter.print("
<h2>Generic Servlet Example</h2>
");
pwriter.print("Welcome to Edureka YouTube Channel");
pwriter.print("</body>");
pwriter.print("</html>");
}
}
web.xml
Этот файл можно найти по этому пути. WebContent / WEB-INF / web.xml. В этом файле мы сопоставим сервлет с конкретным URL. Поскольку вызываем страницу приветствия после нажатия на ссылку в index.html, она отобразит страницу приветствия в класс Servlet, который уже создали выше.
<servlet> <servlet-name>MyGenericServlet</servlet-name> <servlet-class>EdurekaGeneric.generic</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyGenericServlet</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping>
После этого запустите сервер Tomcat и запустите сервлет. Вы получите желаемый результат. Так что это все о универсальных сервлетов. Теперь давайте двигаться дальше и понять концепцию отслеживания сеансов.
Отслеживание сеансов
Сессия просто означает определенный интервал времени. Отслеживание сеанса — это метод поддержания состояния (данных) пользователя, также известный как управление сеансом в сервлете. Таким образом, каждый раз, когда пользователь запрашивает сервер, сервер обрабатывает запрос как новый запрос.
![]()
Чтобы распознать конкретного пользователя, нам нужно отслеживать сеанс.
Файлы cookie
Файл cookie — это небольшой фрагмент информации, который сохраняется между несколькими клиентскими запросами. Имеет имя, одно значение и дополнительные атрибуты, такие как комментарий, путь и квалификаторы домена, максимальный возраст и номер версии.
Как работает Cookie?
Поскольку это метод отслеживания сеансов, по умолчанию каждый запрос рассматривается как новый запрос.

Теперь, когда вы поняли, как работают файлы cookie, давайте рассмотрим небольшой пример, иллюстрирующий использование файлов cookie.
Давайте посмотрим пример создания файла cookie, добавления ответа и получения результатов.
Пример
Файл: MyServlet1
package Edureka;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/login")
public class MyServlet1 extends HttpServlet{
public void doGet(HttpServletRequest request,nbsp; HttpServletResponse response) {
try{
response.setContentType("text/html");
PrintWriter pwriter = response.getWriter();
String name = request.getParameter("userName");
String password = request.getParameter("userPassword");
pwriter.print("Hello here:"+name);
pwriter.print(" Your Password is: "+password);
//Creating two cookies
Cookie c1=new Cookie("userName",name);
Cookie c2=new Cookie("userPassword",password);
//Adding the cookies to response header
response.addCookie(c1);
response.addCookie(c2);
pwriter.print("
<a href='welcomehere'>View Details</a>");
pwriter.close();
}catch(Exception exp){
System.out.println(exp);
}
}
}
Файл: MyServlet2
package Edureka;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/welcomehere")
public class MyServlet2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
response.setContentType("text/html");
PrintWriter pwriter = response.getWriter();
//Reading cookies
Cookie[] c=request.getCookies();
//Displaying User name value from cookie
pwriter.print("Name here: "+c[0].getValue());
pwriter.print("Password: "+c[1].getValue());
//pwriter.print("
<a href='welcome'>View Details</a>");
pwriter.close();
}catch(Exception exp){
System.out.println(exp);
}
}
}
Теперь давайте создадим простую HTML-форму для файлов cookie.
<!DOCTYPE html> <html> <body> <body> <form action="login"> User Name:<input type="text" name="userName"/> Password:<input type="password" name="userPassword"/> <input type="submit" value="submit"/> </form> </body> </html>
Теперь последний шаг — создать файл XML и добавить в него все сопоставления.
<servlet> <servlet-name>Servlet1</servlet-name> <servlet-class>Edureka.MyServlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>Servlet2</servlet-name> <servlet-class>Edureka.MyServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Servlet2</servlet-name> <url-pattern>/welcomehere</url-pattern> </servlet-mapping>
Теперь вы готовы к казни. Вы можете запустить код и получить желаемый результат. Вот как работает cookie.
Страницы сервера Java
JSP или Java Server Pages — это технология, которая используется для создания веб-приложений точно так же, как технология сервлетов. Это расширение Servlet — поскольку оно предоставляет больше функциональных возможностей, чем сервлет, такой как язык выражений, JSTL и т. Д. Страница JSP состоит из тегов HTML и тегов JSP. Страницы JSP легче поддерживать, чем сервлет, потому что мы можем разделить проектирование и разработку.
Элементы сценариев
Элементы сценариев предоставляют возможность вставлять Java-код в JSP. Существует три типа элементов сценариев:
Тег скриптлета
Используется для выполнения исходного кода Java в JSP.
Синтаксис: <% Java-код%>
Syntax : <% java source code %>
В этом примере мы создали два файла index.html и welcome.jsp. Файл index.html получает имя пользователя от пользователя, а файл welcome.jsp печатает имя пользователя с приветственным сообщением. Теперь давайте посмотрим на код.
Файл: index.html
<html> <body> <formnbsp;action="welcome.jsp"> <inputnbsp;type="text"nbsp;name="uname"> <inputnbsp;type="submit"nbsp;value="go"> </form> </body> </html>
Файл: welcome.jsp
<html>
<body>
<% Stringnbsp;name=request.getParameter("uname"); print("welcomenbsp;"+name); %>
</form>
</body>
</html>
Тег выражения
Код, помещенный в тег выражения JSP, записывается в выходной поток ответа. Поэтому вам не нужно записывать out.print() для записи данных. Он в основном используется для печати значений переменной или метода.
Синтаксис: <% = оператор%>
Syntax : <%= statement %>
Теперь давайте возьмем небольшой пример отображения текущего времени. Чтобы отобразить текущее время, мы использовали метод getTime() класса Calendar. GetTime() является методом экземпляра класса Calendar, поэтому мы вызвали его после получения экземпляра класса Calendar методом getInstance().
Файл: index.jsp
<html> <body> Currentnbsp;Time:nbsp;<%=nbsp;java.util.Calendar.getInstance().getTime()nbsp;%> </body> </html>
Тег объявления
Используется для объявления полей и методов. Код, написанный внутри тега объявления JSP, размещается вне метода service() автоматически сгенерированного сервлета. Так что он не получает память при каждом запросе.
Синтаксис: <%! объявление поля или метода%>
Syntax: <%! field or method declaration %>
В приведенном ниже примере тега объявления JSP мы определяем метод, который возвращает куб с заданным числом, и вызываем этот метод из тега выражения JSP. Но мы также можем использовать тег скриптлета JSP для вызова объявленного метода. Посмотрим как. Файл: index.jsp
<html>
<body>
<%! intnbsp;cube(intnbsp;n){ returnnbsp;n*n*n*; } %>
<%=nbsp;"Cubenbsp;ofnbsp;3nbsp;is:"+cube(3)nbsp;%>
</body>
</html>
Объекты запросов и ответов
Запрос JSP — это неявный объект типа HttpServletRequest, который создается для каждого запроса JSP веб-контейнером. Он может использоваться для получения информации запроса, такой как параметр, информация заголовка, удаленный адрес, имя сервера, порт сервера, тип содержимого, кодировка символов и т. Д. Он также может использоваться для установки, получения и удаления атрибутов из области запроса JSP.
Пример неявного объекта запроса JSP
Файл: index.html
<formnbsp;action="welcome.jsp"> <inputnbsp;type="text"nbsp;name="uname"> <inputnbsp;type="submit"nbsp;value="go"> </form>
Файл: welcome.jsp
<% Stringnbsp;name=request.getParameter("uname"); print("welcomenbsp;"+name); %>
Неявный объект ответа JSP
В JSP ответ является неявным объектом типа HttpServletResponse. Экземпляр HttpServletResponse создается веб-контейнером для каждого запроса JSP. Он может использоваться для добавления или манипулирования ответами, такими как перенаправление ответа на другой ресурс, ошибка отправки и т. д.
Пример ответа неявного объекта
Файл: index.html
<formnbsp;action="welcome.jsp"> <inputnbsp;type="text"nbsp;name="uname"> <input type="submit"nbsp;value="go"> </form>
Файл: welcome.jsp
<% sendRedirect("http://www.google.com"); %>
