« June 2007 | صÙ?حه اصلی | August 2007 »

JSF

July 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 را در شكل زير مشاهده مي كنيد:
JSF1.JPG
همانگونه كه مي بينيد، واسط كاربري ساخته شده با 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)

JDBC

July 18, 2007 12:39 PM

JDBC يا Java Database Connectivity يك API است كه امكان ارتباط با انواع مختلÙ? Database ها را در جاوا Ù?راهم مي آورد. براي ارتباط به Database لازم است ابتدا درايور مناسب همان Database را نصب نماييم Ùˆ سپس با استÙ?اده از دستورات مربوطه ارتباط با پايگاه داده را برقرار كنيم.

ايجاد Connection:
توسط دستور Class.forName درايور مربوطه را load مي نماييم. اين كار باعث register شدن درايور مربوطه در كلاس DriverManager مي گردد. DriverManager وظيÙ?Ù‡ تشخيص Ùˆ تعيين درايور مناسب براي باز كردن يك URL را به عهده دارد.
Connectiion URL چنين Ù?رمتي دارد:

Jdbc:derby:<dbname>[propertyList]

نحوه درست تنظيم URL را معمولا مي توانيد در مستندات درايور JDBC ديتابيس مربوطه بيابيد.
نكته ديگر اينكه لازم است *. java.sql را import كرده باشيد.

مثال Connection به mysql:

String DriverStr = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mysql";
String UserName = "root";
String Password = "";

Connection con;
Class.forName(DriverStr);
con = DriverManager.getConnection(url,UserName,Password);     
 

در تابع getConnection علاوه بر URL ، شما UserName و Password لازم براي Login به پايگاه داده را نيز بايد ذكر كنيد.

Select اطلاعات پايگاه داده:

Statement stmt = con.createStatement();
ResultSet TestRS = stmt.executeQuery("SELECT * FROM TestDB.TestTbl");

بديهي است قبل از اجراي اين دستورات بايد Connection برقرار شده باشد. ضمنا دستورات نوشته شده بايد با سينتكس DBMS مربوطه باشند.
همانگونه كه در مثال مشخص است، خروجي Select در يك Object به نام ResultSet قرار مي گيرد Ùˆ از طريق آن مي توان به محتواي اطلاعات دست ياÙ?ت. تعدادي از عمليات مهم Ùˆ پركاربرد ResultSet عبارتند از:

TestRS.first(); //  به اولين ركورد مي رود
TestRS.next(); // به ركورد بعدي مي رود
TestRS.getString("fieldName");  // مقدار Ù?يلد مشخص شده را از ركورد جاري برمي گرداند

mahyar_ev | 12:39 PM | Comment(s)(0)

مثال Ù?ايل jsp با Ù?رمت XML

July 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.*"/>

<html>
<head>
  <title>Example JSP in XML format</title>
</head>

<body>
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>

<!-- Because I omit br's end tag, declare it as CDATA -->
<![CDATA[
  <br><br>
]]>


<jsp:text>
  This sentence is enclosed in a jsp:text element.
</jsp:text>

</body>
</html>
</jsp:root>


<br> در JSP نياز به بسته شدن ندارد. اما در XHTML بايد حتما بسته شود.

CDATA
همه قسمت هاي Ù?ايل XML توسط parser لحاظ مي شوند، مگر قسمتهايي كه درون CDATA نوشته شود. بخش CDATA با "<![CDATA["  آغاز Ùˆ به "]]>"  Ø®ØªÙ… مي شود.
چرا بايد از CDATA اسÙ?اده نمود؟ همانگونه كه مي دانيد هر XML tag خود ممكن است از تگ هاي ديگري تشكيل شده باشد. باز مي دانيم كه تگ ها با كاراكتر < شروع مي شوند. حال اگر داخل دستوراتي كه مي نويسيم از اين كاراكتر هم استÙ?اده شده باشد، parser به اشتباه مي اÙ?تد Ùˆ خطا مي دهد. چاره اين است كه دستورات مذكور داخل CDATA قرار گيرد. كاراكترهايي كه باعث بروز خطا در parser مي شود عبارتند از دو كاراكتر < Ùˆ & .
البته براي رÙ?ع اين مشكل، راه حل ديگري هم وجود دارد كه در مواردي Ù…Ù?يد است كه تعداد كاراكترهاي غير مجاز، زياد نيست. در اين صورت به جاي < عبارت &lt; Ùˆ به جاي & عبارت &amp; در متن جايگزين گردد. اطلاعات تكميلي را در توضيحات مربوط به CDATA بخوانيد.

mahyar_ev | 03:04 PM | Comment(s)(0)

JSP با Ù?رمت XML

July 10, 2007 02:49 PM

دستورات Ùˆ تگ هاي اصلي مورد استÙ?اده براي نوشتن Ù?ايل JSP با Ù?رمت XML عبارتند از:

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.*}, ..." ] 
%>

jsp:directive.page مشابه اين دستور است درÙ?رمت XML .

jsp:declaration
در JSP ØŒ تعريÙ? متغيرها بصورت زير است

<%!  int i = 0; %>

معادل اين دستور در Ù?رمت XML چنين است:

<jsp:declaration>int i = 0;</jsp:declaration>

همچنين متد ها را نيز مي توان در jsp:declaration تعريÙ? نمود.

jsp:scriptlet
نوشتن scriptlet در Ù?رمت JSP بدين صورت است:

<% i = 1; %>

معادل اين دستور در Ù?رمت XML چنين است:

<jsp:scriptlet>i = 1;</jsp:scriptlet>

jsp:expression
براي نمايش يك عبارت روي صÙ?حه استÙ?اده مي شود كه توسط زبان جاوا توليد شده است. براي اين كار عبارت مذكور كه مي تواند يك تابع با يك خروجي باشد،‌محاسبه مي شود Ùˆ خروجي آن به 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 و Servlet

July 7, 2007 03:43 PM

نحوه Ù?راخواني يك Servlet از داخل يك Ù?ايل JSP بدين صورت است:

<html>
<body bgcolor="white">

<!-- Forward to a servlet -->
<jsp:forward page="/servletToJsp" />

</html>

كه در آن عبارت "servletToJsp" نام servlet مربوطه است كه در Ù?ايلي به نام servletToJsp.java پياده شده است.

نحوه Ù?راخواني يك صÙ?حه JSP از درون يك Servlet بدين صورت است:

import javax.servlet.*;
import javax.servlet.http.*;

public class servletToJsp extends HttpServlet {

    public void doGet (HttpServletRequest request,
         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) {}
    }
}

براي تست Servlet همانگونه كه قبلا نيز ذكر شده مي توانيد با دستور زير از يك Ù?ايل HTML آن را Ù?راخواني نماييد.

<a href="/ servletToJsp">Execute Servlet</a>

mahyar_ev | 03:43 PM | Comment(s)(0)

نمايش ساعت با استÙ?اده از jsp

July 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 getHours(){
    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>

دستور <jsp:useBean> براي استÙ?اده از JavaBean ها در jsp استÙ?اده مي شود. با اين دستور مي توان يك كلاس جاوا را مشخص نمود Ùˆ نمونه اي از آن ايجاد كرد.

mahyar_ev | 02:51 PM | Comment(s)(0)

يك مثال ساده JSP

July 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>

      <%
      }
      %>
</body>
</html>

دستورات �?وق بايد در يك �?ايل متني با پسوند jsp ذخيره گردند.
از آنجا كه در مثال �?وق هميشه شرط i==1 صادق است، عبارت condition 1 هميشه نمايش داده مي شود. غرض تنها نشان دادن قالب يك �?ايل jsp ساده است.

mahyar_ev | 12:27 PM | Comment(s)(2)