26 Nisan 2017 Çarşamba

Servlet Filter Arayüzü

Giriş
Şu satırları dahil ederiz.
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterConfig;
Tanımlama - annotation 
@WebFilter Anotasyonu yazısına taşıdım

Tanımlama - xml
Şöyle yaparız.
<filter>
  <filter-name>MyFilter</filter-name>
  <filter-class>com.bar.foo.MyFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>MyFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
destroy metodu
Metodun imzası şöyle
public void destroy();
doFilter metodu
Metodun imzası şöyle
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
throws IOException, ServletException 
doFilter metodu içinde genellikle ServletRequest nesnesi HttpServletRequest nesnesin, ServletResponse nesnesi ise HttpServletResponse nesnesine cast edilir.

Örnek 1
Giriş yapılıp yapılmadığına göre başka sayfaya yönlendirmek için şöyle yaparız.
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
throws IOException, ServletException 
{

  HttpServletRequest request = (HttpServletRequest) req;
  HttpServletResponse response = (HttpServletResponse) res;
  HttpSession session = request.getSession(false);
    if (null == session) {
        response.sendRedirect("index.jsp");
    }
  Boolean isLoggedIn = session.getAttribute("isLoggedIn");
  if(!isLoggedIn)
    response.sendRedirect("index.jsp");

  chain.doFilter(req, res);
}
Örnek 2
Logout olunca şöyle yaparız.
@Override
public void doFilter(ServletRequest request, ServletResponse response,
  FilterChain chain) throws IOException, ServletException {
  // obtaining a sessionComplete value
  Object value = ((HttpServletRequest) request).getSession().
    getAttribute("sessionComplete");
  boolean sessionComplete = Boolean.valueOf(Objects.requireNonNull(value).
    toString());

  // go to the final page
  if (sessionComplete) {
    ((HttpServletResponse)response).sendRedirect("locationToRedirect");
  }

  // otherwise, pass a control to controllers
  chain.doFilter(request, response);
}
init metodu
Şöyle yaparız
public void init(FilterConfig config) throws ServletException{
  ...
}

Hiç yorum yok:

Yorum Gönder