web-app tagBu dosyada servlet spec'inden hangisini kullanacağımızı belirtiyoruz.
Örnek2.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>
Örnek3.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">
Örnek3.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 tagBu 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 tagYö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ÖrnekServet 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>
ÖrnekEski 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 tagUygulamaya 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 tagServletContextListener sınıfları bu tag ile tanıtılıyor.
login-config taglogin-config yazısına taşıdım
security-constraint tag
session-config tagÖrnek30 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 tagServlet 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 tagYukarı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
<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<?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 tagUygulama 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>