22 Nisan 2017 Cumartesi

web.xml

Giriş
Bu dosyanın bulunduğu dizin şöyle
/usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml
web-app tag
Bu dosyada servlet spec'inden hangisini kullanacağımızı belirtiyoruz. Örneğin spec 2.4 kullanılabilir.
 3.0 içinse şöyle yaparız.


<web-app 
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    httpp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
servlet tanımlamak için şöyle yaparız.
<?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/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

  <display-name>TomcatRestExample</display-name>

  <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>...</servlet-class>
    <init-param>
      <param-name>...</param-name>
      <param-value>...</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/maven/*</url-pattern>
  </servlet-mapping>

</web-app>

context-param tag
Bu parametre servlet ayağa kalkarken okunuyor ve ServletContext arayüzüne yerleşiyor. How to get context-param value in java? sayfasında konuyla ilgili örnek var. Spring gibi bazı çatı yapıları belli isimdeki parametrelerin kullanılmasını gerektiriyor. Örneğin contextConfigLocation

<!-- Configure spring -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
        /WEB-INF/applicationContext-security.xml
        /WEB-INF/applicationContext-integration.xml
    </param-value>
</context-param>

Bir başka örnekte ise xml dosyasına tam path te verilmeden başlatılıyor.

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:beans.xml</param-value>
</context-param>

display-name
Yönetim ekranında gösterilen servlet ismi. Şöyle yaparız. Servlete http isteği ile erişmek için bu isim değil war dosyasının ismi kullanılı.r
<display-name>TomcatRestExample</display-name>

filter tag
Uygulamaya sadece belli IP'lerin erişmesini istersek şöyle yaparız.
<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
listener tag
ServletContextListener sınıfları bu tag ile tanıtılıyor.

session-config
30 dakika tanımlamak için şöyle yaparız.
<session-config>
  <session-timeout>30</session-timeout>     
  <tracking-mode>COOKIE</tracking-mode>
</session-config>
servlet tag
Servlet sınıflarını tanımlıyor. Şöyle  yaparız:
<servlet>
   <servlet-name>Faces Servlet</servlet-name>
   <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
servlet-mapping tag
Yukarıda tanımlanan servlet sınıfını ile servletin hizmet edeceği url adreslerini eşleştiriyor. Eşleştirme için servlete verilen ismin kullanıldığına dikkat etmek lazım. Örnek:
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Servlet mapping kuralları şöyle. Bu kurallardan sadece '/' verileni ilginç.

  • A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.
  • A string beginning with a ‘*.’ prefix is used as an extension mapping.
  • The empty string ("") is a special URL pattern that exactly maps to the application's context root, i.e., requests of the form  http://host:port/<contextroot>/. In this case the path info is ’/’ and the servlet path and context path is empty string (““).
  • A string containing only the ’/’ character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.
  • All other strings are used for exact matches only
welcome-file-list tag
Uygulama ilk açılırken gösterilecek sayfayı tanımlıyor. Şöyle yaparız:
<welcome-file-list>
  <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

Hiç yorum yok:

Yorum Gönder