قد يظن البعض أن الدعامات ليس من السهل تعلمها، ويبدو أن بعض المفاهيم فيها تربك الأشخاص الذين لم يتعرضوا لها من قبل. لقد كتبت هذا المقال للسماح للأشخاص الذين لم يتعرضوا لها من قبل الدعامات لها مقدمة بسيطة، بالطبع، ضرورية لدراسة الدعامات بشكل منهجي. هناك الكثير من الأشياء الرائعة فيها، ولكن هذه قصة ليوم آخر.
تتضمن هذه الحالة الصفحة الرئيسية وتسجيل دخول المستخدم وصفحات معالج موقع الويب. الأمر بهذه البساطة. لا يوجد مفهوم عميق لـ Struts، فهو يعتمد بشكل أساسي على الخبرة العملية والفهم من القلب.
يستخدم خادم الويب Tomcat4. انتقل إلى http://jakarta.apache.org لتنزيل struts1.1، ثم قم بتحرير الملف المضغوط إلى c:struts، وانسخ C:strutswebappsstruts-example.war إلى c:tomcat4webapps، وابدأ يتم تحرير حزمة Tomcat war في مجلد struts-example، ثم احذف حزمة war، وأعد تسمية مجلد struts-example للاختبار.
1. قم بتغيير WEB-INFweb.xml إلى:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " http://java.sun.com/j2ee/dtds/web-app_2_2.dtd ">
<web -التطبيق>
<!—هذه هي وحدة التحكم في الدعامات. فئة ActionServlet هي المسؤولة عن نقل أوامر النظام. فهي تقرأ معلومات التكوين من struts-config.xml وتبدأ تلقائيًا سلسلة رسائل في خلفية الخادم. إذا لم تكن هناك متطلبات خاصة (مثل إضافة وظائف تحرير اللغة)، فيمكن للمبرمجين تجاهل هذا الجزء واستخدامه فقط. -->
<سيرفيليت>
<servlet-name>الإجراء</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>التكوين</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</سيرفلت>
<!--يمكن تعيين servlet لهذا النظام إلى ملف باللاحقة Cool، بدلاً من .jspdo الشائع، وما إلى ذلك. يمكن تغيير اسم اللاحقة إلى أي اسم، بالطبع يجب أن يكون الاسم سليمًا #◎¥% ! -->
<رسم الخرائط servlet>
<servlet-name>الإجراء</servlet-name>
<url-pattern>*.cool</url-pattern>
</servlet-mapping>
<!--الصفحة الرئيسية الافتراضية لهذا النظام هي Index.jsp، ويمكن أن تكون هناك عدة صفحات، وسيجدها النظام بالترتيب، على غرار IIS-->
<قائمة ملفات الترحيب>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2. قم بتغيير testWEB-INF struts-config.xml إلى:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
" http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd ">
<struts-config>
<!--FormBean هو مفهوم الدعامات وهو في الأساس JavaBean، ويتم استخدامه لتخزين قيم كل حقل في نموذج الصفحة تلقائيًا وملء حقول النموذج في الوقت المناسب إلى request.getParameter ("fieldName") مثل الطريقة التقليدية؛ والتي غالبًا ما تستخدم في الإجراءات في تعيينات الإجراءات -->
<شكل الفاصوليا>
<!—سنضيف فئة UserForm لاحقًا لتخزين معلومات المستخدم. -->
<form-bean name="userForm" type="test.UserForm"/>
</form-beans>
<!--يقوم هذا بتخزين عنوان التوجيه العام الذي يمكن للنظام بأكمله استخدامه، على غرار window.location('index.jsp'); في JavaScript، ويشبه أيضًا الأزرار المختلفة الموجودة على وحدة تحكم التلفزيون واللون التعديل وما إلى ذلك هو تدفق التحكم في تطبيقات الويب بناءً على الدعامات. في الظروف العادية، بعد معالجة الإجراء، سيتم إعادة توجيهه إلى صفحة JSP لعرضه. هذه أيضًا هي النقطة الأساسية لتنفيذ MVC في JSP. -->
<المهاجمون العالميون>
سيتم التعامل مع <!--failed.cool على أنه طلب servlet، وسيتم العثور على معالجة الإجراء المقابلة في تعيينات الإجراءات. -->
<forward name="failed" path="/failed.cool"/>
<forward name="regist" path="/regist.jsp"/>
</العالمية إلى الأمام>
<!--هل تتذكر الطلب الذي يحتوي على اللاحقة Cool في web.xml؟ يتم التعامل معهم هنا. وهذا يعادل الجزء النموذجي من الدعامات. الجزء النموذجي هو مكان أكثر مرونة في الدعامات. -->
<تعيينات العمل>
<!--لمعالجة طلب Register.cools، فإن FormBean المستخدم هو userForm، وهو فئة test.UserForm. عند حدوث خطأ أثناء المعالجة، سيتم إرجاع ملف Index.jsp-->
<مسار الإجراء = "/regist" type = "test.RegistAction" name = "userForm" نطاق = "طلب" الإدخال = "/index.jsp" />
<مسار العمل = "/ نظرة عامة" إلى الأمام = "/hello.jsp"/>
<مسار الإجراء = "/ فشل" إلى الأمام = "/wuwu.jsp" />
</action-mappings>
</struts-config>
3. أضف FormBean مع مسار الفئة test.UserForm وفيما يلي محتوى هذه الفئة:
اختبار الحزمة؛
import org.apache.struts.action.ActionForm;
يقوم UserForm من الفئة العامة بتوسيع ActionForm
{
سلسلة خاصة name = "lpw"؛// اسم المستخدم سلسلة خاصة ps = "1111"؛ // كلمة المرور public UserForm(){}
اسم مجموعة الفراغ العام (سلسلة ق) {اسم = s؛}
سلسلة عامة getName () {اسم الإرجاع؛}
مجموعة الفراغ العام (سلسلة s) {ps=s;}
سلسلة عامة getPs () {return ps؛}
}
4. أضف فئة فرعية من الإجراء، ومسار الفئة هو اختبار RegistAction، وفيما يلي محتوى هذه الفئة:
اختبار الحزمة؛
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;
import test.UserForm;
الطبقة النهائية العامة RegistAction تمتد الإجراء
{
تنفيذ ActionForward العام (رسم خرائط ActionMapping، نموذج ActionForm، طلب HttpServletRequest، استجابة HttpServletResponse)
throwsException
{
الإعدادات المحلية = getLocale(request);
messageResources messages = getResources(request);
جلسة HttpSession = request.getSession();
UserForm userform = (UserForm) form;
// هنا يمكنك استدعاء فئات أخرى لكتابة قاعدة بيانات أو أحكام منطقية أخرى // إذا كانت قيمة اسم المعلمة التي تم تمريرها بواسطة UserForm هي lpw الافتراضية، فسيتم إعادة توجيهها إلى فشل.
// سيتم البحث في هذا الاسم عن عنوان URL المعين في <global-forwards> الخاص بـ struts-config.xml // (يمكن أن يكون مسارًا مطلقًا أو مسارًا نسبيًا).
//يتذكر؟ تذهب جميع الطلبات التي تحتوي على اللاحقة "cool" إلى تعيينات الإجراءات للعثور على // الدليل النهائي لمعالجة الإجراء هو wuwu.jsp*/.
إذا ("lpw".equals(userform.getName())) )
return (mapping.findForward("failed"));
آخر
return (mapping.findForward("regist"));
}
}
5. جميع الصفحات الجديدة أو المعدلة التالية مكافئة لجزء العرض من الدعامات. قم بتغيير ملف Index.jsp للصفحة الرئيسية إلى:
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ page import = "test.*" %>
<a href="overview.cool">التنقل في الموقع</a><br>
<طريقة الإجراء = "regist.cool" = "post">
<!—يجب أن يكون اسم الحقل في النموذج هو نفس المعلمة الموجودة في UserForm، بحيث يمكن الحصول على البيانات تلقائيًا دون استخدام request.getParameter("param");-->
المستخدم:<input type="text" name="name"><br>
كلمة المرور:<input type="password" name="ps"><br>
<نوع الإدخال = قيمة الإرسال = "إضافة مستخدم">
</form>
6. أضف hello.jsp للتنقل في الموقع:
<h1>خريطة الموقع</h1> فيما يلي ملء المحتوى بواسطة القارئ
7. أضف wuwu.jsp عندما لا يقوم أي مستخدم جديد بتسجيل الدخول، ستتم إعادة توجيهه إلى هذا الصفحة:
<%@ page contentType="text/html;charset=GBK" language="java" %>
<jsp:useBean id = "beanlpw" class = "test.UserForm" نطاق = "جلسة"/>
المستخدمون الحاليون: <%=beanlpw.getName()%><br>
كلمة المرور: <%=beanlpw.getPs()%><br>
لم يتم الحصول على مستخدم جديد!
8. قم بإضافة Register.jsp. عندما يقوم مستخدم جديد بتسجيل الدخول، سيتم إعادة توجيهه إلى هذه الصفحة:
<%@ page contentType="text/html;charset=GBK" language="java" %>
<jsp:useBean id = "beanlpw" class = "test.UserForm" نطاق = "جلسة"/>
حساب مستخدم جديد: <%=beanlpw.getName()%><br>
كلمة المرور: <%=beanlpw.getPs()%>
9. ابدأ تشغيل Tomcat4، واكتب http://localhost:8080/test/index.jsp في المتصفح، وقم بتشغيله، ويمكنك رؤية النتائج، وفهم حرف M في البداية الأجزاء الدعامية وV وC تعمل معًا بالطبع، هذه هي نية المؤلف الطيبة. إذا كان القراء في حيرة من أمرهم، فيرجى الإشارة إلى الخطأ :).