Welcome to Abdul Malik Ikhsan's Blog

JSP Custom Tag Library

Posted in Tutorial JSP by samsonasik on August 30, 2009

Bosan sama JSTL & Standard Action ? Gunakan Custom Tag Library Anda sendiri. Pada tutorial kali ini, saya akan memaparkan penggunaan SimpleTagSupport untuk menjalankan tag buatan kita sendiri ( tentunya ada aturan mainnya 🙂 ). Class SimpleTagSupport mengextends Interface SimpleTag yang mengextends Interface JSPTag. Tentang method2 detail nya, mungkin bisa dicari sendiri di google, kali ini saya lebih memfokuskan pada penggunaan method doTag saja :).

Ok, let’s start. Pertama, buat project yang struktur directory nya seperti di bawah ini. (Jika belum terbiasa menggunakan WAR (Web Application Archive) , Anda bisa gunakan ROOT directory ) :
web

Nah, kalau sudah, kita isi source code masing2.
1). wordpress.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 version="2.0">

 <tlib-version>1.2</tlib-version>
 <uri>simpletagwordpress</uri>
 <tag>
 <description>Worst use of a custom tag</description>
 <name>simpletag</name>
 <tag-class>wordpress.SamsonSimpleTag</tag-class>
 <body-content>empty</body-content>
 </tag>
</taglib>

2). SamsonSimpleTag.java

package wordpress;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class SamsonSimpleTag extends SimpleTagSupport{
 public void doTag() throws JspException, IOException{
 PageContext pageContext = (PageContext) getJspContext();
 JspWriter out = pageContext.getOut();
 out.print("Test Tag Buatanku");
 }
}

And The View :
3). wordpress.jsp

<%@ taglib prefix="tagbuatanku" uri="simpletagwordpress" prefix="r"%>
<tagbuatanku:simpletag/>

<!-- agar ketika class diubah & dikompilasi ulang, otomatis reload -->
<r:reload/>

Asik kan 🙂
————————
referensi : Basham, Bryan ; Sierra, Kathy ; Bates, Bert : Head First Servlet & JSP

Advertisements
Tagged with:

mendapatkan url parameter dari servlet

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on June 1, 2009

Pemanggilan url yang sering kita pakai pada framework2 php seperti CodeIgniter atau pun Zend ataupun framework php yang lain dapat kita gunakan pula di JSP, dengan servlet. misal, kita gunakan url parameter edit data :

<url-pattern>/detailbrg/kode/*</url-pattern>

Nah, cara panggil di servlet nya bisa seperti ini :

//————————————
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
String[] spliturl = request.getRequestURL().toString().trim().split(“/”);

String kode = null;
for(int i=0;i

Template helper menggunakan Servlet

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on May 3, 2009

Hm…, lama nih saya ga `nyentuh` servlet & JSP, hitung2 membuka lagi memori lama(cie…cie..), kemarin saya baca buku “Web Development with Java Using Hibernate, JSPs, and Servlets” karya Tim Downey, ternyata banyak hal yang saya belum ketahui, contohnya tentang materi yang akan kita bahas kali ini.
Konsep penggunaan template helper pada berbagai macam framework maupun bahasa pemrograman selalu mengacu pada reuse template include, yang pada intinya akan memudahkan programmer dan designer itu sendiri, serta menghemat memori karena menghemat source code yang ada.
Dalam Java Web Development, kita bisa menggunakan servlet untuk menginclude header & footer secara otomatis. Secara class diagram dapat digambarkan sebagai berikut :

class-diagram

Berikut Source Code untuk class HelperBase :

package Helpers;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author samsonasik
 */
public class HelperBase extends HttpServlet {
    protected HttpServletRequest request;
    protected HttpServletResponse response;

    public HelperBase(){}

    public HelperBase(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.request = request;
        this.response = response;
    }

}

Kemudian, source code untuk ControllerHelper :

package Helpers;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;

/**
 *
 * @author samsonasik
 */
public class ControllerHelper extends HelperBase {

    public ControllerHelper(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        super(request, response);
    }

    public void doGet(String address) throws ServletException, IOException {
        request.getSession().setAttribute("helper", this);

        request.getRequestDispatcher("/header.jsp").include(request, response);
        request.getRequestDispatcher("/"+address).include(request, response);
        request.getRequestDispatcher("/footer.jsp").include(request,response);
    }
}

———–
Nah, sekarang kita sudah punya ControllerHelper, sekarang,kita bisa gunakan untuk berbagai macam controller, tinggal instansiasi kelas ControllerHelper dan gunakan method doGet(address) seperti di bawah ini :

package Controllers;

import Helpers.ControllerHelper;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author samsonasik
 */
public class TestController extends HttpServlet {

    ControllerHelper helper ;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
      helper = new ControllerHelper(request, response);
      helper.doGet("index.jsp");
    }

}

Referensi : Web Development With Java Using Hibernate, JSPs,and Servlets – Tim Downey : 2007

Membuat Paging pada JSP

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on March 10, 2009

Hm…, lama nih ga nulis artikel tentang JSP, habis, nasib ngurusin PHP mulu, :), he..he… Di sini saya memodifikasi kelas pagination punya CodeIgniter (PHP), cuma copy logika nya aja, karena pagination nya emang udah bagus 🙂 (bilang aja ga bisa buat sendiri, xi..xi…xi…).

Hal pertama yang harus ditentukan adalah, apa yang akan kita list dan kita paging. Saya di sini akan memberi contoh tentang paging menggunakan PostgreSQL, dengan table orang dengan field2 nya id, nama, alamat, simple kan ? 🙂
OK, sekarang kita siapkan modelnya :

1. Kelas Koneksi

package beanpackage;
import java.sql.*;
/**
 *
 * @author samsonasik
 */
public class Koneksi {

 private Connection con=null;
 private Statement st=null;
 private ResultSet rs=null;

 public Koneksi()throws SQLException,ClassNotFoundException {
 Class.forName("org.postgresql.Driver");
 con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/ikhsandb","ikhsan","123456");
 st = con.createStatement();
 }

 public void seleksi(String s) throws SQLException{
 rs = st.executeQuery(s);
 }

 public boolean getNext() throws SQLException{
 return rs.next();
 }

 public String getText(String t) throws SQLException{
 return rs.getString(t);
 }

 public int getInt(String t) throws Exception {
 return rs.getInt(t);
 }
}

2. Kelas Pagination (library pagination nya )

package beanpackage;

/**
 *
 * @author samsonasik
 */
//dimodifikasi dari kelas paginationnya codeIgniter
public class Pagination {
    public int totalrows = 0;
    public int numlink   = 2;
    public int curpage   = 0;
    public int perpage = 2;
    public String firstlink = "First";
    public String nextlink = "Next";
    public String prevlink = "Previous";
    public String lastlink = "Last";

    public String createlinks(int halaman) {
        if ( (this.totalrows==0) || (this.perpage==0)) {
            return "";
        }

        int numpage = this.totalrows / this.perpage ;
        int sisa  = this.totalrows % this.perpage;
        if (sisa > 0 ){
            numpage = numpage + 1;
        }

        if (numpage==1) {
            return "";
        }

        try {
            this.curpage = halaman;
        } catch (Exception e) {
            this.curpage = 1;
        }

        try {
            this.curpage = (int) this.curpage;
        } catch (Exception e) {
            this.curpage = 1;
        }

        if (this.curpage > this.totalrows)
        {
            this.curpage = (numpage -1 ) * this.perpage ;
        }

        if (this.curpage < 1 ) {
            this.curpage = 1;
        }

        int uri_page_number = this.curpage ;
        int start = ((this.curpage - this.numlink) > 0 ) ? this.curpage - (this.numlink -1) : 1;
        int end   = ((this.curpage + this.numlink < numpage)) ? this.curpage + this.numlink : numpage;

        //inisialisasi ...
        String theoutput = "";
        //Render first link
        if (this.curpage > (this.numlink +1))
        {
            if (this.curpage <= numpage) {
                theoutput +="<a href=\"?page=1\">"+this.firstlink+"</a>&nbsp;";
            } else {
                theoutput +="";
            }
        } 

        //Render Previous Link
        if (this.curpage !=1) {
            if (this.curpage <= numpage) {
                theoutput +="<a href=\"?page="+(this.curpage-1)+"\">"+this.prevlink+"</a>&nbsp;";
            } else {
                theoutput +="";
            }
        }

        //render digit link

        for (int loop = start -1; loop<end;loop++) {
            if (this.curpage <= numpage) {
            if (this.curpage == (loop+1)) {
                theoutput += loop+1+"&nbsp;";
            } else {
                theoutput += "<a href=\"?page="+(loop+1)+"\">"+(loop+1)+"</a>&nbsp;";
            }
            } else {
                theoutput +="";

            }
        }

        //render the next link
        if (this.curpage < numpage) {
            theoutput += "<a href=\"?page="+(this.curpage+1)+"\">"+this.nextlink+"</a>&nbsp;";
        } else {
            theoutput +="";
        }

        //render the last link
        if ((this.curpage + this.numlink)<numpage) {
            theoutput += "<a href=\"?page="+numpage+"\">"+this.lastlink+"</a>";
        }

        return theoutput;
    }
}

3. Kelas Orang (Model dari table orang)

package beanpackage;

import java.sql.SQLException;
import java.util.ArrayList;
/**
 *
 * @author samsonasik
 */
public class Orang {
    private int id;
    private String nama, alamat;

    public Orang(){ }

    public Orang(int id, String n,String a){
       this.id = id;
       this.nama = n;
       this.alamat = a;
    }

    public void setNama(String n)
    {
        this.nama = n;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void setAlamat(String al)
    {
        this.alamat = al;
    }

    public String getNama()
    {
        return nama;
    }

    public String getAlamat()
    {
        return alamat;
    }

    //seleksi offset limit
    public ArrayList<Orang> seleksi(int offset, int limit) throws SQLException, ClassNotFoundException
    {

        ArrayList<Orang> temp = new ArrayList<Orang>();
        try {
            Koneksi kon = new Koneksi();
            kon.seleksi("select * from orang offset '"+offset+"' limit '"+limit+"'");

            while (kon.getNext()) {
                temp.add(new Orang(kon.getInt("id"), kon.getText("nama"), kon.getText("alamat")));
            }
        } catch(Exception e) {}

        return temp;
    }

    public int getJml() {
        int jml  = 0;
        try {
            Koneksi kon = new Koneksi();
            kon.seleksi("select count(*) as jml from orang");
            if (kon.getNext()) jml = kon.getInt("jml");
        } catch (Exception e){}
        return jml;
    }
}

Nah, kalau sudah tuh, kita buat servletnya, ga akan saya tulis lengkap

deh kaya’nya, cuma isi method nya aja yang memanggil

model-model yang ada.

.............
        ArrayList<Orang> temp = new ArrayList<Orang>();
        PrintWriter out = response.getWriter();
        try {
            Orang  org = new Orang();
            int page = 0;
            try {
                page = Integer.parseInt(request.getParameter("page"));
            } catch (Exception e) {
                page = 1;
            }

            Pagination pgn = new Pagination();
            pgn.totalrows = org.getJml();

            temp = org.seleksi(page*pgn.perpage-pgn.perpage,pgn.perpage);
            request.setAttribute("temp", temp);
            request.setAttribute("perpage",pgn.perpage);
            request.setAttribute("paging", pgn.createlinks(page));

        } catch(Exception e) {

            out.print("terjadi kesalahan koneksi");
            out.close();
        }
        request.getRequestDispatcher("/testlist.jsp").forward(request, response);
................

Jangan lupa konfigurasi web.xml nya, udah bisa kan ? 🙂

Terakhir adalah view :

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
${paging}
<table border="1" cellpadding="1" cellspacing="1">
<tr>
<td>No</td>
<td>Id</td>
<td>Nama</td>
<td>Alamat</td>
</tr>
<c:catch var ="catchException">
    <c:if test="${param.page eq null || param.page eq '1'}">
        <c:set var="no" value="0"/>
    </c:if>
    <c:if test="${param.page gt '1'}">
        <c:set var="no" value="${param.page * perpage - perpage }"/>
    </c:if>
  </c:catch>

    <c:if test="${catchException !=null}">
        <c:set var="no" value="0"/>
    </c:if>

    <c:forEach var="testlist" items="${temp}">
        <c:set var="no" value="${no +1}"/>
<tr>
<td>${no} .</td>
<td>${testlist.id}</td>
<td>${testlist.nama}</td>
<td>${testlist.alamat}</td>
</tr>
</c:forEach></table>
${paging}

Simple kan ? selamat mencoba 🙂

Servlet Filter

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on June 7, 2008

Filter adalah sebuah komponen yang dapat menangani request atau response yang harus atau tidak harus dilakukan/diterima oleh client. Secara normal, filter digunakan untuk membungkus dan memanipulasi request, response, atau nilai header sebelum dan setelah eksekusi target.

Now, kita akan mencoba mempraktekkan sebuah filter sederhana 🙂
Pertama, kita siapkan GenericFilter sebagai implementasi dari interface javax.servlet.Filter, mengimplementasikan method doFilter, init,dan destroy.
Method init digunakan untuk menginisialisasi filter, yang kemudian dijalankan oleh doFilter, sedang method destroy digunakan untuk menghancurkan object yang diinstansiasi dari kelas FilterConfig.
berikut coding standard untuk kelas GenericFilter :

Code:
/*
from http://www.orionserver.com/tutorials/filters/1.html
*/
package filters.learn;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

public class GenericFilter implements Filter{
private FilterConfig filterConfig;
public void doFilter(final ServletRequest req,final ServletResponse resp, FilterChain chain)
throws IOException,ServletException{
chain.doFilter(req,resp);
}
public FilterConfig getFilterConfig(){
return filterConfig;
}
public void init(FilterConfig config){
this.filterConfig = config;
}
public void destroy(){
this.filterConfig = null;
}
}

Now, let’s Writing your first Filter :

Code:
package filters.learn;
import filters.learn.GenericFilter;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class HelloWorldFilter extends GenericFilter {

public void doFilter(final ServletRequest req, final ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
req.setAttribute(“me”,”Ikhsan”);
chain.doFilter(req,resp);
}

}

Kita akan mencoba mengetes filter di atas, kita siapkan file JSP kita :

Code:
hai, ini aku ${me}

Pertanyaannya, bagaimana configurasi filter di atas?? eit …, tunggu dulu, sebelum kita bicara konfigurasi, tentunya kita butuh sebuah servlet lagi yang akan kita memforward, dan memapping address url, berikut codingnya :

Code:
package filters.learn;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletForwarderHello extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException, IOException{
req.getRequestDispatcher(“/filts/filter1.jsp”).forward(req,resp);
}
}

Nah, sekarang waktunya konfigurasi web.xml kita :

…..

<servlet>
<servlet-name>servletforwarderhellofilter</servlet-name>
<!–class servlet –>
<servlet-class>filters.learn.ServletForwarderHello</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>servletforwarderhellofilter</servlet-name>
<!–alamat url –>
<url-pattern>/filter</url-pattern>
</servlet-mapping>

<filter>
<filter-name>HelloWorld</filter-name>
<filter-class>filters.learn.HelloWorldFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HelloWorld</filter-name>
<url-pattern>/filter</url-pattern>
</filter-mapping>

…..

Now, let’s try : http://localhost:8080/advance/filter (ceritanya, saya built ke dalam advance.war, kalau ditaruh di bawah direktori ROOT, cukup http://localhost:8080/filter)

Selamat mencoba 🙂
Referensi :
1. http://www.orionserver.com/tutorials/filters/
2. http://www.javapassion.com

Modul MVC Implementation

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on May 3, 2008

Implementasi MVC mggnkn JSTL

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on April 16, 2008

Persiapan :
1. satu gelas kopi.
2. Tomcat yang sudah terkonfigurasi.
3. Copykan library JSTL yaitu standard.jar dan jstl.jar dari tomcat\webapps\examples\WEB-INF\lib ke tomcat\webapps\ROOT\WEB-INF\lib
4. Restart Tomcatnya
5. Let’s Coding…
———-
Siapkan kelas Modelnya (contoh, simpan di WEB-INF\classes\MVCModel)

Code:
package MVCModel;
import java.sql.*;

public class OpenConnect{
private String driver=”com.mysql.jdbc.Driver”;
private Connection con;
private Statement state;
private ResultSet rs;
//konstruktor…
public OpenConnect() throws ClassNotFoundException, SQLException{
Class.forName(driver);
con=DriverManager.getConnection(“jdbc:mysql://localhost/belajarMVC”, “root”,””);
state = con.createStatement();
}
public boolean strSQL(String sql) throws SQLException{
rs = state.executeQuery(sql);
return (rs!=null);
}
public boolean strNext() throws SQLException{
return rs.next();
}
public String getField(String field) throws SQLException{
return rs.getString(field);
}
public void lastrecord() throws SQLException{
rs.last();
}
public int getCount() throws SQLException{
return rs.getRow();
}
public void firstrecord()throws SQLException{
rs.beforeFirst();
}
}

—>compile deh

Selanjutnya, kita buat kelas Controlnya(Contoh, simpan di WEB-INF\classes\MVCControl)

Code:
package MVCControl;
import MVCModel.OpenConnect;

import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class Controller extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
try{
OpenConnect open = new OpenConnect();
open.strSQL(“select *  from buku”);
//letakkan cursor pada akhir record
open.lastrecord();
//dpt jumlah record
int jml = open.getCount();
//letakkan cursor kembali pada awal record
open.firstrecord();

//set atribut jumlah dengan variable jml
request.setAttribute(“jumlah”,jml);

//deklarasi array field2 tabel
String[] field1 = new String[jml];
String[] field2 = new String[jml];

for (int i=0;i<=jml ;i++ )
{
//next ResultSet
open.strNext();

//isi array ke i dengan field2 yang ada…
field1[i] = open.getField(“kodebuku”);
field2[i] = open.getField(“namabuku”);

//isi atribut…
request.setAttribute(“kodenya”,field1);
request.setAttribute(“namanya”,field2);

}
}catch(Exception e){    }
request.getRequestDispatcher(“MVCView/view.jsp”).forward(request,response);
}
}

–>compile deh
Di sini saya contohkan menggunakan database mysql, ada tabel buku dengan field2nya kodebuku dan namabuku.
————
Nah, sekarang, tingggal ditampilkan di View

Code:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core&#8221; %>
<table border=”1″>
<tr>
<td>No.</td>
<td>Kode Buku</td>
<td>Nama Buku </td>
</tr>
<c:forEach var=”i” begin=”1″ end=”${jumlah}”>
<tr>
<td>${i}</td>
<td>${kodenya[i-1]} </td>
<td>${namanya[i-1]}</td>
</tr>
</c:forEach>
</table>


Oh, ya, jangan lupa setting DD (Deployment Descriptor-nya) di web-xml, –>tambahkan

Code:
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>MVCControl.Controller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/mvc.view</url-pattern>
</servlet-mapping>


—————–
Tinggal testing…

Quote:
http://localhost:8080/mvc.view

Packaging Web Components (JSP)

Posted in Tutorial JSP by samsonasik on April 10, 2008

Pemaketan pada JSP dikenal dengan nama WAR (Web Application Archive), ini digunakan untuk mengarsipkan aplikasi yang didalamnya bisa dimasukkan segala class yang biasa kita tampung di \web-inf\classes, dan file2 jsp kita.
secara default,(menggunakan Tomcat), file war yang terpasang adalah ROOT.war, nah, misal kita coba mengarsipkan yang lain, misalnya wordpress.war, caranya kita masuk ke folder wordpress, kita buat War di situ, di sini saya ambil contoh wordpress.war dengan cara ketik jar -cvf wordpress.war * , * berarti semua file yang ada di dalamnya diikut sertakan, baik file maupun folder.

Code:
F:\Tomcat\webapps\ROOT\wordpress> jar -cvf wordpress.war *
added manifest
adding: connect.jsp(in = 403) (out= 277)(deflated 31%)
adding: handsome.jsp(in = 156) (out= 68)(deflated 56%)
adding: handsome.jsp.bak(in = 144) (out= 91)(deflated 36%)
adding: login.jsp(in = 1072) (out= 494)(deflated 53%)
adding: login.jsp.bak(in = 1058) (out= 485)(deflated 54%)
adding: logout.jsp(in = 234) (out= 162)(deflated 30%)
adding: logout.jsp.bak(in = 235) (out= 162)(deflated 31%)
adding: mvc/(in = 0) (out= 0)(stored 0%)
adding: mvc/input.html(in = 422) (out= 222)(deflated 47%)
adding: mvc/head.jsp(in = 23) (out= 24)(deflated -4%)
adding: show.jsp(in = 14) (out= 16)(deflated -14%)
adding: show.jsp.bak(in = 33) (out= 35)(deflated -6%)
adding: tes.jsp(in = 49) (out= 39)(deflated 20%)
adding: utama.jsp(in = 365) (out= 216)(deflated 40%)
adding: utama.jsp.bak(in = 365) (out= 217)(deflated 40%)

Nah, kita sekarang bisa deploy, caranya , buka http://localhost:8080
masuk ke Tomcat Manager, masukkan username dan password tomcat, akan tampil Tomcat Web Application Manager
di bawah ada WAR file to deploy
tinggal browse, cari file war yang telah kita bentuk, dan deploy, beres deh :
Kita bisa panggil sekarang http://localhost:8080/wordpress

Setting Dynamic path di Tomcat

Posted in Tutorial JSP by samsonasik on April 1, 2008

Hm…, selama ini, yang kita ketahui adalah directory suatu web hanya ada di suatu webroot web container.
Nah, kali ini saya akan membahas dynamic path, maksudnya ? Yang saya maksudkan adalah penggunaan Tomcat
yang tidak cuma tergantung pada satu path aja, misalnya, berada pada F:\tomcat\webapps\ROOT, tapi kita
bisa menambahkan path lain, misalnya, di D:\work\JSP, atau E:\webku\ , atau yang lain, asyik kan ?
Caranya adalah menambahkan file konfigurasi di Tomcat\conf\Catalina\localhost

misalkan kita ingin menambahkan path /wordpress, kita tinggal
tambahkan file wordpress.xml di tomcat\conf\Catalina\localhost

wordpress.xml

Code:
<?xml version=”1.0″ encoding=”UTF-8″?>
<Context docBase=”F:\data samson\work\JSP” path=”/wordpress”/>

berarti, kita bisa panggil
http://localhost:8080/wordpress –> merujuk ke semua file di bawah direktori
F:\data samson\work\JSP

kita bisa menambahkan path2 yang lain semau kita, jadi intinya seperti path2 bayangan yang bisa kita tampilkan semua kita…

asyik kan…

Automatic reload Tomcat

Posted in Tutorial JSP, Tutorial Servlet by samsonasik on March 2, 2008

Ketika kita melakukan perubahan pada kelas, baik itu javabean maupun servlet, maka secara default, kita harus restart tomcatnya, menyusahkan sekali bukan? Ketika ada perubahan sedikit saja, untuk melihat hasilnya, kita harus restart Tomcatnya. Nah, untuk penanganan hal ini,kita perlu setting tambahan konfigurasi yang telah ada.
Tambahkan tag berikut pada conf/server.xml

Code:
<Context path=”/ROOT” docBase=”webapps/ROOT” debug=”0″ reloadable=”true” > </Context>

Setelah itu, edit tag yang ada di conf/context.xml

Code:
<Context reloadable=”true” privileged=”true”>

Setelah melakukan perubahan konfigurasi ini, restar Tomcatnya, selamat mencoba 🙂

JSP vs PHP Exception

Posted in Tutorial JSP, Tutorial PHP by samsonasik on February 2, 2008

PHP :

Code:
<?
try{
if (!@$x=10/0){ throw new Exception(“salah logika…”);}
}catch(Exception $e){
print $e->getMessage();
}
?>


JSP :

Code:
<%
try{
int x=10/0;
}catch(Exception e){
out.print(“salah logika…”);
}
%>

JSP vs PHP number format :)

Posted in Tutorial JSP, Tutorial PHP by samsonasik on February 1, 2008

di PHP

Code:
<?
$var=10000000;
print number_format($var,2,’,’,’.’);
/*
$var adalah variabel kita
angka 2, berarti 2 di belakang koma
‘,’ , berarti pemberian koma diakhir
‘.’ , berarti pemberian titik untuk pembagian per seribu
*/
?>

Hasilnya

Quote:
10.000.000,00

kalau di JSP, saya bingung nyari2 formatnya,bingung, ada juga format US, yaitu pembagian perseribu menggunakan koma, sedang akhir2 malah menggunakan titik, kemudian saya cari lagi yang format IDR, eh, tetep aja sama, nah loh, akhirnya saya nemu format GERMANY, yang menggunakan format sama seperti di atas…yaitu pembagian perseribu menggunakan . (titik), dan terakhir menggunakan ,(koma).

Code:
<%@ page import=”java.text.*”%>
<%@ page import=”java.util.Locale”%>
<%double var = 10000000;NumberFormat formatid = NumberFormat.getCurrencyInstance(Locale.GERMANY);out.print(“<br>”);

String rep=formatid.format(var);

//hitung jumlah karakter untuk mengakalin …
int getjml=rep.length();

int getminsatu=getjml-1;

out.println(rep.substring(0,getminsatu));
%>


karena format germany tidak dikenal (Rp, atau $ nya-red), maka saya potong(substring) bagian terakhir untuk mengakalin Twisted Evil , jadinya nampil deh …

Hasilnya

Quote:
10.000.000,00

nl2br pada jsp

Posted in Tutorial JSP by samsonasik on January 8, 2008

sama halnya dengan php, di jsp kita juga bisa menggunakan method untuk ganti baris saat si user mengetikkan komentar pada text area sehingga tampil apa adanya seperti yang user ketikkan, misalnya mengetikkan “wah, bagus banget nih, <Enter>boleh minta tanda tangan ga ?: ) “, kalau tanpa function untuk memanggil ganti baris, maka halaman web hanya akan menampilkan satu baris, karena value  [] Enter tidak dikenali sehingga dianggap seperti spasi.
Berikut contoh penerapan pada aplikasi buku tamu :
Seperti biasa, siapkan file koneksi di Bean-nya :
/* =============================
simpan di –> web-inf/learn/config.java;
*/

Code:
package learn;import java.sql.*;

public class config{

public Connection con=null;
public Statement st=null;
public ResultSet rs=null;
public String driver=”com.mysql.jdbc.Driver”;
public String url=”jdbc:mysql://localhost/belajar”;
public String user=”root”;
public String pass=””;

public void konekdb()throws Exception{
try{
Class.forName(driver);
con=DriverManager.getConnection(url,user,pass);
}catch(Exception e){}
st=con.createStatement();
}

public boolean getnext()throws Exception{
return rs.next();
}

public String getText(String t)throws Exception{
return rs.getString(t);
}
}

/*——–web-inf/learn/Insert.java———–*/

Code:
package learn;import java.sql.*;

public class Insert extends config{
public void insert(String nama,String email,String komentar)throws Exception{
st.executeUpdate(“insert into bukutamu values(‘”+nama+”‘,'”+email+”‘,'”+komentar+”‘)”);
}
}

/* ———–web-inf/learn/Tampil.java ————–*/

Code:
package learn;import java.sql.*;

public class Tampil extends config{
public void seleksi(String query)throws Exception{
rs=st.executeQuery(query);
}
public void bukutamu()throws Exception{
seleksi(“select * from bukutamu”);
}
}

==============
Nah, sekarang kita buat file inputan di *.jsp nya

Code:
<form id=”form1″ name=”form1″ method=”post” action=”save.jsp”>
Nama :
<input type=”text” name=”nama” />
<br />
Email :
<input type=”text” name=”email” />
<br />
Komentar :
<textarea name=”komentar”></textarea>
<input type=”submit” name=”Submit” value=”Submit” />
</form>

/*===========
/* save.jsp */====
===============
*/

Code:
<jsp:useBean id=”obj” class=”learn.Insert”/><%
obj.konekdb();
String nama=request.getParameter(“nama”);
String email=request.getParameter(“email”);
String komentar=request.getParameter(“komentar”);

obj.insert(nama,email,komentar);
response.sendRedirect(“tampilbukutamu.jsp”);
%>

================
tampilbukutamu.jsp
================

Code:
<%!
//deklarasi method ganti baris pada komentar
//( sama dengan function nl2br pada php)
String nl2br(String str){
return str.replaceAll(“\n”, “<br>”);
}
%>
<jsp:useBean id=”obj” class=”learn.Tampil”/>
<%
obj.konekdb();
obj.bukutamu();while (obj.getnext()){
%>
<table width=”307″ border=”1″>
<tr>
<td width=”71″>Nama</td>
<td width=”10″>:</td>
<td width=”204″> <%=obj.getText(“nama”)%></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td> <%=obj.getText(“email”)%></td>
</tr>
<tr>
<td valign=”top”>Komentar</td>
<td valign=”top”>:</td>
<td valign=”top”> <%=nl2br(obj.getText(“komentar”))%></td>
</tr>
</table>
<%
}
%>

Working with jstl

Posted in Tutorial JSP by samsonasik on December 4, 2007

Dengan menggunakan JSTL (Java Standard Tag Library), kita bisa menggunakan tag-tag(<>) library yang dimiliki oleh java, caranya, kita bisa copy kan folder lib yang ada di folder example\web-inf tomcat kita ke folder root\web-inf webapps kita, nah, contoh penggunaannya seperti berikut :

<%@ taglib uri=”http://java.sun.com/jsp/jstl/core&#8221; prefix=”c” %>
<html><body>
Welcome to our page !
<c:if test=”${empty param.username}”>
<jsp:forward page=”HandleIt.jsp”/>
</c:if>
Hello ${param.username}
</body></html>

—————
—> jika tidak input username, maka forward ke HandleIt.jsp, tanpa mengubah alamat adress bar :), selamat mencoba.

—-> Head First Servlet & JSPBryan Basham, Kathy Sierra, & Bert Bates.

membuat halaman errorPage

Posted in Tutorial JSP by samsonasik on September 25, 2007

Mungkin kita pernah merasa bingung, wah, gimana ya kalau kita hosting, terus halaman kita error, terus kan ketahuan tuh errornya di mana, line berapa, bisa gawat kan ?
Nah, kalau di jsp, kita bisa atur2 tuh 🙂 , caranya, kita buat halaman yang sekiranya akan jadi error, misalnya badpage.jsp
—————————————–
<%@ page errorPage=”error.jsp”%>
<%
int x=10/0; %>
Dari script di atas, kan ketahuan salahnya, 10/0 itu ga bisa 🙂 , nah, kalau langsung error aja , ketahuan salahnya di line berapa, cara penanggulangannya dengan cara @ page errorPage yang akan menghandle error yang terjadi , dan diredirect ke error.jsp
—————————————–
Nah, sekarang kita buat error.jsp
————————-
<%@ page isErrorPage=”true”%>
Website lagi di maintenance
————————–
padahal emang webnya lagi error 🙂
Nah, akan lebih efektif lagi jika kita mengaturnya pada web.xml (web-inf\web.xml), kita tambahkan tag xml seperti berikut :
<!– Handling ErrorPage –>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>

<!–Handling not Found Page –>
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>

coba aja 🙂