مقدمة إلى httpservletrequest
يمثل كائن httpservletrequest طلب العميل. عندما يصل العميل إلى الخادم من خلال بروتوكول HTTP ، يتم تغليف جميع المعلومات الموجودة في رأس طلب HTTP في هذا الكائن. من خلال الطريقة التي يوفرها هذا الكائن ، يمكن الحصول على جميع المعلومات التي يطلبها العميل.
مقدمة
تقدم هذه المقالة بشكل أساسي المحتوى ذي الصلة حول أمان حقن الربيع MVC المباشر لـ HttPservletRequest. يبدو سؤالًا بسيطًا للغاية ، حتى نتمكن من تتبع معالجة رمز المصدر في الربيع
هناك الكثير من هذا النوع من التعليمات البرمجية في عنصر التحكم الذي يكتب springMVC ، إذا كنت بحاجة إلى الحصول على كائن الطلب للقيام بشيء ما
يحب:
@controller@requestmapping (value = "/user") فئة عامة ، يمتد LoanActionPage AbstractAction {REquestMapping (value = "/page/Active") السلسلة العامة loanaAccountaTaTATIONPAGE (httpservletrequest طلب)يبدو أنه في كل مرة أرغب في كتابة عنصر تحكم ، يجب أن أقوم بتمرير الطلب كمعلمة ، وهو أمر زائد للغاية.
في الواقع ، يمكنك تحديد كائن طلب في عنصر التحكم ، وحقنه ، ثم استخدامه في أي وقت.
يحب:
الطبقة العامة AbstractAction {autowiredprotected httpservletrequest request ؛ ... ...ثم استخدمه مباشرة في السيطرة:
@controller@requestMapping (value = "/user") تمتد فئة القرض العامة على {@@requestmapping (value = "/page/active") السلسلة العامة loanaActaCtactactactive () {// الحصول على طلب إلى dosomethingstring pathinfo = request.getpathinfo () ؛ return "Active" ؛ }}لذا فإن السؤال هو أن Sevlets متعددة الخيوط ، والطلب في كل مرة يطلبون فيها هو في الواقع كائن جديد. هل ستتسبب مشاركة المراجع مباشرة في عدم الأمان؟
إنه مناسب ، والمشكلة هنا أيضًا. سيرفرت هو في الواقع متعددة الخيوط. هل هناك أي مشكلة أمنية في مشاركة الطلب؟ تحليل رمز الربيع
1. من أين يأتي الطلب المحقن؟
لقد وجد أن الحقن سيذهب بالفعل إلى webapplicationContextUtils للحصول على القيمة من خلال requestObjectFactory وتتبعها
إرجاع القيمة في requestContextholder. مسارات requestContextholder
يتم إرجاع الطلب الذي يتم إرجاعه في كل مرة هو في الواقع الطلب في فئة التنفيذ servletwebrequest (servletRequestatTributes). نظرًا لأن requestAtTributes ينتمي إلى Threadlocal ، فإن الطلب المحقن هو أيضًا آمن مؤشر ترابط.
2. متى يتم تعيين كائن الطلب بحلول الربيع؟
httpservlet فئة تطبيق FrameworkServlet-> service()->processRequst()
سيقوم كل طلب بتعيين أحدث طلب وتعيين القيمة
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.