Servlet Ders11 - Servlet Filter

 
   İstemcinin gönderdiği istek servera ulaştırılmadan önce veya sonra belirli bir filtreden geçirilebilir.Filtreleme işlemi gerekli dönüşümler,log kayıtlarının tutulması,sıkıştırma,şifreleme veya şifre çözme amaçlı olabilir.Servlet filtreleri pluggabledir.Yani servera kolayca çıkarılıp takılabilirdir.

Ön Bilgi
//Filtre kullanımı için yeni bir filter sınıfı oluşturulur.

//Filtre sınıfı içinde kullanılan aşağıdaki metot isteği servlete gönderir.
//bu metodun aşağısındaki ve yukarsındaki ifadeler filtrede işlem görür.
chain.doFilter(request, response);

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index.html</title>
</head>
<body>

 <form action="Servlet">
  <input type="submit" value="Servlet'e git" />
 </form>


</body>
</html>

Servlet.java
package test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;



public class Servlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  response.setContentType("text/html");
  PrintWriter out=response.getWriter();
  out.println("<br/>Merhabalar !<br/>");
  
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request, response);
 }

}


Filtre.java
package test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;


public class Filtre implements javax.servlet.Filter {

    public Filtre() {}
 public void destroy() {}

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  PrintWriter out=response.getWriter();
  out.println("Filtre istek iletilmeden once calisti.");
  chain.doFilter(request, response);
  out.println("Filtre istek iletildikten sonra calisti.");
 }
 public void init(FilterConfig fConfig) throws ServletException {
 }

}


web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Servlet11</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
  
  <servlet>  
 <servlet-name>Servlet</servlet-name>  
 <servlet-class>test.Servlet</servlet-class>  
  </servlet>  
  
  <servlet-mapping>  
 <servlet-name>Servlet</servlet-name>  
 <url-pattern>/Servlet</url-pattern>  
  </servlet-mapping>  
  
  <filter>  
 <filter-name>Filtre</filter-name>  
 <filter-class>test.Filtre</filter-class>  
  </filter>  
   
  <filter-mapping>  
 <filter-name>Filtre</filter-name>  
 <url-pattern>/Servlet</url-pattern>  
  </filter-mapping>
  
  
</web-app>

Açıklamalar
@WebServlet("/Servlet")
//Bu Servlet urlsinin /Servlet olacağını belirtir.

response.setContentType("text/html");
//response içerik tipinin text/html türünde olduğunu belirtir 

PrintWriter out=response.getWriter();
//out nesnesi server tarafından çıktı üretilmek için oluşturulur.

//Filtre kullanımı için yeni bir filter sınıfı oluşturulur.

//Sınıf içinde kullanılan aşağıdaki ifade metot servlete gönderir.
//bu metodun aşağısındaki ve yukarsındaki ifadeler filtrede işlem görür.
chain.doFilter(request, response);

//web.xml dosyasında ayrıca servlette olduğu gibi isim , sınıf belirtilmeli
//ve filtrenin uygulanacağı servlet filter-mappingin url-patterninde
//gösterilmelidir.



Servlet Filter projesi

Servlet Filter projesi

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)