Servlet etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Servlet etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Mayıs 2018 Cuma

Servlet Part Arayüzü

Giriş
Şu satırı dahil ederiz.
import javax.servlet.http.Part
multipart/form-data POST isteğindeki bir part'ı temsil eder.

Bu istek şuna benzer
POST / HTTP/1.1
HOST: host.example.com
Cookie: some_cookies...
Connection: Keep-Alive
Content-Type: multipart/form-data; boundary=12345

--12345
Content-Disposition: form-data; name="sometext"

some text that you wrote in your html form ...
--12345
Content-Disposition: form-data; name="name_of_post_request" filename="filename.xyz"

content of filename.xyz that you upload in your form with input[type=file]
--12345
Content-Disposition: form-data; name="image" filename="picture_of_sunset.jpg"

content of picture_of_sunset.jpg ...
--12345--

getHeader metodu
Şöyle yaparız.
private String extractFileName(Part part) {

  String contentDisp = part.getHeader("content-disposition");
  String[] items = contentDisp.split(";");
  for (String s : items) {
    if (s.trim().startsWith("filename")) {
      return s.substring(s.indexOf("=") + 2, s.length() - 1);
    }
  }
  return "";
}
getInputStream metodu
Şöyle yaparız.
Part part = ...
InputStream stream = part.getInputStream();
Örnek
Şöyle yaparız.
InputStream input = part.getFile().getInputStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[10240];
for (int length = 0; (length = input.read(buffer)) > 0;) 
  output.write(buffer, 0, length);

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{
  ...
}