25 Nisan 2018 Çarşamba

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.
Örnek
2.5 için şöyle yaparız
<?xml version="1.0" encoding="UTF-8"?>
<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
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  ...
</web-app>
Örnek
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 
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
Örnek
3.1 için şöyle yaparız
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
...
</web-app>
context-param tag
Bu parametre uygulama ayağa kalkarken okunuyor  ve ServletContext arayüzüne yerleşiyor. servet/init-param'dan farklı olarak tüm uygulama için geçerli değerleri buraya koymak lazım.

Örnek
Şöyle yaparız.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="..." xmlns="..." xmlns:web="..." 
 xsi:schemaLocation="..." id="WebApp_ID" version="2.5">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
  </context-param>
  ...
</web-app>
Örnek
Şöyle yaparız
<web-app>
    <context-param>
        <param-name>Country</param-name>
        <param-value>India</param-value>
    </context-param>
    <context-param>
        <param-name>Age</param-name>
        <param-value>24</param-value>
    </context-param>
</web-app>
Erişmek için şöyle yaparız.
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
display-name tag
Yönetim ekranında gösterilen uygulama ismi.
Örnek
Şöyle yaparız. Uygulamaya 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>
Örnek
Şöyle yaparız.
display-name>Spring-Hibernate</display-name>
error-page tag
Örnek
Servet 3.0'dan itibaren hata kodlarını belirtmeye gerek yok. Şöyle yaparız.
<web-app ...>
  <error-page>
    <location>/general-error.html</location>
  </error-page>
</web-app>
Örnek
Eski kodlarda şöyle yaparız.
<error-page>
  <!-- Missing login -->
  <error-code>401</error-code>
  <location>/general-error.html</location>
</error-page>
<error-page>
  <!-- Forbidden directory listing -->
  <error-code>403</error-code>
  <location>/general-error.html</location>
</error-page>
<error-page>
  <!-- Missing resource -->
  <error-code>404</error-code>
  <location>/Error404.html</location>
</error-page>
<error-page>
  <!-- Uncaught exception -->
  <error-code>500</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
  <!-- Unsupported servlet method -->
  <error-code>503</error-code>
  <location>/general-error.html</location>
</error-page>
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.

security-constraint
Örnek
Şöyle yaparız.
<security-constraint>
  <web-resource-collection>
    <url-pattern>/rest/readyToLand</url-pattern>
    <url-pattern>/LoginSuccess.jsp</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>Administrator</role-name>
    <role-name>allAuthenticatedUsers</role-name>
  </auth-constraint>
</security-constraint>
<security-role id="SecurityRole_1">
  <description>Administrator role</description>
  <role-name>Administrator</role-name>
</security-role>
<security-role id="SecurityRole_2">
  <description>Any Role</description>
  <role-name>allAuthenticatedUsers</role-name>
</security-role>
session-config
Örnek
30 dakika tanımlamak için şöyle yaparız.
<session-config>
  <session-timeout>30</session-timeout>     
  <tracking-mode>COOKIE</tracking-mode>
</session-config>
Örnek
Şöyle yaparız.
<?xml version="1.0" encoding="UTF-8"?>

<web-app ...>
  <session-config>
    <session-timeout>
      30
    </session-timeout>
  </session-config>
  ...
</web-app>
servlet tag
Servlet sınıflarını tanımlıyor.
Örnek
Şö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>
Örnek
Şö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>
servlet/init-param tag
Şöyle yaparız
<servlet>
  <servlet-name>HelloWorld</servlet-name>
  <servlet-class>TestServlet</servlet-class>
  <init-param>
    <param-name>myprop</param-name>
    <param-value>value</param-value>
  </init-param>
</servlet>
Servlet içinde bur değere erişmek için şöyle yaparız.
out.println(getInitParameter("Greetings"));
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
Şöyle yaparız.
<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