04.21.09

EHCACHE

Posted in Java at 2:08 pm by Adison Pimpakan

หลังจากไม่ใด้เขียนอะไรซะนาน นึกขึ้นได้มาแวะ blog เรามั่งดีกว่า

ว่าแต่จะเขียนเรื่องอะไรดีละ….

นึกออกแล้วเอา EHCACHE นี่แหละล่าสุดที่อ่านมา

เนื่องจากว่าต้องสร้าง framework ใหม่ให้ office แล้วเขาเปลี่ยน weblogic8.1 เป็น weblogic 10 แล้วไงละ?

lib weblogic portal (weblogic8) มันก็ใช้ไม่ใด้อะจิ!!! อ้าวซวยแล้ว #%$%^$$^

งั้นเปลี่ยนใหม่ก้ได้ ก็เลยมาตามหาๆๆๆๆๆ และแล้วบุพเพสันนิวาสก็พาเรามาเจอกับ EHCACHE แล่วมัน work ป่าว?

ก่อนอื่นมาดูเรื่อง performance ซะก่อนเพราะถ้ารับ load ประมาณ 200000 tx/hr. ไม่ใหวมันก็ตายยย และแล้วก็ไปเจอ ehcache performance อ่านดูแล้วมันก็น่าจะไหวนะ

จากนั้นก็มาดู architecture มันก่อน เอาคร่าวๆพอ อย่างน้อยๆให้รูแภาพรวม ว่าเราอยู่ตรงใหนของโลก 

จากนั้นมาลอง implement กันว่ายากป่าว เพราะถ้ายากก้ไม่เอา (simple is the best)

ดูๆแล้วไม่ยากแฮะ น่าจะหมูในอวย มาดูตัวอย่าง code กัน ง่ายสุดๆ ถ้าสงสัยอะไรก้ไปที่ official site

CacheManager cacheMgr = new CacheManager();
Cache memoryOnlyCache = new Cache(cacheName, 100000, false, false, 5000, 1000);
cacheMgr.addCache(memoryOnlyCache);

Element usrChk = new Element(“key”, “value”);
memoryOnlyCache.put(usrChk);
usrChk = memoryOnlyCache.get(“key”);

cacheMgr.shutdown();

จบแล้วครับ สงสัยอะไรหลังไมค์ได้คับ

05.01.08

JOSSO

Posted in Java at 6:34 am by Adison Pimpakan

วันนี้ว่างๆระหว่างรอเพื่อนโทรมาชวนไปดูหนังเลยหาไรทำซะหน่อย ไม่รู้จะทำไรดี นี่เลยละกัน JOSSO บุ๊กมาร์คไว้นานแล้วไม่มีโอกาสได้เข้ามาอ่านซะที

จริงๆแล้วผมสนใจเรื่องนี้มานานแล้วครับแต่ไม่ค่อยได้มีเวลามาจับซะทีมัวแต่ทำอย่างอื่นอยู่ ทีแรกบ้าพลังจะพยายาม implement เอง แต่เลิกแล้วใช้ของฝรั่งดีกว่า ดีกว่าเยอะ(คิดว่านะ) ก็เลยมาตกลงปลงใจกับอันนี้นี่แหละ JOSSO (http://www.josso.org/)

หลังจากนั่งอ่านไปซักพัก เอ… เหมือนจะดีเลยแฮะ น่าสนใจสุดๆ tomcat/weblogic/jboss/etc. มัน deploy ได้หมดเลยอะแจ๋วจริงๆ เอาละมาเริ่ม workshop กันซะที

JOSSO Architecture

จากรูปนะครับเอาเป็นว่าผมไม่เข้าวิชาการมากละกันเอาง่ายๆ กันเลย ตัว SSO นี่แบ่งออกเป็น 2 ส่วนหลักๆก็คือ

1. Gateway คือ ตัวที่ทำหน้าที่ user authentication ที่จะเข้ามา พูดง่ายๆก็คือหน้า login นั่นแหละ

2. Agent คือ web ทีจะเข้ามาใช้งานระบบ user authentication ร่วมกับ web อื่นๆ ใน gateway ตามข้อ 1

เห็นมะมีแค่ 2 ส่วนเองง่ายโคตรๆ จริงๆแล้ว installation manual ใน web (http://www.josso.org/confluence/display/JOSSO1/Tomcat+6.0) ก้มีพอสมควรแต่ต้องอ่านหน่อย สำหรับท่านที่จะอ่านข้ามๆมั่วๆไป มีโอกาสไม่ success นะครับ เอาละ setup ตามผมเลยก้ได้ step by step ลืมบอกไปผมใช้ Tomcat6.0 นะครับ jdk6 ผมสมุติว่าท่านทำ jsp/setup tomcat เป็นแล้วนะครับ

Setup Gateway

1. ที่ %CATALINA_HOME%/bin สร้าง file ดังต่อไปนี้

file:setenv.bat
set CATALINA_HOME=C:/apache-tomcat-6.0.16
set JAVA_OPTS=-Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.conf

file:jsso-config.xml
<?xml version=”1.0″ encoding=”ISO-8859-1″ ?><configuration><hierarchicalXml fileName=”josso-gateway-config.xml”/></configuration>

2. Copy file josso-gateway-config.xml จาก josso\core\src\resources ที่ unzip ออกมา เอามาวางไว้ที่ %CATALINA_HOME%/bin

3. ที่ %CATALINA_HOME%/conf/ สร้าง file jaas.conf โดยมี file content ดังนี้
josso {
org.josso.tc60.agent.jaas.SSOGatewayLoginModule required debug=true;
};

4. แก้ไข file server.xml ของ tomcat โดยให้เพิ่ม
<Realm className=”org.josso.tc60.agent.jaas.CatalinaJAASRealm”
appName=”josso”
userClassNames=”org.josso.gateway.identity.service.BaseUserImpl”
roleClassNames=”org.josso.gateway.identity.service.BaseRoleImpl”
debug=”1″ />

<Valve className=”org.josso.tc60.agent.SSOAgentValve” debug=”1″/>
ไว้ที่ด้านล่างของ

<!–Realm className=”org.apache.catalina.realm.UserDatabaseRealm”
resourceName=”UserDatabase”/–>

5. จากนั้น copy file josso-credentials.xml, josso-users.xml จาก josso\core\src\resources มาไว้ที่ %CATALINA_HOME%/lib

6. จากนั้นเข้าไป folder ที่ unzip josso ออกมาแล้วพิมพ์คำสั่งต่อไปนี้ตามลำดับ

set JAVA_HOME=c:\jdk1.6.0
set CATALINA_HOME=c:\apache-tomcat-6.0.14
build.bat war
build.bat install-tomcat60
build.bat deploy-tomcat60

7. จากนั้นให้ลอง start tomcat จะสังเกตว่าไม่มี error print out ออกมาที่ console

Setup Agent อันนี้ผมแนะนำให้ setup tomcat อีกตัวขึ้นมาใหม่เลยนะครับ อย่างเช่นเครื่องผมมี tomcat6.0 อีกตัวนึง run ที่ 9090

1. Copy file josso-agent-config.xml จาก josso\core\src\resources ที่ unzip ออกมา เอามาวางไว้ที่ %CATALINA_HOME%/bin

2. ที่ %CATALINA_HOME%/bin สร้าง file ดังต่อไปนี้
file:jsso-config.xml
<?xml version=”1.0″ encoding=”ISO-8859-1″ ?><configuration><hierarchicalXml fileName=”josso-agent-config.xml”/></configuration>

3. จากนั้นสร้าง web module ขึ้นมาแล้วมี structure ดังต่อไปนี้
SimpleSSO
-index.jsp
-login-redirect.jsp
+protected
-target.html
+WEB-INF
-web.xm
l

โดย detail แต่ละ file เป็นดังนี้
//index.jsp
<%@ page language=”java” contentType=”text/html; charset=ISO-8859-1″
pageEncoding=”ISO-8859-1″%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=ISO-8859-1″>
<title>Simple SSO</title>
</head>
<body>
This is a public resource.<br/>
<a href=”protected/target.html”>Protect Resource</a>
</body>
</html>

//login-redirect.jsp
<%@page contentType=”text/html; charset=iso-8859-1″ language=”java” session=”true” %>
<%
response.sendRedirect(request.getContextPath() + “/josso_login/”);
%>

//target.html
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Insert title here</title>
</head>
<body>
Hello world SSO!!!
</body>
</html>

//web.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:web=”http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
id=”WebApp_ID” version=”2.5″>
<display-name>SimpleSSO</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<security-constraint>
<web-resource-collection>
<!– We’re going to protect this resource and make it available only to users in “role1″. –>
<web-resource-name>public-resources</web-resource-name>
<url-pattern>/protected/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login-redirect.jsp</form-login-page>
<form-error-page>/login-redirect.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role >
<description>Role 1</description>
<role-name>role1</role-name>
</security-role>
</web-app>

4. จากนั้น pack & deploy เลยครับ แล้วลองเข้าไปที่ http://localhost:9090/SimpleSSO/protected/target.html จะเป็นว่าระบบจะ redirect ไปที่หน้า SingOn จากนั้นให้เราไส่ user1/user1pwd แล้วระบบจะ login แล้วทำการ redirect กลับมาที่หน้า target.html

เสร็จแล้วครับ เห็นมะง่ายนิดเดียว ลองดูนะครับผมว่าน่าจะเป็นประโยชน์ต่อหลายๆคน เง้อหิวข้าวแล้วเพื่อยังไม่โทรมาอีก อะไรกันเนี่ยยยยยยยยยยยยยยยยยยยยยยย

05.17.07

Grails

Posted in Java at 3:36 pm by Adison Pimpakan

Grails(http://grails.codehaus.org)
มาแว้ววววววว ในที่สุดก็ว่างได้มาเล่าซะที เนื่องจากพักนี้ฝนตกบ่อยๆ ไอ้ตกบ่อยมันก็ดีอยู่หรอกนะแต่ห้องผมน้ำมันรั่วนี้จินอนๆอยู่เซ็งเลย
เอาละเข้าเรื่องกันซะที พอดีว่าได้มีโอกาสลอง Grails ดูอะคับเลยอยากจะเอามาเล่าสู่กันฟังเผื่อจะมีคนนำไปใช้งานจริง(ก่อนผม) อิอิเริ่มเลยละกันนะ

Grails คือ ?
ผมมองว่า Grails คือ Tools ที่ช่วยในการ Generate Java Web Application โดย Web Application ที่ Generate มานี้จะครอบคลุม Function CRUD (Create,
Read, Update, Delete) น่าสนใจไช่มั้ยละอย่างน้อยก็นำมาทำส่วน admin ได้แหละ

ได้แค่ CRUD เหรอ?
ป่าวคับนั่นเป็นแค่ default การ Generate ถ้าต้องการ Function อย่างอื่นนอกเหนือจากนี้ก็สามารถเขียนเองเพิ่มเติมได้ตามใจชอบเลย

แล้วเขียนไงอะ?
ฮ่าๆๆๆ อย่าพึ่งคึกเนื่องจาก Grails นี้ใช้ภาษา Groovy ในการพัฒนา developer จึงจำเป็นต้องมีความรู้ใน Groovy พอสมควร แรกๆผมคิดจะดำน้ำไป แต่ดำๆไปซักพัก $%#@!#*?$ นี่มันเขียนบ้าไรวะ ก็เลยต้องกลับไปอ่าน Groovy มาก่อน(อิอิ) อย่างน้อยก็ต้องรู้ Syntax มันแหละ (promotion พิเศษสำหรับคอ java ไปที่นี่เลย http://groovy.codehaus.org/Differences+from+Java)

แล้ว Web Application ที่ Generate ได้มัน deploy ได้ทุก server ป่าว?
อันนี้ไม่ confirm น้าาาา แต่จะบอกว่าตัว Framework ที่ Grails มัน Generate มันจะเป็น Spring + Hibernate3 แหละอิอิ โดยส่วนตัวผมชอบคู่หูคู่ฮานี้อยู่แล้วเลยยิ่งช๊อบบบ ชอบ สำหรับบางคนอาจจะมองว่านี่เป็นข้อจำกัดก็ได้นะคับ เพราะถ้าองค์กรหรือ project ที่กำลังพัฒนาไม่ไช่ Spring + Hibernate ถ้าจะเอาตัวนี้ไป Merge ก็ต้องทำใจ

งั้น Project ผมไม่ใช้ Spring + Hibernate ก็หมดสิทธจิ?
ก็ไม่ซะทีเดียวหรอกคับ เนื่องจาก Framework ที่ Grails มัน Generate มันมี SiteMesh ด้วยนะ หวังว่าคงเอาไปช่วยไรใด้บ้าง(อิอิ)

แล้ว Tutorial เยอะมั้ย
มีข่าวดีกับข่าวร้ายเอาไรก่อน เอาข่าวดีก่อนละกันนะ Tutorial มีเยอะแยะเลยส่วนมาก Step-By-Step ด้วยนะเยี่ยมมั้ย ส่วนข่าวร้าย Tutorial ส่วนมากไม่สามารถ run ได้กับ
version 0.5.5 (lastest version) อิอิต้อง modify นิดๆหน่อยๆ(อิอิ สู้เข้านะคับ)

ขอดูตัวอย่างหน่อยจิ
ทีแรกผมว่าจะ demo ให้ดูแต่ผมว่านี่ http://grails.org/Quick+Start ก็ง่ายแล้วแหละ

โชคดีนะคับ อิอิ

05.01.07

Spring Web Flow

Posted in Java at 2:48 pm by Adison Pimpakan

Spring Web Flow (http://www.springframework.org/webflow)

หลังจากที่สงสัยมานานว่า Spring MVC กับ Spring Web Flow มันต่างกันไง ก็เลยลองมาแกะๆดูซะหน่อยว่า Spring Web Flow มันเป็นไง หลังจากที่มาแงะๆดู ก็พอจะรู้คร่าวๆว่าไอ้ Spring Web Flow นี่มันก็ใช้ Spring MVC นั่นแหละทั้ง View Technology, Bean Component(loC) ต่างๆ แต่ว่าไอ้เจ้า Spring Web Flow นี่มันจะมี Flow Loader เข้ามาช่วย(หนึ่งใน bean ที่จำเป็นต้อง load ของ Spring Container) ซึ่งตัว Flow Loader นี่เองจะเป็นตัว ควบคุมแล้วจัดการ Flow ทั้งหมดในระบบ(สามารถมีได้มากกว่า 1 Flow ในระบบ) ซึ่งตัว Flow Loader นี่จะไป load flow descriptor (xml file) ซึ่ง Flow แต่ละ flow ก็จะมี id เป้นตัวระบุว่า flow นี้ชื่อไร

จากที่ผมลองๆ(ทั้งทำตามและนั่งดูเฉยๆ อิอิ) ไม่ค่อยประทับไจเท่าไหร่ ผมว่ามันคล้ายกับ JSF มากๆ บางคนอาจจะแย้งผมว่าคล้ายได้ไงวะ JSF มันเป็นเรื่องของ Component Model นี่หว่า แต่ Spring Web Flow มันเป้นเรื่องของการทำ web ซึ่งกว้างกว่า web component อีก หุหุ จริงๆแล้วเวลาเราทำ web ผมมองว่ามันก็คือการจัดการ กับ event กับ behavior ของ UI Component นั่นแหละ (งานส่วนใหญ่มีแค่นั้น)

กลับมาเข้าที่ Spring Web Flow กันต่อ(นอกเรื่องไปนานแล้ว อิอิ) เอาง่ายๆตัวที่จะต้องสนใจมี 3 ตัวหลักๆนั่นก้คือ
bean = ก็ bean ต่างๆนั่นแหละอยาก load อะไรก็ load แต่เค้าทำมาเพื่อ load พวก Web Action & Form Validator แต่จะเอาไป load พวก Transaction Control, DAO, …. ก็ตามสดวกคับ
view-state = ส่วนนี้เอาไว้แสดงผลนะ โดยจะ map กับ view ต่างๆ ขึ้นอยู่กับ View Thechnology ที่ไช้ จะใช้ JSF หรือ Struts Tiles ก็ยังไหว อิอิ แต่จะไช้ Plain JSP ก็ได้ โดยเจ้า view-state นี่แหละที่จะมี transition เป็นตัวบอกว่าเกิดไรให้ทำไร (คุ้นๆมะคล้ายกับ navigation-case ของ JSF ป่าวอิอิ) อันนี้แหละต่างจาก Spring MVC ซัดๆ(เฮ้ยเผลอหลุดภาษาบ้านเกิดแล้วตู) ซึ่งเจ้าตัว Spring MVC จะไม่มีตัว view navigation control (ซึ่งก็คือ forward ใน struts, navigation-case ของ jsf และ transition ของ spring web flow) แต่ถ้าเราจะมองว่า Spring MVC มีเฉพาะ global view navigation control ก็ไม่ผิดนะเพราะมันมีแค่ global จริงๆ
action-state = ไม่ต้องบอกก็รู้เนอะ เอาไว้ทำงานต่างๆตาม business process แล้วมันก็มี transition เป็นตัวบอกเหมือนกันกับ view-state นั่นแหละ
*เกือบลืมเจ้านี่มี conversation scope ด้วยนะ ว้าวไม่รู้ใครเลียนแบบใคร (Seam VS Spring Web Flow) แต่ชั่งเถอะจำข้อดีเขามาไช้ก็เยี่ยมแล้ว

บทความนี่ผมเขียนขึ้นจากความเข้าใจผมนะคับ อาจจะมีความคิดเห็นแทรกไปบ้างก็ขออภัยนะคับ มีไรก็ comment ได้นะคับ ให้กำลังใจก็ได้

04.19.07

Ajax4Jsf

Posted in Java at 4:53 pm by Adison Pimpakan

หลังจากแอบไปเล่นน้ำสงกรานต์มา กลับมาก็เลยเอาซะหน่อยอ่านจบแล้วแต่ยังมะได้เขียนซะทีวันนี้แหละ เริ่มละนะ

มันคือๆไร?
มันก็คือ framework ที่จะเข้ามาช่วยให้การนำ ajax เข้ามาใช้งานกับ jsf ของเราง่ายขึ้นไงละ

Ajax คือไร ?
โอ้พระเจ้า Ajax = Asynchronous Javascript And Xml ส่วน detail ไปหาเอาเองนะอิอิ

แล้ว JSF ละ ?
JSF = Java Server Face ถ้าไม่มีพื้นฐานด้าน jsf มาก่อน ผมแนะนำให้ไปอ่านมาก่อนครับ เดี๋ยวเจอปัญหาจะแก้ไม่ตก อิอิ

ยากมั้ย ?
การเขียนมะยากคับแต่ debug ฝั่ง client (ajax) ค่อนข้างลำบากถ้าไม่มี Tools ดีๆมาช่วย ผมเองใช้ MyEclipse AJAX Tools / Web 2.0 Tools มาช่วยคับเบาแรงไปเยอะ อิอิ

ไม่เห็นภาพ ขอตัวอย่างง่ายๆหน่อยจิ ?
ตัวอย่างนี้ผมจะไม่ขออธิบายในส่วน basic web application นะคับ ผมจะเอาเฉพาะส่วนที่สำคัญๆเท่านั้น  รูปข้างล่างเป็นรูป architecture ของ Ajax4Jsf คับ

ajax4jsf-architecture

//web deployment descriptor ก็ load jsf engine กับ ajax4jsf engine ซะ
//web.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app id=”WebApp_ID”>
<display-name>SimpleAjax4Jsf</display-name>
<filter>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>https://ajax4jsf.dev.java.net/ajax</taglib-uri>
<taglib-location>tld/a4j.tld</taglib-location>
</taglib>
</web-app>

//อันนี้เป็น config file ของ jsf
//faces-config.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE faces-config PUBLIC
“-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN”
“http://java.sun.com/dtd/web-facesconfig_1_1.dtd”>
<faces-config>
<managed-bean>
<managed-bean-name>searchBean</managed-bean-name>
<managed-bean-class>psn.gsoft.jsf.simpleajax4jsf.bean.SearchBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>

//ส่วนของ View คับ
//search.jsp
<%@ page language=”java” contentType=”text/html; charset=UTF-8″ pageEncoding=”UTF-8″%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%@ taglib uri=”https://ajax4jsf.dev.java.net/ajax” prefix=”a4j”%>
<%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %>
<%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %>
<html>
<f:view>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Search</title>
</head>
<body>
<h:form>
<h:panelGrid columns=”1″>
<a4j:region>
<h:outputLabel value=”Keyword”></h:outputLabel>
<h:inputText id=”name” value=”#{searchBean.keyword}” tabindex=”0″>
<a4j:support event=”onkeyup” actionListener=”#{searchBean.find}” reRender=”searchResults”/>
</h:inputText>
</a4j:region>
</h:panelGrid>
<h:commandButton actionListener=”#{searchBean.find}”>Search</h:commandButton>
<a4j:status>
<f:facet name=”start”>
<h:graphicImage value=”/images/spinner.gif”/>
</f:facet>
</a4j:status>
</h:form>

<a4j:outputPanel id=”searchResults”>
<div class=”section”>
<h:dataTable value=”#{searchBean.matchs}” var=”match” rendered=”true”>
<h:column>
<f:facet name=”header”>Name</f:facet>
<h:outputText value=”#{match}”/>
</h:column>
</h:dataTable>
</div>
</a4j:outputPanel>

</body>
</f:view>
</html>

//Bean class
//SearchBean.java
package psn.gsoft.jsf.simpleajax4jsf.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;

public class SearchBean {
private String[] names;
private Object[] matchs;
private String keyword;

public SearchBean(){
names = new String[]{“Adison”, “Duke”, “Didi”, “John”, “Subianto”};
}

public String getKeyword(){
return keyword;
}

public void setKeyword(String keyword){
this.keyword = keyword;
}

public Object[] getMatchs(){
return matchs;
}

public String[] getNames(){
return names;
}

public void find(ActionEvent ae){
find();
}

public void find(){
List<String> values = new ArrayList<String>();

for(String name:names){
if(name.indexOf(keyword)>-1){
values.add(name);
}
}

matchs = values.toArray();
}
}

เสร็จแล้วคับ จากนั้นก็ pack แล้วก็ deploy เลยคับ comment กันบ้างนะคับจะได้มีกำลังใจเขียนต่อไป

Next page