וובמאסטר - תיכנות ובניית אתרים

STRUTS חלק א'

עדי לב/‏ 10 מרץ, 2005
F+
F-

מבוא:

STRUTS הוא מסגרת –FRAMEWORK - לפיתוח GUI בJSP הנפוץ ביותר במערכות לניהול מהלך מחזור פעילות משתמש באפליקציה של WEB כלומר בSESSION: כניסה LOGIN סדרת פעולות ויציאה. למעשה נחשב כסטנדרט דה פקטור בתעשייה.ה- JSF   של  SUN בא בעקבותיו ומשמש כמתחרה חדש יחסית בתחום.

 

כדי להקל על מתכנתי  גאווה  וליצר הפרדה ברורה בין ההצגה של דפים לבין הלוגיקה שממלאת ומקשרת לבסיס הנתונים נוצרה צורת תכנון  DESIGN PATTERN הנקראת   MVC:

MODEL VIEW CONTROL

  • MODEL – הלוגיקה - קוד גאווה   SERVLET מורחב מסוג Action
  • VIEW  - ההצגה בדפי JSP - HTML עם ספריית TAGLIB    - נוח לתכנון וכתיבה ע"י מעצב HTML ללא קוד גאווה בתוכו.
  • CONTROL- הדבק בין שניהם-   ניתן  נתב קבוע ActionServlet  כחלק מהחבילה שמבצע את הקישור של הדפים JSP ללוגיקה Action ומשם חזרה לדפים. הנתב מבין את דף הגדרות WEB_INF/struts-config.xml ופועל על פיו.

 

בSTRUTS כל דף  מילוי טופס מקושר לאובייקט בזיכרון מסוג ActionForm  .

 

הנתב וגם תגי הJSP מבצעים עליו פונקציות get וset  - אובייקט הממש פעולות כאלו נקרא באופן כללי JavaBean  ובמקרה של STRUTS זה אובייקט זיכרון הנגזר מActionForm

 

 

 

הלוגיקה עצמה מורכבת מSERVLET הנגזר מאוביקט Action  כאשר מופעלת עליו רוטינה עיקרית כזו:

           

 

כאשר request  והresponse  הם כמו בJSP וASP ,  הform   זה אובייקט הזכרון ActionForm   של הטופס האחרון  ועל בקרת הניתוב לאיזה דף תלך בסיום הפעלה ע"י שימוש  ActionMapping ActionForward  נדבר בהמשך...

כאן יש לרוב  פניה כאן לבסיס נתונים לטעינה עדכון מחיקה והוספה של רשומה ישירות בתוך ה Action  ע"י פקודות SQL דרך JDBC  או למשל דרך אובייקט DAO  שהוא צורת תכנון נוספת DESIGN PATTERN:

 

DATA ACCESS OBJECT

מסגרת תכנון שמטרתה לקשר בין בסיס הנתונים לבין אובייקט הזיכרון  ActionForm. האובייקט המתווך  DAO מכיל את המיפוי בין שדות אובייקט הזיכרון לשמות השדות בבסיס הנתונים ולשאילתות  SQL ומטפל בטעינה שמירה עדכון ומחיקה של האובייקטים בבסיס הנתונים.

(אחד האובייקטים הנפוצים לסנכרון תוכן לבסיס הנתונים הדומה ל  DAO בעולם J2EE הוא HOME/EJB BMP/CMP – זה הרבה מחוץ לתחום מאמר זה ולכן קרא על כך באתר  java.sun.co/j2ee.  בעולם הג'אווה הרגיל מערכות HIBERNATE  JDO  וCASTOR-JDO הם דוגמאות למימוש אוטומטי למדי לסנכרון אובייקט זיכרון לבסיס נתונים.)

 

התקנת STRUTS על אפליקצית הWEB

כדי להתחיל לעבוד עם STRUTS יש צורך לבצע ארבעה פעולות

  • לטעון ספרייה JAR וTLD מwww.apache.org/struts  
  • ראשית להגדיר את הנתב

/WEB-INF/web.xml

כך:

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

      <init-param>

            <param-name>config</param-name>

            <param-value>WEB-INF/struts-config.xml</param-value>

      </init-param>

      <init-param>

            <param-name>debug</param-name>

            <param-value>2</param-value>

      </init-param>

      <init-param>

            <param-name>detail</param-name>

            <param-value>2</param-value>

      </init-param>

      <init-param>

            <param-name>validate</param-name>

            <param-value>true</param-value>

      </init-param>

      <init-param>

            <param-name>application</param-name>

            <param-value>MyAppWeb</param-value>

      </init-param>

      <load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

            <servlet-name>action</servlet-name>

            <url-pattern>*.do</url-pattern>

</servlet-mapping>

במקרה שלנו כל דף תחת MyAppWeb    המסתיים ב.do  הוא מבוצע על ידי הנתב

 

  • שנית יש לשים תחת WEB_INF/lib את ספריות STRUTS struts.jar
  • שלישית תחת WEB-INF  לשים את הגדרת תגיות STRUTS TLD (ראה השמות בראש דף של ה(JSP

 

חלק א: VIEW

איך נראה דף JSP בSTRUTS

 

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<HTML><HEAD><TITLE>טופס בקשה</TITLE><HEAD>

<BODY>

<html:form name=”FormBean” type=”com.adi.app.form.FormBean”>

            <html:hidden property=”reqId”>

            <table dir=”rtl”>

<tr>

            <td>שם</td>

            <td>

<html:text property=”name” style=”width:100’/>

</td>

</tr>

<tr>

            <td>תפקיד</td>

            <td.>

<html:select property=”jobTitle”>

                        <html:options collection=”jobList”

property=”code” labelProperty=”description”/>

            </html:select>

            </td>

</tr>

<tr><td>בקשה</td>

<td>

<html:textarea property=”report” style=”width:100” cols=”80” rows=”5”/>

</td></tr>

 

</html:form>

</BODY></HTML>

 

כדי לתמוך בו  יש ליצר ראשית את שני מבני הנתונים בזיכרון כ JavaBeans

הראשון מייצג הנתונים לדף המילוי שמעל

package com.adi.app.forms

import org.apache.struts.action.ActionForm;

import java.io.Serializable; //to enable session saving at tomcat

class FormBean extends ActionForm implements Serializable {

            protected int _reqId;     //index in the data base

            protected String  _name;

            protected int _jobCode;

            protected String _report;

 

            public FormBean(){}   

            public String getName(){return _name;}

            public void setName(String name){

                        _name=name;

            }

            public int getJobTitle(){return _jobCode;}

            public void setJobTitle(int code){

                        _jobCode=code;

            }

...same for report and reqId

}

והשני  מייצג  את כניסת טבלת התפקידים

package com.adi.app.forms;

 

class Lookup{

private int _code;

private String _description;

Lookup(int code,String description){

            setCode(code);

            setDescription(description);

}

            public void setCode(int code){...}

            public int getCode(){..}

public void setDescription(String description){...}

            public String getDescription(){..}

}                     

           

במקביל יש לדאוג לשים על ה SESSION את הרשימה של jobList

למשל אחרי    LOGIN

ArrayList list=new ArrayList();

list.add(new Lookup(1,”מנהל”));

list.add(new Lookup(2,”מזכירה”));

….

request.getSession().setAttribute(“jobList”,list);

 

בחלק ב – נסביר את קונפיגורציה של הSTRUTS תהליך המיפוי וכיצד משתמשים בו בפעולה ACTION

עדי לב

מנהל פורום HTPC ב HOMETHEATER הישראלי
מקים ומנהל אתר חלם www.chelem.org.il  הבלוג שלי ובשבילכם
תגיות: JSP‏  /  STRUTS‏  /  data access‏  

תגובות בפייסבוק

תגובות למאמר



תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות