Difference between / and /* in servlet mapping configuration

When we develop a Java Web application, one thing that we must do first is configuring the web.xml file. One thing that need to be configured is the servlet mapping. Here is the snippet of the config:

<servlet-mapping>
    <servlet-name>myServlet</servlet>
    <url-pattern>/</url-pattern>
</servlet-mapping>

The configuration above will make myServlet servlet as the default servlet. The default servlet will be the one who handle the request in case there are no other servlet that suit the path. This is a usual setting for your front controller or DispatcherServlet if you are using Spring MVC. With this config, you can still use another pattern for another purpose, such as for serving static files.

The most common mistakes in this config is setting the url-pattern using /*. This pattern will make every request fall through this particular servlet.

Backup and Restoring DB in PostgreSQL

Just a simple note for myself. Every time I want to do this, I always end up googles it :D.

For backup the whole database, you can use pg_dump:

pg_dump dbname -f outputfile -U username

For restoring the dumped file,

psql -d destdbname -U username < dumpfilename

 

Mengenal Sistem IO di Java

Sistem IO di Java adalah bagian dari library Java yang bertugas menangani input dan output dalam sebuah program Java. Input dan output ini bentuknya bisa bermacam-macam, di antaranya:
  1. Menangani input dan output dari dan ke standar output
  2. Menangani operasi file (membaca atau menulis file)
  3. Memproses data yang masuk melalui soket, dll

Arsitektur library IO di Java dirancang sedemikian rupa sehingga memudahkan dilakukannya ekstensi terhadap library yang sudah ada. Akan tetapi, rancangan tersebut membuat banyak orang yang baru belajar Java menjadi agak sulit untuk memahami sistem IO ini. Di post ini saya akan mencoba menjelaskan dasar dari sistem IO ini.

Pada dasarnya, membaca atau menulis IO itu adalah melakukan operasi pembacaan dan penulisan array of byte. Untuk urusan input, kelas dasar yang digunakan adalah java.io.InputStream, sementara untuk urusan output yang digunakan adalah kelas java.io.OutputStream. Kedua kelas tersebut merupakan kelas abstrak yang akan menjadi kelas dasar dalam IO di Java. Kelas-kelas yang mengimplementasikan InputStream antara lain AudioInputStream untuk membaca file dalam format audio, ByteArrayInputStream untuk membaca input dalam format byte array.

Walaupun sebenarnya operasi IO adalah operasi pembacaan dan penulisan array of byte, akan tetapi seringkali kita butuh untuk membaca dan menulis dalam format teks. Untuk lebih memudahkan dalam melakukan hal tersebut, Java menyediakan kelas abstrak Reader untuk melakukan operasi pembacaan stream dalam format teks dan kelas abstrak Writer untuk melakukan penulisan dalam format teks. Kelas-kelas yang mengimplementasikan kelas Reader antaranya InputStreamReader, BufferedReader, dan FileReader.

Demikian awal pengenalan dari kelas-kelas yang ada dalam Java IO. Semoga Bermanfaat 🙂