16 Aralık 2021 Perşembe

Servlet web.xml Dosyası - Servlet İçin Gerekir

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.

login-config tag
login-config yazısına taşıdım

resource-ref tag
resource-ref yazısına taşıdım

security-constraint tag
security-constraint yazısına taşıdım

session-config tag
Ö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. <servlet-name>aa</servlet-name> verdiysek aa.xml dosyası da bu servlet'e ait olduğu için okunur

Ö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
Örnek
Şöyle yaparız
<web-app 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"
         version="3.1">
  <servlet>
    <servlet-name>helloworld</servlet-name>
    <servlet-class>mysite.server.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>helloworld</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>
Örnek
Şöyle yaparız
<?xml version="1.0" encoding="UTF-8"?>
<web-app
  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"
  metadata-complete="false"
  version="3.1">

  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>org.example.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>
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

Bean Validation @GroupSequence Anotasyonu

Örnek Elimizde şöyle bir kod olsun public class SampleRequest {   @NotNull   LocalDate startDate;   @NotNull   LocalDate endDate;   @AssertT...