• 0
prog_Basem

الدرس الاول فى Struts

سؤال

بسم الله الرحمن الرحيم

ان شاء الله هشرح Struts لانى ذاكرتها وعجبتنى جدا وحبيت افيد اعضاء المنتدى بالاشياء اللى تعملتها فى struts ويارب اقدر افيدكم

Struts Frame work is the implementation of Model-View-Controller (MVC) design pattern for the JSP

طب ايه هو MVC Designpattern؟

MVC architecture بيقسم application الى 3 اجزاء

Model:

وده المسئول عن عمليه retrieve للداتا من الداتا بييز مثلا او عمليه اضافة فى الداتا بيز

All the business logic are implemented in the Model.

View:

مسئول عن عملية عرض البيانات بالنسبة للuser او عرض الفريمات اللى هيدخل user فيها البيانات

Controller:

وده بيكون مابين ModelوView واللى بييقى مسئول عن عمليه الربط مابينهم

طيب نطبق الكلام ده على Struts

فى struts :

model عبارة عن كلاس الجافا زى Java Beans او EJB اة اى كلاسات جافا بتعمل عمليه اضافة مثلا على داتا بيز

View: عبارة عن Jsp or HTML pages وفيها بيتم عمليه عرض البيانات لل userاو ادخال بيانات

Controller :عبارة عن ملف xml وservlet

معلش اول درس صغير لانى مشغول جدا النهاردة لكن حبيت احط البداية فقط علشان اشوف تفاعل الاعضاء معايا او بمعنى اصح اكمل ولا لا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

29 إجابة على هذا السؤال .

  • 0

السلام عليكم باسم الموضوع جمييييل ومهم جدا ودى من اقوى مناطق الجافا ياريت تكمل

وتبعتلنا الكتاب اللى قريت منه حتى تعم الفائدة وجزاك الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

موضوع رائـــــــــــــــــــــــــــع واسلوب جميل

توكل على الله اكمل وانا سوف اكون من المتابعين

بالتوفييييييييييييييييييييييييييييق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لسلام عليكم

ان شاء الله هنبتدى الدرس الثانى من الstruts

الصورة دى بتضوح ازاى view,Controller,Model مرتبطين ببعض

http://img293.imageshack.us/img293/3231/vi...lermodelmx5.jpg

انا هستخدم NetBeans ومش عارف كلكم بتعرفوا تستخدموا NetBeans ولا لا لذلك رفعت الصور دى علشان توضح ازاى تعمل create struts project

انا طبعا مش هبتدى من انك ازاى تسطب نت بينز لكن هبتدى من اول ماتفتح النت بينز علشان تبدأ مشروع struts

الصورة الاول هنا بتوضح ازاى اعمل Newproject

26030312um4.jpg

بعد كده بنختار نوع Application اللى هنستخدمه وفى حالتنا طبعا هيكون webApplication

18520085xb0.jpg

وبعدين بنحدد مكان Application هيبقى فين

96510094tw3.jpg

بختار FrameWork اللى هنشتغل عليها

81663421tp4.jpg

ويبقى كده عملنا Create struts project

هتلاقى عندك صفحتين jsp موجودين اللى هما index,welcomestruts وده بيبقى مثال Default فى النت بينز

احنا هنعمل برنامج بسيط ياخد Name,Age من الuser ويطبعهم فى الصفحة التانية

هنكتب فى صفحة index اللى احنا عاوزينه

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="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>Home Page</title>
</head>
<body>
<html:form action="/view" method="post">
<table border="0">
<tr>
<td>
Name:<html:text property="name" />
</td>
</tr>

<tr>
<td>
Age:<html:text property="age" />
</td>
</tr>
</table>
<html:submit property="submit" value="print" />
</html:form>
</body>
</html>

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طب ايه html:form دى ?

عبارة عن Struts Tags بستدعيها عن طريق <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>

ودى بتبقى زى Tags خاصة بعمليه العرض زى HTMLTags العادية ممكن تستخدمها طبعا وممكن لا براحتك لكن يفضل انك تستخدمها

الباقى كله مفهوم لانه نفس HTMLTags

لو حاولت تعمل run للبروجكت علشان تشوف الصفحة انت عاملها ازاى مش هتفتح معاك هيطلعلك اكسبشن طب لييييييييييييه؟!!!!!!!

لان احنا قلنا فى struts لازم يكون 3 اجزاء موجودين وهم view,controller,model وانا عندى view فقط

هنبتدى نعمل جزء Model وهيبقى عبارة عن Bean اسمه person

41copyrt6.jpg

42copyng3.jpg

5copyco7.jpg

هيفتح كلاس جافا عادى هتلاقى احذف الموجود بداخل الكلاس دى كلها امثلة بيعملها النت بينز من نفسه وهتلاقى method غريبة عندك اسمها validate احذفها برضه وهنوضحها بعدين دى بتعمل ايه بالظبط

ابدأ فى كتابة attributes بتاعتك بس هنا لازم تكون بنفس اسم text اللى انت عملتها فى صفحة jsp يعنى هيبقى name,age

كده احنا عملنا Model,view يبقى ناقص Controller

هنبنى الاول الصفحة اللى هنطبع فيها name,age

وفرضا هيبقى اسمها printPage مثلا

هتبقى فى web pages زى اى صفحة jsp عادية

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
--%>

<!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>print Page</title>
</head>
<body>
<table border="0">
<tr>
<td>Name is <%= request.getAttribute("name") %> </td>
</tr>
<tr>
<td>Age is <%= request.getAttribute("age") %></td>
</tr>
</table>
</body>
</html>

هتسأل دلوقتى تقول طب اي

<%= request.getAttribute("age"

انت عملت pass للقيم ازاى فى الصفحة الثانية؟

احنا الاول خلصنا كده صفحات view وModel هنبنى بقه controller وبعدها هتفهم ازاى القيم انا طبعتها فى الصفحة الثانية

هنبنى كلاس اسمه من نوع strutsAction وده اللى هيقوم بعملية تخزين البيانات فى Model وبعدها يفتح الصفحة الثانية بعد مايكون عمل Pass للبيانات

نفس الخطوات واحنا بنبى StrutsActioBean هنفذها هنا لكن واحنا بنختار نوع الكلاس اللى هبنبيه هنختار strutsAction بدل strutsActionFormBean

actioncopyyq6.jpg

createactioncopyom3.jpg

هنكتب اسم الكلاس وpath وده اللى هنتعامل بيه فى صفحات jsp

بعد مانفتح الكلاس هنلاقى method اسمها excute بتستقبل 4 parameters واللى هنستخدمه دلوقتى form

/*
* print.java
*
* Created on 01 أغسطس, 2007, 11:48 م
*/

package com.myapp.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
/**
*
* @author BaseM
* @version
*/

public class print extends Action {

/* forward name="success" path="" */
private final static String SUCCESS = "success";

/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
person p = (person) form;
request.setAttribute("name",p.getName());
request.setAttribute("age",Integer.toString(p.getAge()));
return mapping.findForward("print");

}
}

هنفهم دلوقتى كل كلمه كتبناها

person p = (person) form; دى علشان نحول form اللى بنستقبلها من صفحة jsp الى person ومفيش مشكله هنا لان اسماء texts هى نفس اسماء attributes الموجوده عندى فى Bean

وبعد كده الباقى كود servlet مفهوم طبعا

هنسيب اخر جملة وهو return method هتجاهلها دلوقتى

نفتح بعد كده ملف struts-config.xml وده هتلاقى في فولدر web-INF

الاول بس احب اوضحلكم ان struts بتتعامل بActions علشان security يعنى مش بنتعامل مع الصفحات كى jsp مثلا نكتب بعد صفحة index نروح لصفحة print انما هنكتب بعد صفحة index نفض الاكشن كذا وهيبدأ يشوف الاكشن

مطابق لأيه بالظبط فى ملف struts-config

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">


<struts-config>
<form-beans>
<form-bean name="person" type="com.myapp.struts.person"/>

</form-beans>

<global-exceptions>

</global-exceptions>

<global-forwards>
<forward name="print" path="/print.do"/>
</global-forwards>

<action-mappings>
<action input="/" name="person" path="/view" scope="session" type="com.myapp.struts.print"/>

<action path="/print" forward="/printPage.jsp"/>
</action-mappings>

<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

<message-resources parameter="com/myapp/struts/ApplicationResource"/>

<!-- ========================= Tiles plugin ===============================-->
<!--
This plugin initialize Tiles definition factory. This later can takes some
parameters explained here after. The plugin first read parameters from
web.xml, thenoverload them with parameters defined here. All parameters
are optional.
The plugin should be declared in each struts-config file.
- definitions-config: (optional)
Specify configuration file names. There can be several comma
separated file names (default: ?? )
- moduleAware: (optional - struts1.1)
Specify if the Tiles definition factory is module aware. If true
(default), there will be one factory for each Struts module.
If false, there will be one common factory for all module. In this
later case, it is still needed to declare one plugin per module.
The factory will be initialized with parameters found in the first
initialized plugin (generally the one associated with the default
module).
true : One factory per module. (default)
false : one single shared factory for all modules
- definitions-parser-validate: (optional)
Specify if xml parser should validate the Tiles configuration file.
true : validate. DTD should be specified in file header (default)
false : no validation

Paths found in Tiles definitions are relative to the main context.
-->
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>

<!-- ========================= Validator plugin ================================= -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

</struts-config>

اهم حاجة فى الملف ده 3 اجزاء بالنسبة لينا دلوقتى هم :form-beans,global-forwards,action-mappings

هتلاقى مابين Form-bean Tags اسم Bean اللى احنا انشأناه قبل كده فيه اسمه ومكانه فين

action-mappings دى هنلاقى موجود مابين Tags اسم الاكشن اللى احنا انشأناه ومعلومات عنه , وهتلاقى كمان اسم صفحة welcomestruts دى نحذفها لانها متعلقة بالمثال اللى بيظره النت بينز اول ماتفتح proje

project

كده كل حاجة متعرفه بداخل صفحة strtus-config ناقص نعرف بداخلها الصفحة الثانية اللى هنطبع فيها

هنكتب مابين action-mappings Tags

<action path="/print" forward="/printPage.jsp"/>

ودى معاناها ان لما اربط path اللى اسمه print وده هيبقى اسمه action بالصفحة printPage

ونكتب <forward name="print" path="/print.do"/> فى global-forwards

وglobal-forwards علاقتها بس بكلاس StrutsAction اللى احنا انِشأناها ويبقى كده فهمنا return method الموجوده بداخله

معناها اذهب لاسم print واعرف Action المقابل ليه ومن action-mappings اعرف الصفحة اللى هتذهب اليها

انا عارف ان الدرس المرة دى طويل مع انه application صغير لكن دى StrutsArchitecture دى لو اتفهمت كويس جدا باقى الدروس هتبقى سهلة ان شاء الله

بالنسبة للكتب اللى قرأت منها هما كذا كتاب مع شوية مقالات على النت وسألت مجموعة من زمايلى لكن مكانش من مصدر محدد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

مشكور اخي على المجهود الكريم الرائع مع تمنياتي بالاستمرار

لكن يوجد عندي بعض الاسئلة وهي :

لاول بس احب اوضحلكم ان struts بتتعامل بActions علشان security يعنى مش بنتعامل مع الصفحات كى jsp مثلا نكتب بعد صفحة index نروح لصفحة print انما هنكتب بعد صفحة index نفض الاكشن كذا وهيبدأ يشوف الاكشن

هل ال Struts هي فقط للفصل الاكشن بتاع الصفحة ؟؟ واذا كان هناك مهام اخرى اريد ان تزكرها

وهل يستحق فصل الاكشن كل هذا العناء السابق ؟ حيث كما تعلم يمكن عمل المثال السابق بكل سهولة باستخدام ال jsp

بالنسبة لل (Person (Model هل هي كلاس javaBean عادية تحتوي على الدوال () setXxx() getXxx؟

وشكرا على هذا الدرس القيم اكمل وانا من المتابعين

مع تمنياتي بالتوفيق للجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخى مصطفى struts ممكن تكتب فيها لنك الصفحة اللى انت عاوز تروح ليها على طول لكن يفضل ان انت تحط اسماء الاكشن وليست الصفحات علشان مفيش اى مستخدم عندك يعرف انت رايح على اى صحفة وده طبعا بيبان فى مكان url اللى موجود فى Browser هيبان اسم الاكشن فقط

واسم الاكشن هيشوف المقابل ليه فى action-mapping الموجود فى struts-config ويذهب للصفحة المقابله لاسم الاكشن

وخلى بالك من Struts Frame work is the implementation of Model-View-Controller (MVC) design pattern for the JSP

هو عبارة عن حل لمشكله كتابه كل الكود فى صفحة jsp

بالنسبة لل person هو كلاس javaBean عادية لكن بيكون serlizable وبيكون extends ActionForm انا مش عارف الصراحة ايه الفايدة من ده

وانا بعتذر ان الدرس طويل لان دى اساسيات مش هينفع انى اقسمها , كل ده لازم كان يكتب مرة واحدة وانا حاولت ابسط الموضوع على قد ماأقدر والله

ويارب اكون قدرت افيدكم

ودى لنك من النكات المفيدة جدا اللى اتعملت منها

ٍStruts Tutorial

بالنسبة للكتاب ياأخ dr-abdelrahman انا مقرأتش من كتاب معين لكن هرفعلك الكتب المفيدة واضع اللنك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
لكن لما لم تضع لنا الكتاب الذى انت تطرح منة الموضوع علشان نتابع صح؟
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

إستمر على بركة الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
  • 0

ياريت اشوف الكود علشان اقدر ارد عليك

بالنسبة لبداية الproject بتبقى منين فهى بتبدى من صفحة ndex الموجوده عندك وده Default وممكن تغيرها عن طريق ملف web.xml لان ده الConfiguration file بيشوف اول صفحة هتبتدى عنده اول متعمل run للبرنامج

اول ماتفتح صفحة الindex وتكتب فيها الاسم والسن وتضغط Submit يشوف الاكشن الموجود وينفذه

هيلاقى view

يذهب لملف struts-config ليبحث عنه وعندما يجده يجد المقابل له فى action-mapping وهيكون عندنا كلاس print ومكتوب موجود داخل اى package ويذهب له لكى ينفذ مابداخله

بعد التنفيذ يصل لجمله return يجد كلمة print

يذهب لملف struts-config ليبحث فى global-forward عنها ليجد امامها action

بعد كده يذهب astion-mapping لكى يرى هذا الاكشن مقابل لصفحة ايه بالظبط

وجد صفحة printpage.jsp يذهب اليها ليقوم بتنفيذ مابداخلها

وانا على العموم رفعت Application بسيط كده مربوط بداتا بيز Access انصحك ياأخ dr_abdelrahman بتشغيله اولا وتقراه وان شاء الله هتعرف ايه المشكله عندك

ولو لسه محلتهاش المشكله دى ياريت تبعتلى الكود وان شاء الله اقدر احل المشكله دى بس ياريت تقولى ان بتشتغل بأى ID

http://www.4shared.com/file/19684373/b58d8197/struts-DB.html

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الدرس الثالث فى struts :

ان شاء الله هنتكلم النهاردة عن Internationalization

فرضا ان عندى شركة وليها موقع بيخدم اماكن مختلفة كتيره فى العالم وكل بلد ولها لغتها وكل مستخدم عندك فى اى بلد محتاج توفر له ان يكون الموقع بلغته

هنبنى كذا صفحة jsp كل صفحة بلغة معينه خطأ طبعا

هنستخدم حاجة اسمها Internationalization ودى بتوفرلى خدمه Multiple Language

فرضا انى عاوز موقع يكون موجود فيه اللغة العربية والانجليزية والفرنسية

ببساطة جدا هكتب فى ملف عندى فى struts الكلمه باللغة الانجليزية وقصادها اللغة العربية المقابله لها وكذلك اللغة الفرنسية

الملف ده هيبقى اسمه ApplicationResource موجود مع Sources package مع كلاسات الاكشن ولو فتحته هتلاقى فيه رسايل الخطأ اللى بتظهرلك لو انت بتشغل البرنامج وكان فيه خطأ معين حصل عندك هتلاقى الرسايل اللى كانت ظهرتلك متخزنة فى الملف ده والملف ده فعلا هنستخدمه بعد كده لو اردنا اظهار رسالة خطا معين للمستخدم وهى عبارة عن validation ودى ان شاء الله هتبقى فى الدرس القادم.

دلوقتى عندنا فى البرنامج مثلا زى البرنامج اللى انا رافعه هدخل بيانات معينه للطالب وهى اسمه والرقم الاكاديمى

محتاج انها تظهرلى كمستخدم عربى (الاسم , الرقم الاكاديمى) ولو مستخدم انجليزى(Name, ID) طل ايخ الحل

كليك يمين على الملف ده واختار Open هتلاقى عندك جدول عبارة عن 2Columns الاول اسمه key والثانى اسمه default Language وبتكون English

انا عاوز اضيف اللغة العربية : كليك يمين على الملف اختار Add Locale واختار( اللغة العربية / مصر) مثلا .

هجد ان Column اضيف للغة العربية

ابدأ اكتب فى الجدول الكلمات اللى محتاج يتعملها Internationalizatoin وهى الاسم والرقم الاكاديمى

Key : task.id مثلا

اللغة الانجليزية ID:

اللغة العربية : الرقم الاكاديمى

Key : task.name

اللغة الانجليزية: Name

اللغة العربية : الاسم

محتاج انى استدعيها طبعا فى صفحة jsp هستدعى Library وهيكون uri لها

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>

ودى علشان اقدر اتعامل بيها مع ملف ApplicationResource

طبعا الجمله دى مفهومة لانها طريقة استدعاء بسيطة جدا نفس طريقة استدعاء Library in jsp

احذف الجزء اللى Name فى الصفحة اوضع مكانها

<bean:message key="task.name"/>

وبكده انا استدعيتها بإسم الkey لها وابدأ اعمل run هلاقى انه طبعلى كلمه Name زى ماانا كاتبها ولو انا عاوز اشوف الكلمه العربى

فرضا انت بتستخدم InternetExplorer من Tools اختار Internet option -< - Languages --< هتلاقى موجود اول لغة الانجليزية وتحتها العربية اضغط على اللغة العربية واعملها Move up ولو طبعا مش موجودة ضفها عن طريق Add وضغط ok واعمل refresh للصفحة هتلاقى ان الكلمة العربية (الاسم) ظهرت مكان Name

احب انبه لحاجتين:

1- ان مش هينفع تتعمل struts وانت متعرفش jsp ,servlet

2- لازم تجرب تعمل الحاجات دى بنفسك علشان تتعملها كويس لان struts صعبة شويه فى بدايتها لكن بعد كده هتلاقى سهلة جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فى البرنامج اللى كنت رافعه قبل كده Struts_DB وعلى العموم هاكتب فيه Internationalization وارفعه تانى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك اخي الكريم

عندي سؤال : اذا عندي ملفين ApplicationResource واحد للغة العربية و الآخر للغة الانجليزية

كيف يمكنني التحويل من ملف لاخر بواسطة الضغط على لنك في صفحة jsp

سبق وحاولت تجربة هذه الطريقة و لم انجح ... وبعد قرائتي لشرحك شجعتني على طرح السؤال .. و سأعيد المحاوله ان شاء الله تعالى في تنفيذ هذه الطريقة

وان استطعت انجازها سأوافيكم بالطريقة !

وشكرا مره اخرى ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اسف جدا على التأخير كل هذه الفترة

http://www.4shared.com/file/23455184/88ee8..._struts-DB.html

دى لنك البرنامج الاول لكن بعد وضع Internationalization والداتا بيز موجودة فى البرنامج الاول فمحبتش انى ارفعها تانى

بالنسبة للاخ على فأنا الحقيقة عمرى ماجربت الموضوع ده قبل كده وياريت لو عرفت دى بتتعمل ازاى تبقى تقولنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Validation

انا عارف انى اتأخرت كتير جدا فى الدرس ده لكن انا اسف جدا

فيه كذا طريقة وتوع لل validation لكن انا مش هشرح غير طريقة واحدة وهى اسهل طريقة

لو تفتكروا هتلاقينى فى اول درس كنت كاتب انك وانت بتنشئ ActionFormBean فى النت بينز هتلاقيه انشأ attributes وهتلاقى ميثود اسمها Validate وقلت احذفوها دلوقتى وهنفهمها بعدين

   public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (getFName() == null || getFName().length() < 1) {
errors.add("name", new ActionMessage("error.FName.required"));
// TODO: add 'error.name.required' key to your resources
}
if (getLName() == null || getLName().length() < 1) {
errors.add("name", new ActionMessage("error.LName.required"));
// TODO: add 'error.name.required' key to your resources
}
if ( Integer.toString(getId()) == null ) {
errors.add("name", new ActionMessage("error.ID.required"));
// TODO: add 'error.name.required' key to your resources
}
return errors;
}

ممكن تقوم من خلالها بعمليه validation لأى attribute موجود فى الكلاس هذا Bean وده طبعا هيبقى مفابل له فى صفحة jsp , textField مثلا ففى حالة ان user لو ماأدخلش البيانات فى textField المحدد سوف يقوم بإظهار رسالة خطأ للمستخدم

بداخل هذه الميثود سوف تقوم بإنشاء object من نوع ActionErrors وعن طريق هذا الاوبجكت بقوم بإضافة errors اللى انا محتاج اطبعها فى حالة ان user لم يقوم بعمليه ادخال لمتغير معين موجود فى هذا bean

			errors.add("FName", new ActionMessage("error.FName.required"));

انا كده بعمل check لو وجدت FNanme موجود بnull ضيف رسالة الخطأ new ActionMessage("error.FName.required") وفى صفحة jsp اتعامل معاها عن طريق FName

طبعا هو هنا رسالة الخطأ مش هتكون error.FName.required ولكن ده Key الموجود فى ملف ApplicationResource واللى هيروح يشوف قيمته ويطبعها

اوضح اكتر

هفتح ملف ApplicationResource واقوم بNew property ويكون key= errors.FName.required

وقيمته مثلا: Please Enter your First Name كده تمام

افتح صفحة jsp الموجود فيها textField المرتبط بFName attribute واضيف هذا التاج <html:errors/>

وفى المكان اللى احب ان رسالة الخطأ دى تنطبع فيه على الصفحة

فيه حاجة انا هضيفها كمان هتضوحلكم اكتر ايه اهمية ملف ApplicationResource

لو تلاحظ فى الملف ده هتلاقى موجود لما تعمل كليك يمين وتختار Edit فى الجدول اللى هيظهرلك هتلاقى موجود من ضمن keys : errors.prefix, errors.suffix

دول بيقوم باستدعاؤهم لما تظهر رسالة error

Errors.prefix errormessage errors.suffix =

<span style="color: red"> Please Enter your First Name </span>1

اعتقد بكده يبقى فهمتوا ازاى رسالة الخطأ عندكم بتنطبع على الصفحة وباللون الاحمر

انا بكده خلصت شرح struts لكن طبعا هى لسه فيها حاجات كتيره لكن ده اللى انا وصلتله فى مذاكرتى لها وانا اسف ان كنت بطول عليكم مابين كل درس ودرس لكن نظرا لانى مشغول فى كذا حاجة مابين الدراسة والمشاريع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اخي العزيز كنت رائع في الشرح لكن لوكان الدرس عربي لكان اسهل

كانت عندي خبرة في الجافا والان بفضل فهمت سترتس

الوصلتين لم تعمل

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حقا درس رائع جدا، لقد إستفدت منه الكثير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا جزيلا للجهد المبذول ..

و لكن فعلا ارجو منك رجاء خاص و حار ان تحاول الكتابة باللغة العربية الفصحى الواضحة و المفهومة لدينا اجمعين

الكلمات المصرية العامية صعبة علينا بعض الشئ..

و بارك الله فيك... بانتظار المزيد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

هل يمكن ارسال البين الكل ب الركوسة

ثم استرجعه وكل الخصائص في صفحه jsp

مثلا

<html>
<head>
<title>KickStart: Greeting</title>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<%Beans.Bean1 vBean1 = request.getAttribute("MonBean1");%>
<h1><%=vBean1.getName()%></h1>
</td>
</tr>
</table>
</body>
</html>

package Actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class Action1 extends org.apache.struts.action.Action {
public Action1() {
}

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//request.setAttribute("Name", ((Beans.Bean1)form).getName());
request.setAttribute("MonBean1", ((Beans.Bean1)form));
return mapping.findForward("GoToPage2");
}
}

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Dear Brother

Good day for you

I'd like to add some comments

when we mention MVC and mention that it's a design pattern that organize your application. why would we use it and what is the benefit

1- MCV is used to isolate the the thee layers (Data Access layes which mostly is Database and might be XML or any datasource, Business layer where your application behavior resides, and finally the Presentation layer which generates the End-User interface)

2- MCV is created to solve many points

a. Most developers are not strong in the three areas, for example a developer who is mastering the DB access (jdbc for example) is usually to professional in presenation layey like html, javascript and css so it's very good idea to have different developers work on the same appliation the simplest case is one developer for each layer. and now since that each one of them is responsible for developing a layer then it's easier to seperate the code for each of them.

b. when the three layers are seperated correctly the code will be easier to maintain. and actually this is one of the most tadious problems that developers are facing.

c. when the three layers are totally seperated then you might change your interface tech without afffecting the application. like change the presentation layer from web interface into Swing for exampl.

so the summary is .. MVC is a design pattern that would really makes the development process easier especially when talking about meduim to large applications that need a team not a one man show.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

حولة الرسالة الى

Chers frères

Bon jour pour vous

J'aimerais ajouter quelques commentaires

Quand on parle de MVC et de mentionner qu'il s'agit d'un modèle de conception qui organisent votre demande. Pourquoi on devrait l'utiliser et quel est le bénéfice

1 - PCI est utilisé pour isoler les couches les toi (Data Access layes qui est le plus souvent de base de données et risque d'être ou de toute source de données XML, Business couche où votre demande comportement réside, et, enfin, la couche de présentation qui génère l'interface de l'utilisateur final)

2 - MCV est créé pour résoudre de nombreux points

A. La plupart des développeurs ne sont pas forts dans ces trois domaines, par exemple, qui est un développeur maîtrisant l'accès DB (jdbc par exemple) est généralement de professionnels en presenation layey comme HTML, JavaScript et CSS, donc c'est très bonne idée d'avoir différents développeurs de travailler sur le Appliation même le cas le plus simple est un développeur pour chaque couche. Et maintenant depuis que chacun d'eux est responsable du développement d'une couche alors qu'il est plus facile de séparer le code pour chacun d'eux.

B. Lorsque les trois couches sont séparées correctement le code sera plus facile à entretenir. Et en fait il s'agit de l'un des plus tadious problèmes que les développeurs sont confrontés.

C. Lorsque les trois couches sont totalement séparés puis vous pouvez modifier votre interface de technologie sans afffecting la demande. Comme changer le niveau de présentation de l'interface Web en Swing pour exampl.

Si le résumé est .. MVC est un modèle de conception qui rend le processus de développement plus facile surtout lorsqu'il s'agissait de meduim aux grandes

applications qui ont besoin d'une équipe pas un seul homme sho

قلم اجد ردا لسؤالي

هل يمكن استرجاع البين كله في jsp

شكرا

تم تعديل بواسطه زكيري عبد العالي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ملاحظة للجميع الكتابة بالغلة العامية او الاجنبية مخالف لقواعد المنتدى و الادارة تحارب هذه الظهارة بشكل جدي

ارجو من الجميع الالتزام لما فيه مصلحة العامة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .