« December 2007 | ص?حه اصلی | March 2008 »
يك كد جاوا اسكريپت ديگر براي �?رمت بندي HTMLJanuary 28, 2008 02:15 PM
قبلا يك كد جاوا اسكريپت براي �?رمت بندي متن بصورت HTML در اين وبلاگ قرار داده بودم (اينجا). آن برنامه است�?اده اش كمي سخت بود و كاربر كنترلي روي �?رمت بندي نداشت. يك نسخه ديگر از آن نوشته ام كه شباهت بيشتري با اديتورهاي HTML مرسوم در وبلاگ ها دارد و عملكردش بيشتر قابل كنترل است. Source آن را از اينجا مي توانيد دريا�?ت نماييد.
mahyar_ev | 02:15 PM | Comment(s)(2)
دانلود firstcupJanuary 27, 2008 02:39 PM
كليه مطالب ارائه شده در خصوص پياده سازي firstcup Enteprise Application را در يك �?ايل PDF آماده كرده ام كه از اينجا قابل دريا�?ت است.
در ضمن باعث خوشحالي من است كه دوستاني كه اين مطالب را مي خوانند نظرات خود را درباره آن اعلام كنند.
به نظر شما مجموعه مطالب مربوط به firstcup چطور بود؟ كم و كسري هايش چه بود؟ آيا اين رويه را ادامه دهم يا خير؟ چه پيشنهاد يا انتقادي براي بهتر شدن مطالب داريد؟
ممنون
در ضمن باعث خوشحالي من است كه دوستاني كه اين مطالب را مي خوانند نظرات خود را درباره آن اعلام كنند.
به نظر شما مجموعه مطالب مربوط به firstcup چطور بود؟ كم و كسري هايش چه بود؟ آيا اين رويه را ادامه دهم يا خير؟ چه پيشنهاد يا انتقادي براي بهتر شدن مطالب داريد؟
ممنون
mahyar_ev | 02:39 PM | Comment(s)(0)
جرعه آخر firstcupJanuary 8, 2008 11:08 AM
تعري? Navigation ص?حات JSF
اين پروژه شامل دو ص?حه jsp است كه از تكنولوژي JSF در آنها است?اده شده. يكي greeting.jsp و ديگري response.jsp است. قواعد حرکت بين ص?حات JSF بايد در ?ايل configuration تعري? شود. اين کار در مورد مثال جاري بدين صورت انجام مي شود:
1. ماژول firstcup-war را باز کنيد.
2. ?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کنيد و از قسمت JavaServer Faces گزينه Add Navigation Rule را انتخاب نماييد.
5. در ?يلد Rule from view عبارت greeting.jsp/ را وارد کنيد.
6. دکمه Add را کليک کنيد.
7. مراحل 4 تا 6 را تکرار کنيد. با اين ت?اوت که اين بار عبارت response.jsp/ را بعنوان Rule From view وارد کنيد.
8. روي اديتور کليک راست کنيد و از JavaServer Faces گزينه Add Navigation Case را انتخاب کنيد.
9. ?يلد From View را greeting.jsp/ انتخاب نماييد.
10. در ?يلد From Outcome عبارت success را وارد کنيد.
11. ?يلد To View را response.jsp/ انتخاب نماييد.
12. Add را کليک کنيد.
13. مراحل 8 تا 12 را تکرار کنيد. با اين ت?اوت که اين بار response.jsp/ را در From View و greeting.jsp/ را در To View وارد کنيد.
بدين ترتيب دو Navigation Rule خواهيد داشت. يکي از greeting.jsp به response.jsp و ديگري برعکس.
در پايان ?ايل را ذخيره نماييد.
ساخت ص?حه response.jsp
1. روي ماژول firstcup-war کليک راست نماييد.
2. از قسمت New گزينه JSP را انتخاب کنيد.
3. نام ?ايل را response وارد کنيد.
4. Finish را کليک کنيد.
5. در ?ايل response.jsp تگ head را تغيير دهيد که اينگونه گردد:
اين پروژه شامل دو ص?حه jsp است كه از تكنولوژي JSF در آنها است?اده شده. يكي greeting.jsp و ديگري response.jsp است. قواعد حرکت بين ص?حات JSF بايد در ?ايل configuration تعري? شود. اين کار در مورد مثال جاري بدين صورت انجام مي شود:
1. ماژول firstcup-war را باز کنيد.
2. ?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کنيد و از قسمت JavaServer Faces گزينه Add Navigation Rule را انتخاب نماييد.
5. در ?يلد Rule from view عبارت greeting.jsp/ را وارد کنيد.
6. دکمه Add را کليک کنيد.
7. مراحل 4 تا 6 را تکرار کنيد. با اين ت?اوت که اين بار عبارت response.jsp/ را بعنوان Rule From view وارد کنيد.
8. روي اديتور کليک راست کنيد و از JavaServer Faces گزينه Add Navigation Case را انتخاب کنيد.
9. ?يلد From View را greeting.jsp/ انتخاب نماييد.
10. در ?يلد From Outcome عبارت success را وارد کنيد.
11. ?يلد To View را response.jsp/ انتخاب نماييد.
12. Add را کليک کنيد.
13. مراحل 8 تا 12 را تکرار کنيد. با اين ت?اوت که اين بار response.jsp/ را در From View و greeting.jsp/ را در To View وارد کنيد.
بدين ترتيب دو Navigation Rule خواهيد داشت. يکي از greeting.jsp به response.jsp و ديگري برعکس.
در پايان ?ايل را ذخيره نماييد.
ساخت ص?حه response.jsp
1. روي ماژول firstcup-war کليک راست نماييد.
2. از قسمت New گزينه JSP را انتخاب کنيد.
3. نام ?ايل را response وارد کنيد.
4. Finish را کليک کنيد.
5. در ?ايل response.jsp تگ head را تغيير دهيد که اينگونه گردد:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Response Page</title>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Response Page</title>
</head>
6. تگ هاي ابتدا و انتهاي body را پاک کنيد.
7. تگ <h1> را نيز به همراه تگ خاتمه و محتوياتش حذ? نماييد.
8. تگ هاي زير را پس از تگ بسته شدن head قرار دهيد.
7. تگ <h1> را نيز به همراه تگ خاتمه و محتوياتش حذ? نماييد.
8. تگ هاي زير را پس از تگ بسته شدن head قرار دهيد.
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
9. تگ هاي زير را در ادامه تگ هاي مرحله قبل در ص?حه کپي کنيد:
<f:view>
<h:form>
<h2><h:outputText value="#{bundle.YouAre} " />
<h:outputText value="#{bundle.SameAge}" rendered="#{dukesBDay.ageDiff == 0}"/>
<h:outputText value="#{dukesBDay.absAgeDiff}" rendered="#{dukesBDay.ageDiff < 0}"/>
<h:outputText value=" #{bundle.Year} " rendered="#{dukesBDay.ageDiff == -1}"/>
<h:outputText value=" #{bundle.Years} " rendered="#{dukesBDay.ageDiff < -1}"/>
<h:outputText value="#{bundle.Younger}" rendered="#{dukesBDay.ageDiff < 0}"/>
<h:outputText value="#{dukesBDay.absAgeDiff}" rendered="#{dukesBDay.ageDiff > 0}"/>
<h:outputText value=" #{bundle.Year} " rendered="#{dukesBDay.ageDiff == 1}"/>
<h:outputText value=" #{bundle.Years} " rendered="#{dukesBDay.ageDiff > 1}"/>
<h:outputText value="#{bundle.Older}" rendered="#{dukesBDay.ageDiff > 0}"/>
</h:form>
</f:view>
<h:form>
<h2><h:outputText value="#{bundle.YouAre} " />
<h:outputText value="#{bundle.SameAge}" rendered="#{dukesBDay.ageDiff == 0}"/>
<h:outputText value="#{dukesBDay.absAgeDiff}" rendered="#{dukesBDay.ageDiff < 0}"/>
<h:outputText value=" #{bundle.Year} " rendered="#{dukesBDay.ageDiff == -1}"/>
<h:outputText value=" #{bundle.Years} " rendered="#{dukesBDay.ageDiff < -1}"/>
<h:outputText value="#{bundle.Younger}" rendered="#{dukesBDay.ageDiff < 0}"/>
<h:outputText value="#{dukesBDay.absAgeDiff}" rendered="#{dukesBDay.ageDiff > 0}"/>
<h:outputText value=" #{bundle.Year} " rendered="#{dukesBDay.ageDiff == 1}"/>
<h:outputText value=" #{bundle.Years} " rendered="#{dukesBDay.ageDiff > 1}"/>
<h:outputText value="#{bundle.Older}" rendered="#{dukesBDay.ageDiff > 0}"/>
</h:form>
</f:view>
10. قبل از بسته شدن تگ h:form تگ زير را قرار دهيد:
<p><h:commandButton id="back" value="#{bundle.Back}" action="success"/>
11. ?ايل را ذخيره نماييد.
Building, Packaging, Deploying & Running
در اين مرحله شما DukesBirthdayBean و firstcup web client راا Build خواهيد نمود، آنها را در ?ايل هاي EAR بصورت package درخواهيد آورد. ?ايل هاي EAR را در سرور deploy خوهيد نمود و سرانجام App را اجرا خواهيد کرد.
آماده سازي Deployment Descriptor
در اين مرحله برخي پارامترها که خود NetBeans در ?ايل Deployment Descriptor ايجاد کرده، اما ما به آنها نياز نداريم را پاک خواهيم کرد. بدين ترتيب:
1. ماژول firstcup-war را باز کنيد.
2. ?ولدر Configuration Files را باز کنيد.
3. روي web.xml دبل کليک نماييد.
4. در بالاي پنجره اديتور، روي تب General کليک نماييد.
5. علامت + کنار Context Parameters را انتخاب کنيد. با اين کار يک جدول باز مي شود.
6. از جدول مذکور تک تک پارامترها را انتخاب کنيد و با دکمه remove همه آنها را يکي يکي پاک نماييد.
7. در بالاي اديتور روي تب XML کليک کنيد.
8. عنصر welcome-file-list و همه اجزاي آن را حذ? نماييد.
9. ?ايل را ذخيره نماييد.
Building و Packaging
دراين مرحله در مورد firstcup Enterprise Application عمل Building و packaging را انجام مي دهيم. بدين ترتيب:
1. firstcup را در قسمت پروژه ها انتخاب نماييد.
2. کليک راست کنيد و گزينه Build Project را انتخاب کنيد.
Deploying
در مرحله قبل شما DukesBirthdayBean enterprise bean و firstcup web client را بصورت ?ايل firstcup.ear پکيج نموديم. حالا آن را روي سرور deploy مي کنيم. بدين صورت:
1. firstcup را در قسمت پروژه ها انتخاب کنيد.
2. کليک راست کرده و گزينه Deploy Project را انتخاب کنيد.
Running
1. Browser را اجرا نماييد و در قسمت آدرس آن URL زير را وارد کنيد.
در اين مرحله شما DukesBirthdayBean و firstcup web client راا Build خواهيد نمود، آنها را در ?ايل هاي EAR بصورت package درخواهيد آورد. ?ايل هاي EAR را در سرور deploy خوهيد نمود و سرانجام App را اجرا خواهيد کرد.
آماده سازي Deployment Descriptor
در اين مرحله برخي پارامترها که خود NetBeans در ?ايل Deployment Descriptor ايجاد کرده، اما ما به آنها نياز نداريم را پاک خواهيم کرد. بدين ترتيب:
1. ماژول firstcup-war را باز کنيد.
2. ?ولدر Configuration Files را باز کنيد.
3. روي web.xml دبل کليک نماييد.
4. در بالاي پنجره اديتور، روي تب General کليک نماييد.
5. علامت + کنار Context Parameters را انتخاب کنيد. با اين کار يک جدول باز مي شود.
6. از جدول مذکور تک تک پارامترها را انتخاب کنيد و با دکمه remove همه آنها را يکي يکي پاک نماييد.
7. در بالاي اديتور روي تب XML کليک کنيد.
8. عنصر welcome-file-list و همه اجزاي آن را حذ? نماييد.
9. ?ايل را ذخيره نماييد.
Building و Packaging
دراين مرحله در مورد firstcup Enterprise Application عمل Building و packaging را انجام مي دهيم. بدين ترتيب:
1. firstcup را در قسمت پروژه ها انتخاب نماييد.
2. کليک راست کنيد و گزينه Build Project را انتخاب کنيد.
Deploying
در مرحله قبل شما DukesBirthdayBean enterprise bean و firstcup web client را بصورت ?ايل firstcup.ear پکيج نموديم. حالا آن را روي سرور deploy مي کنيم. بدين صورت:
1. firstcup را در قسمت پروژه ها انتخاب کنيد.
2. کليک راست کرده و گزينه Deploy Project را انتخاب کنيد.
Running
1. Browser را اجرا نماييد و در قسمت آدرس آن URL زير را وارد کنيد.
http://localhost:8080/firstcup
mahyar_ev | 11:08 AM | Comment(s)(1)
ساخت صفحه greeting.jspJanuary 6, 2008 03:07 PM
اين ص�?حه شامل پيغام خوش آمدگويي، نمايش سن �?علي Duke و دريا�?ت تاريخ تولد کاربر است. مراحل ساخت ص�?حه چنين است:
ساخت يک ص�?حه خالي:
1. روي ماژول firstcup-war کليک راست نماييد.
2. از قسمت New گزينه JSP را انتخاب کنيد.
3. نام �?ايل JSP را greeting وارد کنيد.
4. Finish را کليک کنيد.
5. تگ head را به اين صورت تغيير دهيد:
ساخت يک ص�?حه خالي:
1. روي ماژول firstcup-war کليک راست نماييد.
2. از قسمت New گزينه JSP را انتخاب کنيد.
3. نام �?ايل JSP را greeting وارد کنيد.
4. Finish را کليک کنيد.
5. تگ head را به اين صورت تغيير دهيد:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Firstcup Greeting Page</title>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Firstcup Greeting Page</title>
</head>
6. تگ هاي ابتدا و انتهاي body را حذ�? کنيد.
7. عبارت زير را حذ�? کنيد:
7. عبارت زير را حذ�? کنيد:
<h1>JSP Page</h1>
8. �?ايل را ذخيره نماييد.
Declare نمودن Tag Library هاي JSF
همانگونه که مي دانيد تکنولوژي JavaServer Faces در واقع مجموعه اي از custom tag هاي jsp است که براي نمايش کامپوننت هاي واسط کاربري ، اعتبار سنجي و ساير موارد مربوطه به کار مي رود. Custom tag ها در tag library ها تعري�? مي شوند. تکنولوژي JavaServer Faces در دو tag library تعري�? مي شود:
• HTML Render Kit library که در آن همه کامپوننت هاي استاندارد واسط کاربري تعري�? شده اند.
• Core tag library که تگ هاي مورد نياز براي مبدل ها (convertors) ، اعتبارسنج ها (Validators) و event listener ها و ساير توابع عملکردي اشياء تعري�? مي شوند.
براي است�?اده از اين تگ ها در ص�?حه بايد tag library را declare نماييد. در اين مثال بايد خطوط زير را در �?ايل greeting.jsp درست پس از تگ بسته شدن head قرار دهيد:
Declare نمودن Tag Library هاي JSF
همانگونه که مي دانيد تکنولوژي JavaServer Faces در واقع مجموعه اي از custom tag هاي jsp است که براي نمايش کامپوننت هاي واسط کاربري ، اعتبار سنجي و ساير موارد مربوطه به کار مي رود. Custom tag ها در tag library ها تعري�? مي شوند. تکنولوژي JavaServer Faces در دو tag library تعري�? مي شود:
• HTML Render Kit library که در آن همه کامپوننت هاي استاندارد واسط کاربري تعري�? شده اند.
• Core tag library که تگ هاي مورد نياز براي مبدل ها (convertors) ، اعتبارسنج ها (Validators) و event listener ها و ساير توابع عملکردي اشياء تعري�? مي شوند.
براي است�?اده از اين تگ ها در ص�?حه بايد tag library را declare نماييد. در اين مثال بايد خطوط زير را در �?ايل greeting.jsp درست پس از تگ بسته شدن head قرار دهيد:
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
ا�?زودن تگ هاي f:view و f:form
يک ص�?حه JSF بوسيله درختي از کامپوننت هاي واسط کاربري نمايش داده مي شود. هر ص�?حه JSP که از تکنولوژي JSF است�?اده مي کند بايد داراي تگ view باشد. اين تگ در Core tag Library تعري�? شده است و ريشه يا root درخت کامپوننت ها را مشخص مي نمايد. ساير تگ هاي JSF بايد درون تگ view تعري�? شوند.
همچنين از آنجا که معمولا ص�?حات JSF شامل �?رمي براي دريا�?ت اطلاعات از کاربر است، معمولا بايد شامل تگ form نيز باشد. همه کامپوننت هاي موجود در يک �?رم بايد درون تگ form قرار گيرند.
با مثال خود بحث را پي مي گيريم.
در ادامه declare نمودن tag library ها تگ هاي view و form را بدين صورت تعري�? نماييد:
يک ص�?حه JSF بوسيله درختي از کامپوننت هاي واسط کاربري نمايش داده مي شود. هر ص�?حه JSP که از تکنولوژي JSF است�?اده مي کند بايد داراي تگ view باشد. اين تگ در Core tag Library تعري�? شده است و ريشه يا root درخت کامپوننت ها را مشخص مي نمايد. ساير تگ هاي JSF بايد درون تگ view تعري�? شوند.
همچنين از آنجا که معمولا ص�?حات JSF شامل �?رمي براي دريا�?ت اطلاعات از کاربر است، معمولا بايد شامل تگ form نيز باشد. همه کامپوننت هاي موجود در يک �?رم بايد درون تگ form قرار گيرند.
با مثال خود بحث را پي مي گيريم.
در ادامه declare نمودن tag library ها تگ هاي view و form را بدين صورت تعري�? نماييد:
<f:view>
<h:form>
</h:form>
</f:view>
<h:form>
</h:form>
</f:view>
ا�?زودن Output Label ها براي نمايش محتواي �?قط خواندني
يکي از مهمترين و پر کاربرد ترين تگ هاي JSF تگ outputText است. greeting.jsp براي نمايش پيغام خوش آمدگويي، دستورالعمل ها، Lebel ها و سن Duke از آن است�?اده مي کند. براي اين کار از پيغام هاي تعري�? شده در resource bundle است�?اده مي نمايد. همچنين تگ outputText اي که سن Duke را نشان مي دهد از متغير age موجود در DukesBDay bean است�?اده مي کند.
در داخل تگ h:form اين کد ها را بنويسيد:
يکي از مهمترين و پر کاربرد ترين تگ هاي JSF تگ outputText است. greeting.jsp براي نمايش پيغام خوش آمدگويي، دستورالعمل ها، Lebel ها و سن Duke از آن است�?اده مي کند. براي اين کار از پيغام هاي تعري�? شده در resource bundle است�?اده مي نمايد. همچنين تگ outputText اي که سن Duke را نشان مي دهد از متغير age موجود در DukesBDay bean است�?اده مي کند.
در داخل تگ h:form اين کد ها را بنويسيد:
<h2><h:outputText value="#{bundle.Welcome}"/></h2>
<h:outputText value="#{bundle.DukeIs} "/>
<h:outputText value="#{dukesBDay.age}"/>
<p><h:outputText value="#{bundle.Instructions}"/>
<p><h:outputText value="#{bundle.YourBD}"/>
<h:outputText value="#{bundle.DukeIs} "/>
<h:outputText value="#{dukesBDay.age}"/>
<p><h:outputText value="#{bundle.Instructions}"/>
<p><h:outputText value="#{bundle.YourBD}"/>
ا�?زودن يک کامپوننت input براي دريا�?ت تاريخ تولد کاربر
يکي ديگر از تگ هاي پرکاربرد، تگ inputText است که يک �?يلد متني براي دريا�?ت ورودي از کاربر است. در اين مثال در ص�?حه greeting.jsp تاريخ تولد کاربر دريا�?ت مي شود و مقدارش در متغير YourBD از DukesBDay Bean ريخته مي شود. بدين ترتيب:
پس از کدهاي نوشته شده از مراحل قبل، کدهاي زير را بنويسيد:
يکي ديگر از تگ هاي پرکاربرد، تگ inputText است که يک �?يلد متني براي دريا�?ت ورودي از کاربر است. در اين مثال در ص�?حه greeting.jsp تاريخ تولد کاربر دريا�?ت مي شود و مقدارش در متغير YourBD از DukesBDay Bean ريخته مي شود. بدين ترتيب:
پس از کدهاي نوشته شده از مراحل قبل، کدهاي زير را بنويسيد:
<h:inputText id="userBirthday" value="#{dukesBDay.yourBD}">
</h:inputText>
</h:inputText>
انتساب يک convertor به کامپوننت ورودي
JSF شامل مجموعه از convertor ها و validator هاي استاندارد است که مي توان به کامپوننت نسبت داد. هد�? از آنها اعتبار سنجي داده هاي ورودي و كنترل انطباق آنها با الگويي خاص است. در اينجا ما مي خواهيم نحوه ورود تاريخ توسط كاربر را مشخص نماييم و روي آن كنترل داشته باشيم.
به اين منظور چنين عمل کنيد:
1. تگ زير را در داخل تگ h:inputText اضا�?ه نماييد:
JSF شامل مجموعه از convertor ها و validator هاي استاندارد است که مي توان به کامپوننت نسبت داد. هد�? از آنها اعتبار سنجي داده هاي ورودي و كنترل انطباق آنها با الگويي خاص است. در اينجا ما مي خواهيم نحوه ورود تاريخ توسط كاربر را مشخص نماييم و روي آن كنترل داشته باشيم.
به اين منظور چنين عمل کنيد:
1. تگ زير را در داخل تگ h:inputText اضا�?ه نماييد:
<f:convertDateTime pattern="MM/dd/yyyy"/>
2. براي نمايش الگوي ورود تاريخ به کاربر تگ زير را پس از تگ بسته شدن h:inputText قرار دهيد:
<h:outputText value="#{bundle.Pattern}"/>
3. براي اينکه در صورت بروز خطا هنگام conversion پيغامي به کاربر نشان داده شود لازم است مشخصه converterMessage را به تگ h:inputText اضا�?ه نماييد. اين تگ بدين صورت خواهد شد:
<h:inputText id="userBirthday"
value="#{dukesBDay.yourBD}"
converterMessage="#{bundle.DateError}">
<f:convertDateTime pattern="MM/dd/yyyy"/>
</h:inputText>
value="#{dukesBDay.yourBD}"
converterMessage="#{bundle.DateError}">
<f:convertDateTime pattern="MM/dd/yyyy"/>
</h:inputText>
4. براي مشخص کردن جاي نمايش پيغام خطا به کاربر تگ زير را درست قبل از تگ بسته شدن h:form قرار دهيد. بدين صورت:
<p><h:message for="userBirthday" style="color:red"/>
ا�?زودن دکمه براي submit
درست قبل از تگ message که در مرحله قبل ايجاد کرديد تگ زير را اضا�?ه نماييد:
درست قبل از تگ message که در مرحله قبل ايجاد کرديد تگ زير را اضا�?ه نماييد:
<p><h:commandButton value="#{bundle.Submit}" action="success"/>
در نهايت �?ايل را ذخيره نماييد.
پياده سازي greeting.jsp هم تمام شد. در مطلب بعد، آخرين جزء Application كه ص�?حه response.jsp است را خواهيم ساخت.
پياده سازي greeting.jsp هم تمام شد. در مطلب بعد، آخرين جزء Application كه ص�?حه response.jsp است را خواهيم ساخت.
mahyar_ev | 03:07 PM | Comment(s)(1)
ساخت DukesBDay Managed BeanJanuary 5, 2008 02:52 PM
ا�?زودن Dependency روي Enterprise Bean Module
ماژول firstcup-war به برخي از کلاس هاي firstcup-ejb وابسته است. شما بايد وجود اين وابستگي را به NetBeans اعلام نماييد. بدين ترتيب:
1. روي ماژول firstcup_war کليک راست نماييد و properties را انتخاب نماييد.
2. از category ها Libraries را انتخاب نماييد.
3. روي Add Project کليک کنيد.
4. مسير myexample/firstcup را انتخاب نماييد.
5. پروژه firstcup-ejb را انتخاب کنيد.
6 دکمه Add Project JAR Files را کليک کنيد.
7. توجه کنيد که Build Required Projects تيک خورده باشد.
8. OK را کليک نماييد.
ساخت كلاس DukesBDay و تعري�? متغيرهاي لازم
DukesBDay يک Backing Bean است. منظور از Backing Bean، يک Bean کنترل شده (managed Bean ) توسط JSF است که براي ذخيره سازي داده هاي مربوط به مقادير کامپوننت هاي موجود در ص�?حه JSF به کار مي رود.
DukesBDay در واقع واسط بين ص�?حات JSF و Business Tier است. ص�?حات JSF اطلاعات مورد نياز خود را از اين managed Bean دريا�?ت مي كنند و به آن نيز تحويل مي دهند.
براي ساخت کلاس DukesBDay اين مراحل را انجام دهيد:
ساخت يک کلاس خالي:
1. روي ماژول firstcup-war کليک راست کنيد.
2. از New گزينه Java Class را انتخاب نماييد.
3. نام کلاس را DukesBDay قرار دهيد.
4. Package را com.sun.firstcup.web وارد کنيد.
5. Finish را کليک کنيد.
ا�?زودن Enterprise Bean Reference:
6. درست بعد از سطر تعري�? کلاس (اولين سطر از بدنه کلاس) متغير private زير را به همراه عبارت EJB@ درج نماييد:
ماژول firstcup-war به برخي از کلاس هاي firstcup-ejb وابسته است. شما بايد وجود اين وابستگي را به NetBeans اعلام نماييد. بدين ترتيب:
1. روي ماژول firstcup_war کليک راست نماييد و properties را انتخاب نماييد.
2. از category ها Libraries را انتخاب نماييد.
3. روي Add Project کليک کنيد.
4. مسير myexample/firstcup را انتخاب نماييد.
5. پروژه firstcup-ejb را انتخاب کنيد.
6 دکمه Add Project JAR Files را کليک کنيد.
7. توجه کنيد که Build Required Projects تيک خورده باشد.
8. OK را کليک نماييد.
ساخت كلاس DukesBDay و تعري�? متغيرهاي لازم
DukesBDay يک Backing Bean است. منظور از Backing Bean، يک Bean کنترل شده (managed Bean ) توسط JSF است که براي ذخيره سازي داده هاي مربوط به مقادير کامپوننت هاي موجود در ص�?حه JSF به کار مي رود.
DukesBDay در واقع واسط بين ص�?حات JSF و Business Tier است. ص�?حات JSF اطلاعات مورد نياز خود را از اين managed Bean دريا�?ت مي كنند و به آن نيز تحويل مي دهند.
براي ساخت کلاس DukesBDay اين مراحل را انجام دهيد:
ساخت يک کلاس خالي:
1. روي ماژول firstcup-war کليک راست کنيد.
2. از New گزينه Java Class را انتخاب نماييد.
3. نام کلاس را DukesBDay قرار دهيد.
4. Package را com.sun.firstcup.web وارد کنيد.
5. Finish را کليک کنيد.
ا�?زودن Enterprise Bean Reference:
6. درست بعد از سطر تعري�? کلاس (اولين سطر از بدنه کلاس) متغير private زير را به همراه عبارت EJB@ درج نماييد:
@EJB
Private DukesBirthdayRemote dukesBirthday;
Private DukesBirthdayRemote dukesBirthday;
ا�?زودن property ها به Bean:
7. پس از تعري�? متغير dukesBirthday متغيرهاي زير را بعد از آن درج نماييد:
7. پس از تعري�? متغير dukesBirthday متغيرهاي زير را بعد از آن درج نماييد:
private int age;
private Date YourBD;
private int ageDiff;
private int absAgeDiff;
private Date YourBD;
private int ageDiff;
private int absAgeDiff;
8. با ا�?زودن کدهاي زير به constructor پيش ساخته، متغيرها را initialize نماييد:
age = -1;
YourBD = null;
ageDiff = -1;
absAgeDiff = -1;
YourBD = null;
ageDiff = -1;
absAgeDiff = -1;
ساخت متدهاي دستيابي (Accessor Methods) براي property ها
در اين مرحله با است�?اده از امكانات refactoring موجود در NetBeans متدهاي get و set را ايجاد مي كنيم. بدين ترتيب:
1. روي اديتور کليک راست کنيد.
2. از منوي باز شده گزينه Refactor و سپس Encapsulate Fields را انتخاب نماييد.
3. در �?رمي که باز مي شود، تيک مربوط به getDukesBirthday و setDukesBirthday را برداريد.
4. Next را کليک نماييد.
5. در پنل refactoring روي Do Refactoring کليک کنيد. با اين کار کدهاي مربوط به get و set متغيرها به کلاس اضا�?ه خواهند شد.
ا�?زودن كدهاي لازم جهت دريا�?ت سن Duke
1. ماژول firstcup-war را باز کنيد.
2. قسمت Web Service Refrences را باز کنيد.
3. وارد قسمت زير شويد:
در اين مرحله با است�?اده از امكانات refactoring موجود در NetBeans متدهاي get و set را ايجاد مي كنيم. بدين ترتيب:
1. روي اديتور کليک راست کنيد.
2. از منوي باز شده گزينه Refactor و سپس Encapsulate Fields را انتخاب نماييد.
3. در �?رمي که باز مي شود، تيک مربوط به getDukesBirthday و setDukesBirthday را برداريد.
4. Next را کليک نماييد.
5. در پنل refactoring روي Do Refactoring کليک کنيد. با اين کار کدهاي مربوط به get و set متغيرها به کلاس اضا�?ه خواهند شد.
ا�?زودن كدهاي لازم جهت دريا�?ت سن Duke
1. ماژول firstcup-war را باز کنيد.
2. قسمت Web Service Refrences را باز کنيد.
3. وارد قسمت زير شويد:
DukesAgeService->DukesAgeService->DukesAgePort->getDukesAge
4. از اديتور در �?ايل DukesBDay.java متد getAge را بيابيد. سپس getDukesAge را که در مرحله قبل انتخاب نموده ايد به متد getAge قبل از عبارت return age با ماوس drag نماييد. محتويات اين متد پس از انجام اين عمل چنين خواهد شد:
public int getAge() {
try { // Call Web Service Operation
com.sun.firstcup.webservice.DukesAgeService service =
new com.sun.firstcup.webservice.DukesAgeService();
com.sun.firstcup.webservice.DukesAge port = service.getDukesAgePort();
// TODO process result here
int result = port.getDukesAge();
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
return age;
}
try { // Call Web Service Operation
com.sun.firstcup.webservice.DukesAgeService service =
new com.sun.firstcup.webservice.DukesAgeService();
com.sun.firstcup.webservice.DukesAge port = service.getDukesAgePort();
// TODO process result here
int result = port.getDukesAge();
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
return age;
}
5. در کدهاي متد getAge خط
int result = port.getDukesAge();
را حذ�? کنيد و به جايش عبارت زير را قرار دهيد.
age = port.getDukesAge();
6. خط زير را حذ�? نماييد:
System.out.println("Result = "+result);
ا�?زودن كدهاي دريا�?ت ت�?اوت سن از DukesBirthdayBean
داخل متد getAgeDiff درست قبل از دستور return کدهاي زير را وارد نماييد:
داخل متد getAgeDiff درست قبل از دستور return کدهاي زير را وارد نماييد:
ageDiff = dukesBirthday.getAgeDifference(YourBD);
if (ageDiff < 0) {
setAbsAgeDiff(Math.abs(ageDiff));
} else {
setAbsAgeDiff(ageDiff);
}
if (ageDiff < 0) {
setAbsAgeDiff(Math.abs(ageDiff));
} else {
setAbsAgeDiff(ageDiff);
}
ا�?زودن Imort ها
1. روي اديتور کليک راست کنيد.
2. گزينه Fix Imports را انتخاب کنيد.
3. عبارت java.util.Date را براي کلاس Date انتخاب نماييد.
4. OK را کليک کنيد.
در خاتمه �?ايل را ذخيره نماييد.
تنظيم پيکربندي DukesBDay
تکنولوژي JSF امکان است�?اده از �?ايل هاي Configuration را براي مقداردهي اوليه، پيکربندي و ذخيره سازي managed Bean ها در 3 scope زير مي دهد:
• Request که وقتي کاربر ص�?حه اي را submit مي کند آغاز مي شود و پس از ارسال پاسخ پايان مي پذيرد.
• Session که با اولين دسترسي کاربر به ص�?حه آغاز مي شود و پس از خاتمه يا�?تن session کاربر ، پايان مي يابد.
• Application که تا زماني که سرور، Application را متوق�? نکرده اعتبار دارد.
Scope در managed Bean مثال ما session است.
به محض اينکه Bean ، پيکربندي شد يک ص�?حه JSF مي تواند آن را ايجاد کند و به آن دسترسي داشته باشد. در اينجا ما پيکربندي DukesBDay managed Bean را انجام مي دهيم:
1. ماژول firstcup-war را باز کنيد.
2. �?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کرده و از JavaServer Faces گزينه Add Managed Bean را انتخاب کنيد.
5. نام Bean را dukesBDay وارد کنيد.
6. کلاس را com.sun.firstcup.web.DukesBDay قرار دهيد.
7. از منوي scope گزينه session را انتخاب کنيد.
8. در قسمت Description نيز عبارت DukesBDay backing bean را وارد کنيد.
9. Add را کليک کنيد. با اينکار عناصر XML مربوطه به �?ايل اضا�?ه مي شوند.
10. �?ايل را ذخيره نماييد.
از Application نمونه اي ما تنها ص�?حات greeting.jsp و respone.jsp باقي مانده كه در مطالب آينده آنها را پياده سازي خواهيم نمود. براي يادآوري اين تصوير را دوباره مشاهده كنيد.
1. روي اديتور کليک راست کنيد.
2. گزينه Fix Imports را انتخاب کنيد.
3. عبارت java.util.Date را براي کلاس Date انتخاب نماييد.
4. OK را کليک کنيد.
در خاتمه �?ايل را ذخيره نماييد.
تنظيم پيکربندي DukesBDay
تکنولوژي JSF امکان است�?اده از �?ايل هاي Configuration را براي مقداردهي اوليه، پيکربندي و ذخيره سازي managed Bean ها در 3 scope زير مي دهد:
• Request که وقتي کاربر ص�?حه اي را submit مي کند آغاز مي شود و پس از ارسال پاسخ پايان مي پذيرد.
• Session که با اولين دسترسي کاربر به ص�?حه آغاز مي شود و پس از خاتمه يا�?تن session کاربر ، پايان مي يابد.
• Application که تا زماني که سرور، Application را متوق�? نکرده اعتبار دارد.
Scope در managed Bean مثال ما session است.
به محض اينکه Bean ، پيکربندي شد يک ص�?حه JSF مي تواند آن را ايجاد کند و به آن دسترسي داشته باشد. در اينجا ما پيکربندي DukesBDay managed Bean را انجام مي دهيم:
1. ماژول firstcup-war را باز کنيد.
2. �?ولدر Web Pages و سپس WEB-INF را باز کنيد.
3. روي faces-config.xml دبل کليک نماييد.
4. روي اديتور کليک راست کرده و از JavaServer Faces گزينه Add Managed Bean را انتخاب کنيد.
5. نام Bean را dukesBDay وارد کنيد.
6. کلاس را com.sun.firstcup.web.DukesBDay قرار دهيد.
7. از منوي scope گزينه session را انتخاب کنيد.
8. در قسمت Description نيز عبارت DukesBDay backing bean را وارد کنيد.
9. Add را کليک کنيد. با اينکار عناصر XML مربوطه به �?ايل اضا�?ه مي شوند.
10. �?ايل را ذخيره نماييد.
از Application نمونه اي ما تنها ص�?حات greeting.jsp و respone.jsp باقي مانده كه در مطالب آينده آنها را پياده سازي خواهيم نمود. براي يادآوري اين تصوير را دوباره مشاهده كنيد.
mahyar_ev | 02:52 PM | Comment(s)(0)
ساخت firstcup Web ClientJanuary 1, 2008 11:18 AM
براي ساخت Web Client کارهاي زير را بايد انجام دهيد:
• تنظيم firstcup-war به اين منظور که JSF را پشتيباني نمايد.
• ساخت يک Web service client
• ساخت يک resource bundle براي نگهداري پيغام هايي که توسط ص?حات JSP است?اده مي شوند.
• تنظيم resource bundle در ?ايل configuration
• ساخت کلاس مديريت DukesBDay
• تنظيم DukesBDay در ?ايل configuration
• ساخت ص?حه greeting.jsp
• تنظيم قواعد navigation
• ساخت ص?حه response.jsp
در ادامه، مراحل بالا يک به يک توضيح داده خواهند شد.
تنظيم firstcup-war جهت پشتيبالي JSF
همه Application هاي JSF بايد شامل يک map به نمونه FacesServlet در ?ايل deployment descriptor باشند. نمونه FacesServlet درخواست ها را دريا?ت مي کند و براي پردازش به life cycle مي ?رستد. همچنين مقداردهي اوليه منابع را انجام مي دهد.
اين mapping بدين صورت انجام مي شود:
1. روي ماژول firstcup-war کليک راست کنيد و properties را انتخاب نماييد.
2. از category ها framework را انتخاب نماييد.
3. روي Add کليک کنيد.
4. از ليست انتخاب ها، JavaServer Faces را انتخاب نماييد و OK را کليک کنيد.
5. Servlet URL mapping را به */firstcupWeb/ تغيير دهيد. اين مسير نمونه FacesServlet است.
6. تيک Validate XML را برداريد.
7. OK را کليک کنيد.
?وروارد ص?حه index.jsp به greeting.jsp
مي خواهيم بلا?اصله پس از اجراي اين Web Application به ص?حه greeting.jsp برويم. لذا بايد index.jsp را به greeting.jsp ?وروارد نماييم. بدين صورت:
1. ماژول firstcup-war را باز کنيد و روي Web Pages دبل کليک نماييد.
2. روي welcomeJSF.jsp کليک راست کرده بوسيله Delete آن را حذ? نماييد.
3. روي index.jsp دبل کليک کنيد.
4. هر چيزي که داخل اين ص?حه نوشته شده است را پاک کنيد.
5. اين عبارت را در ص?حه index.jsp وارد کنيد:
6. ?ايل را ذخيره کنيد.
توضيح اينكه ص?حه greeting.jsp را بعدا خواهيم ساخت.
ساخت Web Service Client براي وب ماژول firstcup-war
اين ماژول از وب سرويس firstcup-dukes-age است?اده مي نمايد. به اين منظور لازم است يک Web Service Client در آن ايجاد نماييد. بدين صورت:
1. ماژول firstcup-war را انتخاب کنيد.
2. از منوي File گزينه New File را انتخاب کنيد.
3. از category ها گزينه Web Services را انتخاب کنيد.
4. از انواع ?ايل، Web Service Client را ايجاد نماييد.
5. Next را کليک کنيد.
6. WSDL URL را انتخاب کنيد.
7. در قسمت WSDL URL مقدار زير را وارد کنيد:
http://localhost:8080/DukesAgeService/DukesAgeService?WSDL
8. در ?يلد package نيز اين مقدار را وارد نماييد:
com.sun.firstcup.webservice
9. Finish را کليک کنيد.
ساخت Resource Bundle
منظور از Resource Bundle ?ايلي است از نوع properties كه در آن كليه متون ثابت، شامل پيغام هاي خطا و عباراتي كه در ص?حه jsp به كار مي روند، تعري? مي شود. نحوه ساخت آن بدين ترتيب است:
1. ماژول firstcup-war را انتخاب نماييد.
2. از منوي ?ايل گزينه New File را انتخاب کنيد.
3. category را other و نوع ?ايل را Properties File انتخاب کنيد و Next را کليک کنيد.
4.نام ?ايل را WebMessages وارد نماييد.
5. ?ولدر را نيز اين مسير وارد کنيد:
src/java/com/sun/firstcup/web
6. Finish را کليک نماييد.
7. پس از اينکه NetBeans ?ايل را ايجاد نمود متن زير را در آن کپي نماييد:
Welcome=Hi. My name is Duke. Let us find out who is older -- You or me
DukeIs=Duke is
YearsOldToday=years old today.
Instructions=Enter Your birthday and click submit.
YourBD=Your birthday
Pattern=MM/dd/yyyy
DateError=Please enter the date in the form MM/dd/yyyy.
YouAre=You are
Year=year
Years=years
Older=older than Duke!
Younger=younger than Duke!
SameAge= the same age as Duke!
Submit=Submit
Back=Back
8. ?ايل را ذخيره کنيد.
9. در صورت نياز مي توانيد براي هر زباني مانند زبان ?ارسي يک Properties File مشابه بالا تهيه نماييد.
10. توسط گزينه Refresh All Files از منوي File همه ?ايل ها را Refresh نماييد.
تنظيم و پيکر بندي Resource Bundle
1. ماژول firstcup-war را باز کنيد. از ?ولدر Web Pages ?ولدر WEB-INF را باز کنيد.
2. روي faces-config.xml دبل کليک نماييد.
3. قبل از تگ پاياني عنصر faces-config عناصر زير را اضا?ه نماييد:
<application>
<resource-bundle>
<base-name>com.sun.firstcup.web.WebMessages</base-name>
<var>bundle</var>
</resource-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>es</supported-locale>
</locale-config>
</application>
4. ?ايل را ذخيره نماييد.
در مطلب بعد ساخت كلاس DukesBDay از اجزاي web client را خواهيم ديد. براي يادآوري اين تصوير را ببينيد.