مقدمة
لقد قدمت لك إلى البرنامج التعليمي التمهيدي حول Struts2. سأستمر في مشاركة المعرفة التي تعلمتها ، والمشاكل التي واجهتها أثناء عملية التعلم والحلول. بالطبع ، إذا وجد القراء أي مشاكل ، فيمكنهم إبلاغي في التعليقات أدناه. شكرا لكم مقدما
الوصول إلى موارد الويب في العمل
موارد الويب
يشير مورد الويب المزعوم إلى واجهات برمجة التطبيقات الأصلية مثل httpservletrequest و httpservletresponse و servletContext. كوحدة تحكم تطوير التطبيقات B/S ، يجب أن تكون قادرة على الوصول إلى موارد الويب ، مثل القراءة والكتابة خصائص إلى كائنات المجال.
كيفية الوصول إلى موارد الويب
طريقة فك الارتباط من servletapi: من أجل تجنب الاقتران مع servletapi وتسهيل اختبار الوحدة في العمل ، يقوم Struts2 بتغليف httpservletrequest و httpsession و servletcontext ، ويقوم ببناء 3 كائنات خريطة لاستبدال هذه الكائنات الثلاثة. في العمل ، يمكنك استخدام كائنات الخريطة المقابلة لـ HttPservletRequest و HttPservletsession و HttPservletContext لحفظ وقراءة البيانات.
public Object get(Object key) لتمرير معلمة الطلب لتحقيق التنفيذ.setRequest() ، بحيث يمكن استدعاء طلب الطلب في جميع طرق الإجراء. استخدم ActionContext للحصول على عرض رمز لكائن المجال
أرسل الطلب من صفحة index.jsp إلى showpage.jsp وقم بتسليم الطلب إلى STRUTS 'ACTION CLASSACTION.JAVA للتعامل مع الطلب
في gofitication.java ، يتم استرداد كائن المجال بواسطة ActionContext ويتم إضافة قيمة الخاصية إليه ، ويتم إعادة توجيه الطلب إلى showpage.jsp
على صفحة showpage.jsp ، يمكننا الحصول على قيم كل كائن مجال
index.jsp
<٪@ page contentType = "text/html ؛ charset = utf-8" language = "java" ٪> <html> <head> <title> مقبض </title> </head> <body>-تمرير المعلمة الاسم ، والتي يمكن الحصول عليها من كائن المجال في فئة العمل لاختبار كائن المعلمة <href = "showpage؟ > التطبيق </a> </body> </html>
profication.java
package com.request.test ؛ import com.opensymphony.xwork2.ActionContext ؛ import java.util.map ؛ class public class {public string print () {// get actionContext ActionContext = ActionContext.getContext () ؛ ApplicationMap.put ("ApplicationMap" ، "ApplicationMapValue") ؛ // احصل على الخريطة المقابلة لخريطة الجلسة <string ، Object> sessionmap = actionContext.getSession () ؛ // تعيين SessionMap إلى SessionMap.put ("mage" ، Object> requestMap = (Map <String ، Object>) ActionContext.get ("request") ؛ // احصل على الخريطة المقابلة للطلب. لا توجد طريقة getRequest () المقابلة ، لذا استخدم طريقة GET ("request") خريطة <سلسلة ، كائن> requestMap = (MAP ، Object>) ActionContext.get ("request") ؛ // be requestMap ، endervation. احصل على قيمة المعلمة لـ params string [] params = (string []) paramsmap.get ("name") ؛ // اطبع قيمة المعلمة إلى system.out.println (params [0]) ؛ إرجاع "النجاح" ؛ }}struts.xml (عرض فقط عقدة الحزمة)
<package name = "showvalue" تمديد = "Struts-Default"> <Action name = "showpage" method = "print"> <result name = "success">/showpage.jsp </sult
showpage.jsp (يعرض فقط محتوى علامة الجسم)
<٪-احصل على قيمة كائن مجال التطبيق-٪> $ {applicationscope.applicationMap} <br> <٪-احصل على قيمة كائن مجال الجلسة-٪> $ {sessionscope.sessionmap} <br> <٪-احصل على قيمة كائن الطلب-٪> $ {requestscope.requestmap} كائن-٪> $ {requestscope.requestmap}التفاصيل والاهتمام (اسحب الصورة إلى صفحة علامة التبويب الجديدة للمتصفح لعرض الصورة الأكبر)
الوصول إلى موارد الويب باستخدام واجهة xxxaware
مثل استخدام ActionContext ، يتم إرسال طلب إلى ObjectAction.java على صفحة index.jsp بواسطة طريقة print2() .
قم بتعيين قيمة إلى كائن المجال في طريقة print2() في objectaction.java واحصل على قيمة المعلمة التي تم تمريرها
أخيرًا ، نحصل على قيمة كائن المجال في showpage.jsp. من أجل التمييز بين الرموز السابقة ، نضيف رموزًا إلى كل قيمة إخراج للتمييز.
index.jsp (يعرض جزء علامة الجسم)
<a href = "showpage2. action؟ name = smzyy" rel = "nofollow الخارجي"> topage2 </a>
profication.java
package com.request.test ؛ استيراد com.opensymphony.xwork2.ActionContext ؛ استيراد org.apache.struts2.Interceptor.applicationAware ؛ استيراد org.apache.struts2 java.util.map ؛ complic complication complications requestaware ، sessionaware ، applicationaware ، parameteraware {private map <string ، Object> requestMap ؛ خريطة خاصة <سلسلة ، كائن> SessionMap ؛ خريطة خاصة <سلسلة ، كائن> ApplicationMap ؛ خريطة خاصة <string ، string []> parametermap ؛ // showpage.action تنفيذ الطريقة المطلوبة السلسلة العامة print2 () {ApplicationMap.put ("ApplicationMap" ، "ApplicationMapval ====") ؛ requestMap.put ("requestMap" ، "requestMapval ===") ؛ SessionMap.put ("SessionMap" ، "SessionMapval ===") ؛ String [] name = parametermap.get ("name") ؛ System.out.println (name [0] + "====") ؛ إرجاع "النجاح" ؛ } Override public void setApplication (Map <String ، Object> map) {this.applicationMap = map ؛ } Override public void setParameters (MAP <string ، string []> map) {this.parametermap = map ؛ } Override public void setRequest (Map <String ، Object> map) {this.requestmap = map ؛ } Override public void setSession (Map <String ، Object> map) {this.sessionMap = map ؛ }}struts.xml (يعرض جزء عقدة الحزمة)
<package name = "showvalue" تمديد = "Struts-Default"> <Action name = "showpage2" method = "print2"> <result name = "success">/showpage.jsp </sult
showpage.jsp (كما هو مذكور أعلاه ، لم يتغير على الإطلاق)
اقتراحات الاختيار
من خلال الطريقتين أعلاه للحصول على موارد الويب ، يمكننا أن نعلم أنه إذا كانت الطريقة الأولى تحتوي على العديد من طرق الإجراءات التي تتطلب كائنات مجال الاتصال ، فيجب تنفيذ كل طريقة ، في حين أن الطريقة الثانية تحتاج فقط إلى تنفيذها مرة واحدة ، لذلك في التطوير الفعلي ، يتم تحديد الطريقة المقابلة لتنفيذها وفقًا للموقف.
إلى جانب servletapi: يمكن الوصول إلى المزيد من servletapis ويمكن استدعاء الأساليب الأصلية
تشبه طريقة التنفيذ هنا طريقة التنفيذ أعلاه ، لذلك لن أتحدث عنها.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.