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

24 Nisan 2017 Pazartesi

Hiding Fields

Giriş
Açıklaması şöyle. Bu shadow veya shadowing ile aynı şey.
Within a class, a field that has the same name as a field in the superclass hides the superclass's field, even if their types are different
Elimizde şöyle bir kod olsun
class A {
  int i = 10;
}

class B extends A {
  int i = 20;
}

A a = new B();
System.out.println(a.i);
Java'da alanlar kalıtılmaz. Dolayısıyla A tipi kendi alanına B tipi ise kendi alanına erişir.  Çıktı olarak A 10 alırız.

21 Nisan 2017 Cuma

ZipInputStream Sınıfı

constructor - FileInputStream
Şöyle yaparız.
File f = new File("C:\\test.zip")

InputStream inStream = new FileInputStream (f);
ZipInputStream zipInputStream = new ZipInputStream (inStream);
Şöyle yaparız.
InputStream inStream = new FileInputStream(path);
ZipInputStream zipInputStream = 
  = new ZipInputStream(new BufferedInputStream(inStream));
constructor - URL
Şöyle yaparız.
URL jar = ...;
ZipInputStream zip = new ZipInputStream(jar.openStream());
close metodu
Şöyle yaparız.
zipInputStream.close();
closeEntry metodu
Şöyle yaparız.
ZipEntry ze = null;
while ((ze = zipInputStream.getNextEntry()) != null) {
  ...

  zipInputStream.closeEntry();
} 
getNextEntry metodu
ZipEntry nesnelerini dolaşmamızı sağlar. Şöyle yaparız.
ZipEntry entry;
while ((entry = zipInputStream.getNextEntry()) != null) {
  ...
}


GZIPOutputStream Sınıfı

Giriş
GZip tek bir dosyayı sıkıştırır. Genellikle tar ile kullanılır. Tar önce bir arşiv oluşturur, daha sonra gzip bu arşivi sıkıştırır.

Bu sınıf foor.tar şeklindeki bir dosyayı sıkıştırmak için kullanılır.

constructor
Şöyle yaparız.
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzOut = new GZIPOutputStream(out);
Şöyle yaparız.
try (
  OutputStream outputStream = new FileOutputStream(createdFile);
  GZIPOutputStream gStream = new GZIPOutputStream(outputStream);
  ) {
    // ...
}
close metodu
Şöyle yaparız
gStream.close();
write metodu
Şöyle yaparız
String str = ...;
gStream.write (str.getBytes());

17 Nisan 2017 Pazartesi

Sheet Sınıfı

Sheet Sınıfı
addMergedRegion metoduŞöyle yaparız.
Sheet sheet = ...;
sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$F$1"));
rowIterator metodu
Şöyle yaparız.
Sheet sheet  = ...;

Iterator<Row> rowIter = sheet.rowIterator();

while(rowIter.hasNext()){
  Row myRow =rowIter.next();
  Iterator<Cell> cellIter = myRow.cellIterator();
  while(cellIter.hasNext()){
    Cell myCell = cellIter.next();
    ...
  }
}

Row Sınıfı
rowIterator metodu
Şöyle yaparız.
Sheet sheet = ...;
Iterator rowIter = sheet.rowIterator();
Tüm Hücreleri Dolaşmak
Şöyle yaparız.
while(rowIter.hasNext()) {
  Iterator cellIter = ((Row)rowIter.next()).cellIterator();
  while(cellIter.hasNext()) {
    Cell cell = (Cell)cellIter.next();
    ...
  }
}
Cell Sınıfı
getColumnIndex metodu
Şöyle yaparız.
Cell cell = ...;
int col = cell.getColumnIndex();
toString metodu
Şöyle yaparız.
Cell cell = ...;
cell.toString(),

10 Nisan 2017 Pazartesi

OpenCV MatOfKeyPoint Sınıfı

toList metodu
Şöyle yaparız.
MatOfKeyPoint keypoint = ...;
List<KeyPoint> listpoint = keypoint.toList();

OpenCV FeatureDetector Sınıfı

constructor
Metin bulmak için şöyle yaparız.
FeatureDetector detector = FeatureDetector.create(FeatureDetector.MSER);
detect metodu
Şöyle yaparız. MatOfKeyPoint nesnesini doldurur.
MatOfKeyPoint keypoint = new MatOfKeyPoint();
detector.detect(img, keypoint);