Java web xml version

Java web xml version

В предыдущих статьях при определении сервлетов применялась аннотация @WebServlet , которая устанавливала конечную точку, с которой сопоставлялся сервлет. Например, следующий сервлет

@WebServlet("/hello") public class HelloServlet extends HttpServlet 

сопоставляется с путем "/hello". То есть сервлет HelloServlet будет обрабатывать запросы типа "http://localhost:8081/[название_приложения]/hello" или "http://somesite.com/[название_приложения]/hello".

Но есть и другой способ сопоставления путей и сервлетов. Он представляет использование файла web.xml.

Файл web.xml хранит информацию о конфигурации приложения. Он не является обязательной частью приложения, как можно увидеть из предыдущих статей, тем не менее он широко используется для настройки конфигурации.

Данный файл должен располагаться в папке WEB-INF приложения. При запуске Tomcat считывает его содержимое и использует считанную конфигурацию. Если же файл содержит ошибки, то Tomcat отображает ошибку.

web.xml имеет определенную структуру. Все вложенные узлы, которые определяют конфигурацию, помещаются в корневой узел .

У элемента web-app определяется ряд атрибутов. В данном случае атрибуты xmlns и xmlns:xsi указывают на используемые пространства имен xml. Атрибут version указывает на версию спецификации сервлетов или Servlet API, которая используется в приложении. Последняя версия API сервлетов - 4-я версия.

С помощью элемента можно задать сопоставление сервлета с запрашиваемым URL.

Например, добавим в проект в Eclipse в папку WebConent/WEB-INF новый файл web.xml :

servlet mapping в web.xml

Определим в нем следующий код:

   HelloWorld HelloServlet  HelloWorld /welcome   

Прежде всего вначале с помощью элемента определяется сервлет. Элемент задает имя сервлета, на которое будет проецироватья класс, указанный в элементе . То есть, допустим, у нас проекте есть класс сервлета HelloServlet, который будет проецироваться на имя HelloWorld. Имя может быть произвольным и может совпадать с названием класса.

Затем в элементе сервлет с именем HelloWorld (по сути сервлет HelloServlet) сопоставляется с путем "/welcome".

Допустим, сервлет HelloServlet будет выглядеть следующим образом:

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 HelloServlet extends HttpServlet < protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < response.setContentType("text/html"); PrintWriter writer = response.getWriter(); try < writer.println("

Welcome to servlets

"); > finally < writer.close(); >> >

Теперь, чтобы обратиться к этому сервлету, надо использовать путь "/welcome":

Источник

Структура web.xml

Файл web.xml хранит информацию о конфигурации приложения. Он не является обязательной его частью, однако очень широко используется для настройки конфигурации веб-приложения.

Этот файл должен располагаться в папке WEB-INF. При запуске Tomcat считывает его содержимое и использует записанную в нем конфигурацию. Если же файл содержит ошибки, то и Tomcat отображает ошибку.

    HelloWorld HelloServlet   HelloWorld /welcome   index.html   

Зеленым цветом тут записан маппинг имя сервлета "HelloWorld" и класса сервлета "HelloServlet" . Синим цветом записан маппинг имя сервлета "HelloWorld" и куска URL "http://localhost/welcome" . Таким образом тут написано, что при обращении к пути /welcome нужно вызвать сервлет HelloServlet.class .

Красным цветом указан файл, который нужно отдать по запросу http://localhost/ — это так называемая welcome page . Если пользователь просто вобьет в браузере имя, соответствующее корню нашего веб-приложения, то ему отдается содержимое файла index.html .

7.2 servlet, servlet-mapping

Один сервлет может обслуживать запросы по разным урлам, поэтому в web-xml сервлет и его маппинг на урлы записываются отдельно. Сначала описываем сервлеты, давая каждому уникальное строковое имя, а затем уже указываем, как каждый сервлет мапится на какой url.

   remoting com.javarush.RemotingServlet 1  remoting /remoting/*   restapi com.javarush.RestApiServlet 2  restapi /api/*   

В этом примере объявлено два сервлета, и каждый замаплен на свой шаблон url. Сервлет RemotingServlet обслуживает все запросы, которые идут на /remoting/* . Сервлет RestApiServlet обслуживает все запросы, которые идут на /api/* . Так же у сервлетов прописан порядок из загрузки — параметр load-on-startup.

7.3 Параметры сервлета

С помощью web.xml сервлету при его инициализации можно передать параметры, они будут доступны через интерфейс ServletConfig . Также можно задать параметры всему веб-приложению, они будут доступны через интерфейс ServletContext .

    Server production mode productionMode false  appPropertiesConfig classpath:local-app.properties classpath:web-app.properties   mainservlet com.javarush.ApplicationServlet application com.javarush.App  widgetset com.javarush.WidgetSet  ui com.javarush.AppUI    
Оцените статью