« 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 ساده است.