23
Jun
08

n3tg33ks pindah….

:D Balik lagi

17
Jun
08

gimana klo pemimpin orkestra diganti robot ajah ??

05
Jun
08

pengembangan diri, beasiswa luar negeri dan ….. DUIT

Entah kenapa belakangan ini ketiga topik diatas “memenuhi” kepala saya. Kenapa pengembangan diri? kenapa beasiswa? dan kenapa duit? . Ada hubungan yang erat antara ketiganya. Awalnya saya membaca sebuah buku yang berjudul “When Faster Harder Smarter is Not Enough”, tulisan Kathryn D. Cramer, Ph.D. , terbitan Penerbit Andi Yogyakarta . Saya banyak membaca tentang bagaimana mencapai tujuan dengan baik disana, menentukan prioritas, berpikiran positif dan yang penting bagaimana untuk mencapai tujuan jangka panjang saya. Berhubung saya sangat ingin melanjutkan sekolah ke luar negeri, seakan-akan tidak ada yang dapat menghalangi keinginan saya ini (heh?). Jadinya termotivasi deh pingin nyari beasiswa S2, klo bisa sih di Inggris. SAYA INGIN KE INGGRIS!!!!!! AMIN. :lol: .

When Faster, Harder, Smarter is Not Enough

Untuk mendukung keinginan saya ini tentunya saya juga perlu duit tambahan, jadinya DUIT juga masuk sebagai judul di atas. Lumayanlah hasil pekerjaan saya, biar cuma kecil dan yang kedua nyari duit lewat internet :mrgreen: dikit-dikit lama-lama jadi gunung. MAU ? nih klik disini . Setiap klik $0.01, 10x klik 0.1 klo dibawah kamu ada 10 orang yang klik 10x juga ya jadi $1.00/hari. LUMAYAN KHAN hehehehehe :lol: . Klo saya sekarang dah $5.23 . Sabar” aja deh tunggu setaon juga jadi banyak. Duit sih duit tapi bukan berarti konsentrasi hidup saya adalah duit. Saya lebih memilih profesionalitas di suatu bidang dan bagaimana membuat sesuatu yang bermanfaat untuk orang lain (mulia sekali… :mrgreen: ).

Saya rasa cukup berbicara tentang DUIT, mari bicara tentang sekolah di luar negeri. Kebanyakan orang lebih suka sesuatu yg berasal dari luar negeri. Sepatu dari cina, makanan dari amerika, kain dari mesir, bahkan kucing dari mesir juga lebih laku (Kucing dari mesir kayak gimana yah??). Begitu juga saya suka sekolah yang ada di luar negeri (Indonesia). Sebenarnya bukan karena itu… EHEM..EHEM…. Ok serius. Intinya adalah kualitas. Saya tidak mengatakan kualitas pendidikan di Indonesia buruk, tapi menurut saya kualitas pendidikan di luar lebih baik. Skalian belajar bahasa asing gitu deh. Kayak orang Jerman mau belajar bahasa Indonesia datang dia ke negeri kita ini, nah saya mo belajar bahasa Inggris pergilah saya Inggris, skali” ngerasa jadi bule :lol: BUGIL -> BUle GILa.

Ngomong” soal bule, kan ada tuh acara BUle GILa (BUGIL), heran deh kok tuh bule mau” aja dikerjain kayak gitu, udah gitu ada yang di suruh nyuci mobil lah, jadi tukang topeng monyet, ada yang mau jadi monyetnya pula, ada-ada aja. Itu emang acara kurang kerjaan yang pernah ada.

Lanjut ke sekolah luar negeri. Adakah yang mau menawarkan saya beasiswa, saya mahasiswa yang baik loh, IP juga lumayan, jarang bolos, dan suka menabung. Promosi…promosi…promosi… sayang anak…sayang anak…sayang anak… Klo ada yang mo ngajak kuliah bareng juga boleh kok, tapi ingat yang beasiswa yak (SERIUS NIH).

03
Jun
08

Wacana Inti Informatika (WII)

Setelah numpang hampir 1 tahun di ruangan milik BISTEK, yang terletak di Kampus Hijau UKSW, Wacana Inti Informatika (WII) resmi pindah kantor :twisted: .

Alamat kantor Jl. Pemandangan, Desa Boegel Salatiga 50711

Emank sih, lokasinya dipinggir kota dan area dataran tinggi, maklumlah di Salatiga. Tapi situasinya emank pas banget untuk kerjaan kita” yang kerja di sini. Sejuk, gak ribut, n pemandangan indah. Kalo mau liat pemandangan indah dari kantor saya. Naek aja ke talang air yang ada di belakang dijamin satu Salatiga keliatan. Rawa pening pun keliatan dari sini :mrgreen: . Lumayan klo udah rada stress n bosen manjat deh ke talang air, photo” dikit trus turun terjun bebas, ga mati kok soalnya di bawahnya banyak semak” (bodoh klo percaya ga mati) :mrgreen: . Sebenarnya kantor yang baru ini bekas rumah Bpk. Willi Toisuta, jadi klo liat gitu ya orang taunya itu sekedar rumah di atas bukit.

Kantor WII

Pemandangan dari atas Talang Air

Hampir tiap hari saya naik turun ke kantor naik sepeda. Naik jam 8.30 pagi pulang sekitar jam 4 sore. Paling capek klo baru berangkat kantor, tanjakkannya bikin ngos-ngosan. Tapi klo mo pulang tinggal meluncur WUUUZZZZ…. Lagian kalo pake sepeda kan gak perlu mikiran naik turunnya BBM yang mau gak mau kayaknya mesti naik. Dengan bermodal kekuatan batin dan betis dijamin nyampe deh.

wew dah dulu deh dah 5.11pm sekarang. BALIK AKHHRRGGGHH HOEK UHUK…UHUK… :lol:

21
Apr
08

struts validator, pretty cool

Bulan februari kemarin saya menulis tentang error handling-nya struts -> http://n3tg33ks.wordpress.com/2008/02/22/error-handling-struts-1x/ . Struts validator ini sebenarnya sama saja intinya, cuma saya ajah yang nulis judulnya gak kompak :mrgreen: . Ada beberapa hal yang membedakan dari tulisan sebelumnya. Pertama, Untuk Form(model)-nya meng-extends class ValidatorForm, bukan ActionForm. Kedua, disini tidak perlu meng-override method validate() dan reset(). Dan yang Ketiga, memberikan sedikit sentuhan pada file validator.xml.

Saya mulai dari pembuatan modelnya(User.java), sebagai berikut:


package com.myapp.form;

//import javax.servlet.http.HttpServletRequest;
//import org.apache.struts.action.ActionErrors;
//import org.apache.struts.action.ActionMapping;
//import org.apache.struts.action.ActionMessage;
//import org.apache.struts.action.ActionServlet;
//import org.apache.struts.util.MessageResources;
import org.apache.struts.validator.ValidatorForm;

/**
 *
 * @author JollkY
 */
public class User extends ValidatorForm {
    private String userid;
    private String password;
    /** Creates a new instance of User */
    public User() {
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
//
//    @Override
//    public void reset(ActionMapping mappping,
//            HttpServletRequest request) {
//        ActionServlet srvt = this.getServlet();
//        MessageResources msgResources = srvt.getInternal();
//        msgResources.getMessage("pesan");
//        this.userid = "";
//        this.password = "";
//        System.out.println("RESET --->");
//    }
//
//    @Override
//    public ActionErrors validate(ActionMapping mapping,
//            HttpServletRequest request) {
//            ActionErrors errorMsg = new ActionErrors();
//            if(this.userid.equalsIgnoreCase( "" ) || this.password.equalsIgnoreCase( "" )) {
//                errorMsg.add("userid", new ActionMessage( "errors.invalid" ));
//            }
//            return errorMsg;
//    }

}

Seperti yang sdh saya katakan di atas method validate() dan reset(), tidak lagi dibutuhkan. Untuk review, method validate() berisi kode untuk melakukan validasi terhadap input user, dan method reset berguna untuk memastikan bahwa semua field benar” bersih sebelum diisi lagi dengan nilai yang baru. Jangan lupa bahwa sekarang model meng-extends Class ValidatorForm.

Berikutnya adalah file action(LookUpAction.java). Tidak ada perubahan yang terjadi di sini:


/*
 * LookUpAction.java
 *
 * Created on February 8, 2008, 8:47 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.myapp.action;

import com.myapp.form.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author JollkY
 */
public class LookUpAction extends Action {

    /** Creates a new instance of LookUpAction */
    public LookUpAction() {
    }

    @Override
    public ActionForward execute(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            {

        User u = (User) form;
        return (mapping.findForward("success"));
    }
}

Begitu pula pada file konfigurasi struts (struts-config.xml) tidak ada perubahan:


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
    <form-beans>
        <form-bean name="userForm" type="com.myapp.form.User"/>
    </form-beans>

    <global-exceptions>

    </global-exceptions>

    <global-forwards>
        <forward name="welcome"  path="/Welcome.do"/>
    </global-forwards>

    <action-mappings>
        <action path="/Welcome" forward="/welcomeStruts.jsp"/>
        <action
            path="/lookUp"
            type="com.myapp.action.LookUpAction"
            name="userForm"
            validate="true"
            input="/welcomeStruts.jsp"
            scope="request">
            <forward name="success" path="/index.jsp"/>
            <forward name="failure" path="/welcomeStruts.jsp"/>
        </action>
    </action-mappings>

    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter="com/myapp/struts/ApplicationResource"/>   

    <!-- ========================= Tiles plugin ===============================-->
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
        <set-property property="moduleAware" value="true" />
    </plug-in>

    <!-- ========================= Validator plugin ================================= -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>

</struts-config>

Pada file struts-config.xml, terdapat tag <plug-in> yang memberitahukan plugin struts apa saja yang digunakan dalam aplikasi. Karena saya menggunakan plugin validator dari struts maka di sana harus ada potongan kode ini – yang juga memberitahukan kepada struts dimana file konfigurasi plugin validator yang saya pakai:


{...}

<!-- ========================= Validator plugin ================================= -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>

{...}

Bagian terpenting pada validator ini terdapat pada validation.xml dan validator-rules.xml, karena disanalah akan dilakukan validasi yang diinginkan(validation.xml) dan validasi apa saja yang dapat dilakukan(validator-rules.xml).


{.....}
        <form name="userForm">
            <field
                property="userid"
                depends="required,minlength,mask">
                <msg name="required" key="error.nullfield"/>
                <arg0 key="error.userlabel"/>
                <msg name="minlength" key="error.userNameMinLenght"/>
                <arg1 name="minlength" key="${var:minlength}" resource="false"/>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>5</var-value>
                </var>
                <msg name="mask" key="error.invalidCharacter"/>
                <var>
                    <var-name>mask</var-name>
                    <var-value>^[0-9a-zA-Z]*$</var-value>
                </var>
            </field>
            <field
                property="password"
                depends="required,mask">
                <msg name="required" key="error.nullfield"/>
                <arg0 key="error.passwordlabel"/>
                <msg name="mask" key="error.invalidCharacter"/>
                <var>
                    <var-name>mask</var-name>
                    <var-value>^[0-9a-zA-Z]*$</var-value>
                </var>
            </field>
        </form>
{....}

Pada file validation.xml terdapat potongan kode di atas. Setiap <form> akan memiliki lebih dari satu <field>.

============================================

<form name=”">

Saya menuliskan nama form yang akan divalidasi inputnya. Di atas saya menuliskan userForm, yang berarti nama form yang akan divalidasi adalah form userForm. Nama ini harus sama dengan nama form yang anda berikan di dalam struts-config.xml. Sebagai contoh, pada struts-config saya seharusnya terdapat:


<form-beans>
        <form-bean name="userForm" type="com.myapp.form.User"/>
</form-beans>

============================================

property=”"

Merupakan nama field, harus sama dengan yang ada di Class model, misalnya:

private String = userid;

private String = password;

============================================

depends=”"

Menerangkan apa saja yang perlu divalidasi, misalnya saya menuliskan

depends=”required,minlength,mask” pada field userid, berarti aplikasi harus memeriksa apakah field userid diisi atau tidak, apakah userid yang dimasukan tidak melewati batas minimum karakternya dan apakah sesuai dengan format – berhubungan dengan regular expresion – yang ditentukan. Aturan” ini masih banyak lagi. Dapat diperiksa di file validator-rules.xml.

============================================

<msg name=”" key=”"/>

Pesan yang akan ditampilkan bila terjadi error. name akan mengarah pada aturan(depends) yang dipakai, dan key pesan yang mana yang akan tampilkan. Daftar pesan ini ada di ApplicationResource.properties. Contoh:

<msg name=”required” key=”error.nullfield“>, berarti jika field userid tidak diisi maka akan ditampilkan pesan error yang key-nya error.nullfield.

error.nullfield=The following field: {0} is a required field. Please provide a value for {0}.

============================================

<arg0 key=”"/>

Coba anda perhatikan pada pesan error -> error.nullfield terdapat {0}. {0} harus digantikan dengan sesuatu. Sengaja diberi tanda seperti itu agar pesan ini juga bisa dipakai field yang lain, tinggal mengganti {0} saja. Jadi untuk <arg0 key=”error.userlabel”> berarti tanda {0} akan digantikan dengan pesan error yang key-nya error.userlable.

error.userlabel=<b>User name</b>

============================================

<var>

Berguna untuk memberikan nilai untuk aturan”, misalnya minlength, maxlength, mask, dll. Contoh:


<var>
      <var-name>minlength</var-name>
      <var-value>5</var-value>
</var>

Berarti minlength untuk userid adalah 5 karakter, kurang dari itu dianggap terjadi kesalahan.

============================================

Anda juga dapat melakukan hal yang sama untuk field password. Yang terakhir adalah view-nya:


<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<html:html locale="true">
<head>
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<html:errors/>
<html:form action="/lookUp">
    Userid: <html:text property="userid"/>
    Passowrd: <html:password property="password"/>
    <html:submit value="Submit"/>
</html:form>

</body>
</html:html>

Setelah semuanya siap, tinggal di-build dan deploy, kemudian dijalankan. untuk source lengkapnya dapat di coba svn-nya –>http://struts-validator.googlecode.com/svn/trunk/

atau download di –> nyusul :mrgreen:

Djöllkè @ n3tg33ks.wordpress.com

16
Apr
08

PHP session storing Object

HttpSession on java allow me to store an object, then i try it on php and it can be done as well. Very simple as follow:

this listing show you the object registered in session


<?php

           $user = new User();
           $user = $userControl->getUser($userId,$password);

           # CREATE USE SESSION
            session_start();
            session_register("currentUser");
            $_SESSION['currentUser'] = $user;
            # GO TO THE OTHER PAGE
            header("Location: View/index.php");

?>

As you know that variable $user is an object, right? and it has been stored in session. Then in index.php writen as follow:


<?php
function __autoload( $u="user" ) {
include("../Model/".$u.".php");
}

$user = new User();
$user = $_SESSION['currentUser'];
echo $user->getUserName();

?>

Don’t forget to write session_start() above them. Function __autoload( <parameter> ) will automaticaly call the function which hasn’t been defined yet. By calling this function the scripting engine is given a last chance to load the class before PHP fails with an error.

That’s all for this time.

ThanksAlot – Djöllkè

15
Apr
08

Point Of Sale application using JPA, not fix yet

I wrote a Point Of Sale application implementing JPA technology inside it. But it’s not fix yet, i’ll try to finish it anytime i’m free. So i have been upload this application project folder into google code, here it is the svn url, check it out:

http://point-of-sale.googlecode.com/svn/trunk/

i hope you can help me to finish it, or maybe give some advice of effective ways to writing java code.

ThanksAlot – djöllkè

19
Mar
08

Pe soe le (Sial)

Tadi pagi (19032008) jam sepuluh saya datang dengan santai en masuk kelas Sistem Pakar mas Yudianto Sujana dosen UPN. Dah yakin nih ceritanya, presentasi project pasti berjalan dengan muluuuussss. Soalnya dah disiapkan dengan matang. Ternyata eh ternyata g sesuai harapan. Masalah pertama, flashdisk saya ternyata ada boot.exe kampret, tapi untung ada temen yang bawa laptop yang mantep, tertolong deh :D jadi bisa dipindah di flashdisk lain lain. Masalah pertama selesai, tapi pas mau presentasi, eh malah aplikasinya g konek sama databasenya. Gak tau kenapa, padahal seharusnya bisa soalnya skarang saya coba dikomputer kantor fine” aja tuh. Langsung kebaca lagi. Huh :evil: dasar .

Bukan cuma dari aplikasi saya yang gak bisa konek, netbean sendiri yang versi 5.5 ajah g bisa konek ke databasenya. Padahal saya udah cek bener” user namenya, passwordnya, port, udah ada connectornya. G tau tuh, gak jelas mysqlnya.

Trus dosennya bilang presentasi programmnya minggu depan aja, biar diperbaiki dulu. Yah mudah”an ajah gak dikurangin nilainya cuma lantaran gak mau konek ke database.

:evil:

26
Feb
08

Gabungin JSF & EJB pake netbeans tinggal klak klik jadi :)

Sekarang saya lagi pelajarin framework” JEE, makanya supaya gak lupa saya tulis deh. Berhubung semalam saya lembur sampe stengah tiga buat belajar EJB dan JSF (gimana ga nyampe jam stengah tiga wong saya mulainya jam stengah 1 :mrgreen: ), jadi harus saya tulis dulu biar mantep :lol:

Langkah 1:

bikin dulu session beannya. Nih interfacenya(MahasiswaRemote.java), nanti tinggal di implements


package mahasiswa.bean;

import java.util.List;
import javax.ejb.Remote;
import mahasiswa.model.Mahasiswa;

/**
 * This is the business interface for Mahasiswa enterprise bean.
 */
@Remote
public interface MahasiswaRemote {
    List listMahasiswa();

}

dan yang ini implementasinya(MahasiswaBean.java)


/*
 * MahasiswaBean.java
 *
 * Created on February 25, 2008, 12:07 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package mahasiswa.bean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import mahasiswa.model.Mahasiswa;

/**
 *
 * @author JollkY
 */
@Stateless
public class MahasiswaBean implements MahasiswaRemote {
    Connection con = null;
    PreparedStatement state = null;
    ResultSet rs = null;
    /** Creates a new instance of MahasiswaBean */
    public MahasiswaBean() {
    }

    public void setConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public List listMahasiswa() {
        this.setConnection();
        String query = "SELECT Id,nim,nama,alamat,fakultas FROM mahasiswa";
        List listMhs = new ArrayList();
        try {
            this.state = con.prepareStatement(query);
            this.rs = this.state.executeQuery();
            while(this.rs.next()) {
                Mahasiswa mhs = new Mahasiswa();
                mhs.setId(this.rs.getLong(1));
                mhs.setNim(this.rs.getString(2));
                mhs.setNama(this.rs.getString(3));
                mhs.setAlamat(this.rs.getString(4));
                mhs.setFakultas(this.rs.getString(5));
                listMhs.add(mhs);
            }
        } catch(Exception ex) {
            ex.printStackTrace();
        } finally {
            if(this.con!=null) {
                try {
                    this.con.close();
                    if(this.state!=null) {
                        this.state.close();
                    }

                    if(this.rs!=null) {
                        this.rs.close();
                    }
                } catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
        return listMhs;
    }

}

sebenarnya untuk membuat method bean nya kita tinggal klik kanan pada file bean (klo saya berarti file Mahasiswabean.java), kemudian pilih menu EJB methods -> Add business method… nanti akan ditampilkan window baru, jadi disana kita tinggal tentukan sendiri. Setelah selesai maka pada MahasiswaBean.java akan ditambahkan method tersebut dan juga pada MahasiswaRemote.java, otomatis.Langkah 2:

Saya buat kelas, sejenis action class pada struts. Kelas ini nantinya yang akan berhubungan dengan interface sesuai dengan konfigurasi pada faces-config.xml-nya JSF.


package mahasiswa.action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import mahasiswa.bean.MahasiswaBean;
import mahasiswa.bean.MahasiswaRemote;
import mahasiswa.model.Mahasiswa;
/*
 * MahasiswaListAction.java
 *
 * Created on February 25, 2008, 12:31 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author JollkY
 */
public class MahasiswaListAction {
    /** Creates a new instance of MahasiswaListAction */
    private List listMhs;
    public MahasiswaListAction() {
    }

    private MahasiswaRemote lookupMahasiswaBean() {
        try {
            Context c = new InitialContext();
            return (MahasiswaRemote) c.lookup("java:comp/env/ejb/MahasiswaBean");
            //return (MahasiswaRemote) c.lookup(MahasiswaRemote.class.getName());
        }
        catch(NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }

    public String listMahasiswa() {
        this.setListMhs(this.lookupMahasiswaBean().listMahasiswa());
        System.out.println(getListMhs().get(0).getNama());
        return "sukses";
    }

    public List getListMhs() {
        return listMhs;
    }

    public void setListMhs(List listMhs) {
        this.listMhs = listMhs;
    }

}

untuk method lookupMahasiswaBean() cukup klik kanan pada class MahasiswaListAction kemudian pilih Enterprise Resources -> Call Enterpirse Bean. Akan muncul window baru utuk memilih bean mana yang akan dipakai.Sangat mudah, jadi tidak perlu di hapal” :twisted:

Langkah 3:

Saya siapkan file konfigurasi jsf (faces-config.xml), sbb


<!-- =========== FULL CONFIGURATION FILE ================================== -->

            /pages/index.jsp

                sukses
                /pages/mahasiswa_list.jsp

            mahasiswaList
            mahasiswa.action.MahasiswaListAction
            session

Langkah 4:

Terakhir tinggal buatin halaman” jsp nya. File pertama index.jsp


        <title>JSP Page</title>

Button yang dibuat diatas akan memanggil method listMahasiswa yang ada pada bean/class yang diberi nama(pada faces-config.xml) mahasiswaList. Lihat pada file konfigurasi. Method listMahasiswa tersebut akan mengembalikan string “sukses” dimana menurut navigation rule yang ada di faces-config.xml, sbb

<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>sukses</from-outcome>
<to-view-id>/pages/mahasiswa_list.jsp</to-view-id>
</navigation-case>
</navigation-rule>

request/input yang berasal dari halaman /page/index.jsp akan diteruskan ke halaman /pages/mahasiswa_list.jsp, sbb


   
       
        <title>JSP Page</title>
   
   
       
            <h3>Daftar Mahasiswa</h3>

            <table>
                <tr>
                    <td>NIM</td>
                    <td>Nama</td>
                    <td>Alamat</td>
                    <td>Fakultas</td>
                </tr>
               
                    <tr>
                        <td>${mhs.nim}</td>
                        <td></td>
                        <td></td>
                        <td></td>
                    </tr>
               
            </table>

       
    

Jangan lupa untuk memasukkan library jsf pada project war dan library mysql connector pada project ejb.

Sekian… chaoo :twisted:

22
Feb
08

Error handling, struts 1.x

Dalam teknik pemrogramman MVC dengan menerapkan framework struts begitu banyak kemudahan yang diberikan. Salah satunya adalah penanganan error dan pemberian pesan error itu sendiri. Misalnya, perhatikan form html dibawah:


        <title>Error Handling Test</title>

            <table>
                <tr>
                    <td>Username: </td>
                    <td></td>
                </tr>
                <tr>
                    <td>

                    </td>
                </tr>
            </table>

tag <html:errors/> merupakan tag dimana pesan error akan muncul. Format tampilan errornya sama sperti kita menggunakan tag <ol><li></li></ol> pada tag html biasa.
Form di atas merupakan form dimana saya diminta memasukkan username aja untuk coba”. Kemudian saya buat setter/getternya, sbb:


package com.myapp.beans;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 *
 * @author programer05
 */
public class Beans extends ActionForm {
    private String username;

    public Beans() {}

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public ActionErrors validate(ActionMapping mapping,
            HttpServletRequest request) {
        String name = this.getUsername();
        ActionErrors errors = new ActionErrors();
        if(name.length()<1 || name==null) {
            errors.add("username", new ActionMessage("errors.username"));
        }
        return errors;
    }

}

potongan kode ini:


public ActionErrors validate(ActionMapping mapping,

            HttpServletRequest request) {

        String name = this.getUsername();

        ActionErrors errors = new ActionErrors();

        if(name.length()<1 || name==null) {

            errors.add("username", new ActionMessage("errors.username"));

        }

        return errors;

    }

merupakan method yang akan melakukan validasi terhadap input dari user. Tipe kembaliannya berupa objek ActionErrors. Jadi, jika ada tambahan pesan error yang lain kita tinggal menggunakan method add(). Nanti untuk menampilkan kita tidak perlu repot, karena aplikasi akan mengatur tampilannya seperti ini:

  • Pesan error 1
  • Pesan error 2
  • dst…

Kemudian untuk kode [...] new ActionMessage(“errors.username”) [...], string yg ada di dalamnya merupakan keyword yg ada pada file properties dari struts, sbb:


errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
welcome.title=Struts Application
welcome.heading=Struts Applications in Netbeans!
welcome.message=It's easy to create Struts applications with NetBeans.
errors.username=<h2>Invalid username</b>

tinggal dicari saja yang mana keywordnya :twisted: Setelah itu, qta edit file configurasi struts(struts-config.xml) yang akan mengatur bagaimana navigasi aplikasi dan bgm jika terjadi kesalahan. Berikut potongan listing struts-config.xml:


[...]

    <form>
        <form name="formBeans" />
    </form>

[...]

saya asumsikan anda sudah cukup paham mengenai isi file struts-config.xml ini. Bagian penting dari error handling yang saya maksud adalah pada bagian validate=”true”, yang memberitahukan kepada aplikasi bahwa harus melakukan validasi terlebih dahulu terhadap input user. Kemudian input=”/main.jsp”, yang memberitahukan bahwa input yang perlu divalidasi berasal dari halaman /main.jsp, sehingga aplikasi juga akan tahu jika memang ada kesalahan, kepada user akan dikembalikan halaman /main.jsp sekaligus dengan pesan error-nya. Action dari path /action terdapat pada kelas com.myapp.actions.Actions, berikut isi filenya:


package com.myapp.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author programer05
 */
public class Actions extends Action {

    public Actions(){}

    public ActionForward execute(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) {

        return (mapping.findForward("success"));
    }

}

Kelas action di atas hanya berisi return value saja, jadi jika memang tidak ada kesalahan langsung diforward kehalaman yang lain. Cukup mudah saya rasa. Paling tidak coding lebih teratur :mrgreen: Later :twisted:




 

November 2009
S S M T W T F
« Jun    
 123456
78910111213
14151617181920
21222324252627
282930  

c

Top Clicks

  • None

Blog Stats

  • 7,737 hits