« June 2007 | صÙ?ØÙ‡ اصلی | August 2007 »
JSFJuly 29, 2007 05:28 PM
JavaServer Faces را مي توان تركيبي از دو تكنولوژي Swing و Struts دانست.
JSF يك Component Framework سمت سرور يا Server_Side براي ايجاد واسط كاربري در Web Application هاي جاوا است. توسط JSF امكان استÙ?اده از Component هاي مرسوم User Interface مانند ButtonØŒ Textbox Ùˆ غيره Ù?راهم مي شوند. مي توان رويكرد مبتني بر component اي كه در طراØÙŠ Web Application ها در JSF مشاهده مي شود را با ASP.net مقايسه نمود. همچنين جاوا به همراه تكنولوژي JSFØŒ امكان RAD: Rapid Application Development را Ù?راهم نموده است. JSF بر پايه مدل MVC است كه قبلا ØªÙˆØ¶ÙŠØ Ø¯Ø§Ø¯Ù‡ شد. لذا Well Designed است Ùˆ معماري آن مثل بقيه Application هايي است كه JSP Ùˆ Servlet را به كار مي گيرند.
JSF امكان ايجاد Ùˆ استÙ?اده از دو نوع Component را به كاربر مي دهد:
1- Standard UI Components:
JSF شامل مجموعه component هاي پايه مانند Text box, Check box, List box, Panel, Label, Radio Button و غيره است. مانند موارد زير:
UIForm : Ù?رمي است كه بعنوان Container ساير component ها در نظر گرÙ?ته مي شود.
UICommand: مشخص كننده Component هايي چون Button, Hyperlink, menuItem است.
UIinput : معرÙ? component هاي ورودي مثل Text Input Filed است.
2- Custom UI Components:
معمولا نياز است كه Ø·Ø±Ø§ØØ§Ù† Component ها را Customize نمايند. JSF اين امكان را Ù?راهم مي نمايد. به علاوه JSF از Third Party Component ها نيز ØÙ…ايت مي كند. منظور از Third Party Components آن Custom Component هايي است كه توسط Ù?روشندگان ديگر توليد شده است. Ú†Ù‡ آنها كه تجاري Ùˆ Ú†Ù‡ آنها كه Open Source اند، همه آنها در ايجاد واسط كاربري Web Application قابل استÙ?اده اند.
براي ايجاد Component لازم است كه يا UIComponent كه يك interface است را implement نماييد، يا اينكه كلاس UIComponentBase را Extend كنيد.
Ù†ØÙˆÙ‡ عملكرد تكنولوژي JSF را در شكل زير مشاهده مي كنيد:
همانگونه كه مي بينيد، واسط كاربري ساخته شده با JSF كه در شكل با myUI نمايش داده شده است روي سرور پردازش مي شود Ùˆ نتيجه آن به Ù?رمت HTML براي client ارسال مي شود. Ù?ايل jsp به نام myform.jsp در واقع يك Ù?ايل JSF است Ùˆ شامل تگ هاي مربوط به JavaServer Faces مي باشد. در اين Ù?ايل با استÙ?اده از Custom Tag هاي تعريÙ? شده توسط تكنولوژي JSP اجزا Ùˆ component هاي واسط كاربري مشخص مي شوند.
يك JSF Application نوعا شامل موارد زير است:
1- مجموعه اي از صÙ?ØØ§Øª JSP. اگر Ú†Ù‡ كه شما Ù…ØØ¯ÙˆØ¯ به استÙ?اده از JSP بعنوان تكنولوژي presentation خود نيستيد.
2- تعدادي JavaBeans Component پشت صØÙ†Ù‡ كه property ها Ùˆ متدهاي UI Component هاي روي صÙ?ØÙ‡ را مشخص مي كنند.
3- يك Ù?ايل Application Configuration Resource كه قواعد Navigation صÙ?ØØ§Øª ØŒ همچنين تنظيمات Ùˆ مشخصات Beans Ùˆ ساير Object هاي تعريÙ? شده توسط Ø·Ø±Ø§Ø Ø¯Ø± آن ثبت مي شود.
4- Deployment Descriptor يا همان Ù?ايل web.xml
5- در صورت وجود،مجموعه Object هاي ايجاد شده توسط Ø·Ø±Ø§Ø Ø³ÙŠØ³ØªÙ…
6- مجموعه اي از Custom Tag ها جهت نمايش Custom Objects روي صÙ?ØÙ‡.
در ادامه بيشتر به اين موضوع پرداخته خواهد شد.
JSF يك Component Framework سمت سرور يا Server_Side براي ايجاد واسط كاربري در Web Application هاي جاوا است. توسط JSF امكان استÙ?اده از Component هاي مرسوم User Interface مانند ButtonØŒ Textbox Ùˆ غيره Ù?راهم مي شوند. مي توان رويكرد مبتني بر component اي كه در طراØÙŠ Web Application ها در JSF مشاهده مي شود را با ASP.net مقايسه نمود. همچنين جاوا به همراه تكنولوژي JSFØŒ امكان RAD: Rapid Application Development را Ù?راهم نموده است. JSF بر پايه مدل MVC است كه قبلا ØªÙˆØ¶ÙŠØ Ø¯Ø§Ø¯Ù‡ شد. لذا Well Designed است Ùˆ معماري آن مثل بقيه Application هايي است كه JSP Ùˆ Servlet را به كار مي گيرند.
JSF امكان ايجاد Ùˆ استÙ?اده از دو نوع Component را به كاربر مي دهد:
1- Standard UI Components:
JSF شامل مجموعه component هاي پايه مانند Text box, Check box, List box, Panel, Label, Radio Button و غيره است. مانند موارد زير:
UIForm : Ù?رمي است كه بعنوان Container ساير component ها در نظر گرÙ?ته مي شود.
UICommand: مشخص كننده Component هايي چون Button, Hyperlink, menuItem است.
UIinput : معرÙ? component هاي ورودي مثل Text Input Filed است.
2- Custom UI Components:
معمولا نياز است كه Ø·Ø±Ø§ØØ§Ù† Component ها را Customize نمايند. JSF اين امكان را Ù?راهم مي نمايد. به علاوه JSF از Third Party Component ها نيز ØÙ…ايت مي كند. منظور از Third Party Components آن Custom Component هايي است كه توسط Ù?روشندگان ديگر توليد شده است. Ú†Ù‡ آنها كه تجاري Ùˆ Ú†Ù‡ آنها كه Open Source اند، همه آنها در ايجاد واسط كاربري Web Application قابل استÙ?اده اند.
براي ايجاد Component لازم است كه يا UIComponent كه يك interface است را implement نماييد، يا اينكه كلاس UIComponentBase را Extend كنيد.
Ù†ØÙˆÙ‡ عملكرد تكنولوژي JSF را در شكل زير مشاهده مي كنيد:
همانگونه كه مي بينيد، واسط كاربري ساخته شده با JSF كه در شكل با myUI نمايش داده شده است روي سرور پردازش مي شود Ùˆ نتيجه آن به Ù?رمت HTML براي client ارسال مي شود. Ù?ايل jsp به نام myform.jsp در واقع يك Ù?ايل JSF است Ùˆ شامل تگ هاي مربوط به JavaServer Faces مي باشد. در اين Ù?ايل با استÙ?اده از Custom Tag هاي تعريÙ? شده توسط تكنولوژي JSP اجزا Ùˆ component هاي واسط كاربري مشخص مي شوند.
يك JSF Application نوعا شامل موارد زير است:
1- مجموعه اي از صÙ?ØØ§Øª JSP. اگر Ú†Ù‡ كه شما Ù…ØØ¯ÙˆØ¯ به استÙ?اده از JSP بعنوان تكنولوژي presentation خود نيستيد.
2- تعدادي JavaBeans Component پشت صØÙ†Ù‡ كه property ها Ùˆ متدهاي UI Component هاي روي صÙ?ØÙ‡ را مشخص مي كنند.
3- يك Ù?ايل Application Configuration Resource كه قواعد Navigation صÙ?ØØ§Øª ØŒ همچنين تنظيمات Ùˆ مشخصات Beans Ùˆ ساير Object هاي تعريÙ? شده توسط Ø·Ø±Ø§Ø Ø¯Ø± آن ثبت مي شود.
4- Deployment Descriptor يا همان Ù?ايل web.xml
5- در صورت وجود،مجموعه Object هاي ايجاد شده توسط Ø·Ø±Ø§Ø Ø³ÙŠØ³ØªÙ…
6- مجموعه اي از Custom Tag ها جهت نمايش Custom Objects روي صÙ?ØÙ‡.
در ادامه بيشتر به اين موضوع پرداخته خواهد شد.
mahyar_ev | 05:28 PM | Comment(s)(0)
JDBCJuly 18, 2007 12:39 PM
JDBC يا Java Database Connectivity يك API است كه امكان ارتباط با انواع مختلÙ? Database ها را در جاوا Ù?راهم مي آورد. براي ارتباط به Database لازم است ابتدا درايور مناسب همان Database را نصب نماييم Ùˆ سپس با استÙ?اده از دستورات مربوطه ارتباط با پايگاه داده را برقرار كنيم.
ايجاد Connection:
توسط دستور Class.forName درايور مربوطه را load مي نماييم. اين كار باعث register شدن درايور مربوطه در كلاس DriverManager مي گردد. DriverManager وظيÙ?Ù‡ تشخيص Ùˆ تعيين درايور مناسب براي باز كردن يك URL را به عهده دارد.
Connectiion URL چنين Ù?رمتي دارد:
ايجاد Connection:
توسط دستور Class.forName درايور مربوطه را load مي نماييم. اين كار باعث register شدن درايور مربوطه در كلاس DriverManager مي گردد. DriverManager وظيÙ?Ù‡ تشخيص Ùˆ تعيين درايور مناسب براي باز كردن يك URL را به عهده دارد.
Connectiion URL چنين Ù?رمتي دارد:
Jdbc:derby:<dbname>[propertyList]
Ù†ØÙˆÙ‡ درست تنظيم URL را معمولا مي توانيد در مستندات درايور JDBC ديتابيس مربوطه بيابيد.
نكته ديگر اينكه لازم است *. java.sql را import كرده باشيد.
مثال Connection به mysql:
نكته ديگر اينكه لازم است *. java.sql را import كرده باشيد.
مثال Connection به mysql:
String DriverStr = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mysql";
String UserName = "root";
String Password = "";
String url = "jdbc:mysql://localhost:3306/mysql";
String UserName = "root";
String Password = "";
Connection con;
Class.forName(DriverStr);
con = DriverManager.getConnection(url,UserName,Password);
Class.forName(DriverStr);
con = DriverManager.getConnection(url,UserName,Password);
در تابع getConnection علاوه بر URL ، شما UserName و Password لازم براي Login به پايگاه داده را نيز بايد ذكر كنيد.
Select اطلاعات پايگاه داده:
Select اطلاعات پايگاه داده:
Statement stmt = con.createStatement();
ResultSet TestRS = stmt.executeQuery("SELECT * FROM TestDB.TestTbl");
ResultSet TestRS = stmt.executeQuery("SELECT * FROM TestDB.TestTbl");
بديهي است قبل از اجراي اين دستورات بايد Connection برقرار شده باشد. ضمنا دستورات نوشته شده بايد با سينتكس DBMS مربوطه باشند.
همانگونه كه در مثال مشخص است، خروجي Select در يك Object به نام ResultSet قرار مي گيرد Ùˆ از طريق آن مي توان به Ù…ØØªÙˆØ§ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª دست ياÙ?ت. تعدادي از عمليات مهم Ùˆ پركاربرد ResultSet عبارتند از:
همانگونه كه در مثال مشخص است، خروجي Select در يك Object به نام ResultSet قرار مي گيرد Ùˆ از طريق آن مي توان به Ù…ØØªÙˆØ§ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª دست ياÙ?ت. تعدادي از عمليات مهم Ùˆ پركاربرد ResultSet عبارتند از:
TestRS.first(); // به اولين ركورد مي رود
TestRS.next(); // به ركورد بعدي مي رود
TestRS.getString("fieldName"); // مقدار Ù?يلد مشخص شده را از ركورد جاري برمي گرداند
TestRS.next(); // به ركورد بعدي مي رود
TestRS.getString("fieldName"); // مقدار Ù?يلد مشخص شده را از ركورد جاري برمي گرداند
mahyar_ev | 12:39 PM | Comment(s)(0)
مثال Ù?ايل jsp با Ù?رمت XMLJuly 15, 2007 03:04 PM
<?xml version="1.0"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="1.2">
<jsp:directive.page contentType="text/html"/>
<jsp:directive.page import="java.text.*"/>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
version="1.2">
<jsp:directive.page contentType="text/html"/>
<jsp:directive.page import="java.text.*"/>
<html>
<head>
<title>Example JSP in XML format</title>
</head>
<head>
<title>Example JSP in XML format</title>
</head>
<body>
This is the output of a simple JSP using XML format.
<br/>
This is the output of a simple JSP using XML format.
<br/>
<div>Use a jsp:scriptlet to loop from 1 to 10: </div>
<jsp:scriptlet>
// Note we need to declare CDATA because we don't escape the less than symbol
<![CDATA[
for (int i = 1; i<=10; i++) {
out.println(i);
if (i < 10) {
out.println(", ");
}
}
]]>
</jsp:scriptlet>
<jsp:scriptlet>
// Note we need to declare CDATA because we don't escape the less than symbol
<![CDATA[
for (int i = 1; i<=10; i++) {
out.println(i);
if (i < 10) {
out.println(", ");
}
}
]]>
</jsp:scriptlet>
<!-- Because I omit br's end tag, declare it as CDATA -->
<![CDATA[
<br><br>
]]>
<![CDATA[
<br><br>
]]>
<jsp:text>
This sentence is enclosed in a jsp:text element.
</jsp:text>
</body>
</html>
</jsp:root>
</html>
</jsp:root>
<br> در JSP نياز به بسته شدن ندارد. اما در XHTML بايد ØØªÙ…ا بسته شود.
CDATA
همه قسمت هاي Ù?ايل XML توسط parser Ù„ØØ§Ø¸ مي شوند، مگر قسمتهايي كه درون CDATA نوشته شود. بخش CDATA با "<![CDATA[" آغاز Ùˆ به "]]>" ختم مي شود.
چرا بايد از CDATA اسÙ?اده نمود؟ همانگونه كه مي دانيد هر XML tag خود ممكن است از تگ هاي ديگري تشكيل شده باشد. باز مي دانيم كه تگ ها با كاراكتر < شروع مي شوند. ØØ§Ù„ اگر داخل دستوراتي كه مي نويسيم از اين كاراكتر هم استÙ?اده شده باشد، parser به اشتباه مي اÙ?تد Ùˆ خطا مي دهد. چاره اين است كه دستورات مذكور داخل CDATA قرار گيرد. كاراكترهايي كه باعث بروز خطا در parser مي شود عبارتند از دو كاراكتر < Ùˆ & .
البته براي رÙ?ع اين مشكل، راه ØÙ„ ديگري هم وجود دارد كه در مواردي Ù…Ù?يد است كه تعداد كاراكترهاي غير مجاز، زياد نيست. در اين صورت به جاي < عبارت < Ùˆ به جاي & عبارت & در متن جايگزين گردد. اطلاعات تكميلي را در ØªÙˆØ¶ÙŠØØ§Øª مربوط به CDATA بخوانيد.
mahyar_ev | 03:04 PM | Comment(s)(0)
JSP با Ù?رمت XMLJuly 10, 2007 02:49 PM
دستورات Ùˆ تگ هاي اصلي مورد استÙ?اده براي نوشتن Ù?ايل JSP با Ù?رمت XML عبارتند از:
jsp:root
Ù?ايل Jsp با Ù?رمت XMLØŒ ØØªÙ…ا jsp:root را دارد. استÙ?اده از آن براي مشخص نمودن tag library استÙ?اده شده در دستورات JSP است. مشخص نمودن xmlns Ùˆ version در آن، اجباري است.
jsp:directive.page
همانگونه كه قبلا ذكر شد دستوراتي كه در <page @%> قيد مي شوند global هستند Ùˆ براي كل صÙ?ØÙ‡ JSP Ù„ØØ§Ø¸ مي گردند.
jsp:root
Ù?ايل Jsp با Ù?رمت XMLØŒ ØØªÙ…ا jsp:root را دارد. استÙ?اده از آن براي مشخص نمودن tag library استÙ?اده شده در دستورات JSP است. مشخص نمودن xmlns Ùˆ version در آن، اجباري است.
jsp:directive.page
همانگونه كه قبلا ذكر شد دستوراتي كه در <page @%> قيد مي شوند global هستند Ùˆ براي كل صÙ?ØÙ‡ JSP Ù„ØØ§Ø¸ مي گردند.
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
%>
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
%>
jsp:directive.page مشابه اين دستور است درÙ?رمت XML .
jsp:declaration
در JSP ØŒ تعريÙ? متغيرها بصورت زير است
jsp:declaration
در JSP ØŒ تعريÙ? متغيرها بصورت زير است
<%! int i = 0; %>
معادل اين دستور در Ù?رمت XML چنين است:
<jsp:declaration>int i = 0;</jsp:declaration>
همچنين متد ها را نيز مي توان در jsp:declaration تعريÙ? نمود.
jsp:scriptlet
نوشتن scriptlet در Ù?رمت JSP بدين صورت است:
jsp:scriptlet
نوشتن scriptlet در Ù?رمت JSP بدين صورت است:
<% i = 1; %>
معادل اين دستور در Ù?رمت XML چنين است:
<jsp:scriptlet>i = 1;</jsp:scriptlet>
jsp:expression
براي نمايش يك عبارت روي صÙ?ØÙ‡ استÙ?اده مي شود كه توسط زبان جاوا توليد شده است. براي اين كار عبارت مذكور كه مي تواند يك تابع با يك خروجي Ø¨Ø§Ø´Ø¯ØŒâ€ŒÙ…ØØ§Ø³Ø¨Ù‡ مي شود Ùˆ خروجي آن به string تبديل مي شود.
براي نمايش يك عبارت روي صÙ?ØÙ‡ استÙ?اده مي شود كه توسط زبان جاوا توليد شده است. براي اين كار عبارت مذكور كه مي تواند يك تابع با يك خروجي Ø¨Ø§Ø´Ø¯ØŒâ€ŒÙ…ØØ§Ø³Ø¨Ù‡ مي شود Ùˆ خروجي آن به string تبديل مي شود.
<jsp:expression>getDateTimeStr(request.getLocale())</jsp:expression>
jsp:text
براي نمايش متن ثابتي روي صÙ?ØÙ‡ استÙ?اده مي شود.
براي نمايش متن ثابتي روي صÙ?ØÙ‡ استÙ?اده مي شود.
<jsp:text>this is a test</jsp:text>
در مطلب بعد مثالي در اين رابطه خواهيم ديد.
mahyar_ev | 02:49 PM | Comment(s)(0)
برقراري ارتباط بين JSP و ServletJuly 7, 2007 03:43 PM
Ù†ØÙˆÙ‡ Ù?راخواني يك Servlet از داخل يك Ù?ايل JSP بدين صورت است:
<html>
<body bgcolor="white">
<body bgcolor="white">
<!-- Forward to a servlet -->
<jsp:forward page="/servletToJsp" />
<jsp:forward page="/servletToJsp" />
</html>
كه در آن عبارت "servletToJsp" نام servlet مربوطه است كه در Ù?ايلي به نام servletToJsp.java پياده شده است.
Ù†ØÙˆÙ‡ Ù?راخواني يك صÙ?ØÙ‡ JSP از درون يك Servlet بدين صورت است:
Ù†ØÙˆÙ‡ Ù?راخواني يك صÙ?ØÙ‡ JSP از درون يك Servlet بدين صورت است:
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.*;
public class servletToJsp extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response) {
HttpServletResponse response) {
try {
// Set the attribute and Forward to hello.jsp
request.setAttribute ("servletName", "servletToJsp");
getServletConfig().getServletContext().getRequestDispatcher("/jsptoserv/hello.jsp").forward(request, response);
} catch (Exception ex) {}
}
}
// Set the attribute and Forward to hello.jsp
request.setAttribute ("servletName", "servletToJsp");
getServletConfig().getServletContext().getRequestDispatcher("/jsptoserv/hello.jsp").forward(request, response);
} catch (Exception ex) {}
}
}
براي تست Servlet همانگونه كه قبلا نيز ذكر شده مي توانيد با دستور زير از يك Ù?ايل HTML آن را Ù?راخواني نماييد.
<a href="/ servletToJsp">Execute Servlet</a>
mahyar_ev | 03:43 PM | Comment(s)(0)
نمايش ساعت با استÙ?اده از jspJuly 3, 2007 02:51 PM
Ù?ايل CurrentTimeBean.java :
package javaborder;
import java.util.Date;
public class CurrentTimeBean {
public int hours;
public int minutes;
public CurrentTimeBean() {
Date now = new Date();
this.hours = now.getHours();
this.minutes = now.getMinutes();
}
public int hours;
public int minutes;
public CurrentTimeBean() {
Date now = new Date();
this.hours = now.getHours();
this.minutes = now.getMinutes();
}
public int getHours(){
return hours;
}
public void setHours(int Hours){
this.hours = Hours;
}
public int getMinutes(){
return minutes;
}
public void setMinutes(int Minutes){
this.minutes = Minutes;
}
}
return hours;
}
public void setHours(int Hours){
this.hours = Hours;
}
public int getMinutes(){
return minutes;
}
public void setMinutes(int Minutes){
this.minutes = Minutes;
}
}
Ù?ايل test.jsp :
<jsp:useBean id = "time" class= " javaborder.CurrentTimeBean"/>
<html>
<body>
Hour : <jsp:getProperty name = "time" property = "hours"/> <BR>
Minutes : <jsp:getProperty name = "time" property = "minutes"/> </body>
</html>
<html>
<body>
Hour : <jsp:getProperty name = "time" property = "hours"/> <BR>
Minutes : <jsp:getProperty name = "time" property = "minutes"/> </body>
</html>
دستور <jsp:useBean> براي استÙ?اده از JavaBean ها در jsp استÙ?اده مي شود. با اين دستور مي توان يك كلاس جاوا را مشخص نمود Ùˆ نمونه اي از آن ايجاد كرد.
mahyar_ev | 02:51 PM | Comment(s)(0)
يك مثال ساده JSPJuly 1, 2007 12:27 PM
<html>
<head>
<title>JSP EXAMPLE</title>
</head>
<body>
<%@page import="java.sql.* , java.io.*"%>
<%
int i = 1;
if (i==1) {
%>
<p>Condition 1</p>
<%
} else {
%>
<p>Condition 2</p>
<head>
<title>JSP EXAMPLE</title>
</head>
<body>
<%@page import="java.sql.* , java.io.*"%>
<%
int i = 1;
if (i==1) {
%>
<p>Condition 1</p>
<%
} else {
%>
<p>Condition 2</p>
<%
}
%>
</body>
</html>
}
%>
</body>
</html>
دستورات �?وق بايد در يك �?ايل متني با پسوند jsp ذخيره گردند.
از آنجا كه در مثال �?وق هميشه شرط i==1 صادق است، عبارت condition 1 هميشه نمايش داده مي شود. غرض تنها نشان دادن قالب يك �?ايل jsp ساده است.
از آنجا كه در مثال �?وق هميشه شرط i==1 صادق است، عبارت condition 1 هميشه نمايش داده مي شود. غرض تنها نشان دادن قالب يك �?ايل jsp ساده است.