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 
Şu satırı dahil ederiz.
import javax.servlet.annotation.WebFilter;
Şöyle yaparız.
@WebFilter(urlPatterns = {"*.jsf"})
public class MyFilter implements Filter {
  ...
}
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());

18 Nisan 2017 Salı

GZIPOutputStream Sınıfı

Giriş
Zip için kullanılır. 

ServletConfig Arayüzü

Giriş
Açıklaması şöyle
ServletConfig object is created by web container for each servlet to pass information to a servlet during initialization.This object can be used to get configuration information from web.xml file.
Bu sınıf servlet'in init metoduna container tarafından geçilir. Şöyle yaparız.
@WebServlet(
        name="login",
        urlPatterns = {"/login","sites/login","login"}
)
public class LoginServlet extends HttpServlet{
...

  public void init(ServletConfig config)throws ServletException{
    ...
  }
}
getInitParameter
init-param tag'lerini okumak içindir. Elimizde şöyle bir web.xml dosyası olsun.
<web-app>  
  <servlet>  
    ......     
    <init-param>  
    <!--here we specify the parameter name and value -->
      <param-name>paramName</param-name>  
      <param-value>paramValue</param-value>  
    </init-param> 
    ......  
  </servlet>  
</web-app>
Şöyle yaparız.
String str = config.getInitParameter("paramName"); 
getServletContext metodu
Şöyle yaparız.
ServletConfig config = ...;
ServletContext context = config.getServletContext ();


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(),