Що таке файл web.xml і що я можу з ним робити?


76

Елементи дескриптора розгортання web.xml у Oracle's BEA WebLogic Server 8.1 Документація майже підсумовує кожен елемент у файлі web.xml. Але мені також цікаво наведені нижче пункти:

  1. Чи існує якийсь параметр конфігурації, якого слід уникати, як чуму?
  2. Будь-які параметри, пов'язані з продуктивністю або використанням пам'яті?
  3. Ризик, пов’язаний із безпекою через типові помилки в конфігурації?

Що ще я повинен знати про web.xml, крім імен елементів та їх використання?

Відповіді:


103

Що таке файл web.xml і що я можу з ним робити?

/WEB-INF/web.xmlФайл є Web Application Deployment Descriptor вашого застосування. Цей файл є XML-документом, який визначає все про вашу програму, про що повинен знати сервер (крім контекстного шляху, який призначається Розгортачем додатків та Адміністратором при розгортанні програми): сервлети та інші компоненти, такі як фільтри або прослуховувачі, ініціалізація параметри, керовані контейнером обмеження безпеки, ресурси, вітальні сторінки тощо.

Зверніть увагу, що згадане вами посилання досить давнє (Java EE 1.4), у Java EE 5 і навіть більше в Java EE 6 (що робить "необов’язковим" і представляє веб-фрагменти ) було мало змін .web.xml

Чи існує якийсь параметр конфігурації, якого слід уникати, як чуму?

Ні.

Будь-які параметри, пов'язані з продуктивністю або використанням пам'яті?

Ні, такі речі налаштовуються не на рівні програми, а на рівні контейнера.

Ризик, пов’язаний із безпекою через типові помилки в конфігурації?

Що ж, якщо ви хочете використовувати керовані контейнером обмеження безпеки і не вдається їх правильно налаштувати, ресурси очевидно не будуть належним чином захищені. Окрім цього, найбільші ризики для безпеки походять від коду, який ви розгорнете IMO.


28

Що все я повинен знати про web.xml, окрім назви елемента та їх використання?

ОДИНИЙ найважливіший параметр конфігурації JSP ALL TIME знаходиться у вашому web.xml. Пані та панове, я даю вам ... варіант TRIM-DIRECTIVE-WHITESPACES !

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <trim-directive-whitespaces>true</trim-directive-whitespaces>
    </jsp-property-group>
</jsp-config>

Це видаляє всі сотні або тисячі рядків пробілів, які ви отримаєте у створеному HTML, якщо ви використовуєте будь-які бібліотеки тегів (цикли особливо потворні та марнотратні).

Інший великий - це веб-сторінка за замовчуванням (сторінка, на яку ви автоматично надсилаєтесь, коли не вводите веб-сторінку в URL-адресу):

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>    

8
  1. Ні, немає нічого, чого слід уникати
  2. Параметри, що стосуються продуктивності, відсутні в web.xmlфайлах конфігурації контейнера сервлетів ( server.xmlна tomcat)
  3. Ні. Але сервлет за замовчуванням (зіставлений у файлі web.xml у загальному місці у вашому контейнері сервлетів) повинен переважно вимикати списки файлів (щоб користувачі не бачили вміст ваших веб-папок):

    списки правда


6

Я намагаюся зрозуміти, як саме це працює. Цей сайт може бути вам корисним. Він містить усі можливі теги для web.xml, а також приклади та описи кожного тегу.

http://wiki.metawerx.net/wiki/Web.xml


1
Будьте трохи обережні, бо я знайшов одне місце, де тире замінено на підкреслення. (це займало багато часу для налагодження).
sixtyfootersdude

1
чому б не додати коментар до своєї відповіді?
Божо

3

Якщо використовується Struts, ми вимикаємо прямий доступ до файлів JSP, використовуючи цей тег у web.xml

 <security-constraint>
<web-resource-collection>
  <web-resource-name>no_access</web-resource-name>
  <url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<auth-constraint/>


0

Файл дескриптора розгортання "web.xml": Завдяки належному використанню файлу дескриптора розгортання web.xml ви можете контролювати багато аспектів поведінки веб-додатків, починаючи від попередньої завантаження сервлетів, до обмеження доступу до ресурсів та контролю таймаутів сеансу.

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


-1

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 ">

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


-1
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <description></description>
    <display-name>pdfServlet</display-name>
    <servlet-name>pdfServlet</servlet-name>
    <servlet-class>com.sapta.smartcam.servlet.pdfServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>pdfServlet</servlet-name>
    <url-pattern>/pdfServlet</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.