سؤال

في تطبيق ويب Java بسيط ، على سبيل المثال ، تخيل أن لديك Servlet TestServlet.java. في وصف النشر (web.xml) ، يمكنك على سبيل المثال خريطة الطلب القادم ليقول /testpage إلى TestServlet بحيث عندما /testapplication/testpage يطلب TestServlet معالجة الطلب. ويمكنك على سبيل المثال كتابة "Hello World" وإرسال الرد.

في بنية الدليل (التطبيق الذي يتم نشره في خادم الويب) ، ستقيم TestServlet.java في:

webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java

مما يعني أنه لا توجد طريقة للوصول إلى هذا الملف باستخدام المتصفح. (مثل إدخال عنوان URL)

يمكنك أيضًا الحصول على مرسل الطلب وإعادة توجيه كائن الطلب والاستجابة إلى ملف JSP مثل .getRequestDispatcher("/test.jsp"). ولكن بعد ذلك سيكون الملف في

webapps\testapplication\test.jsp

لذا فإن الاتصال بـ http: server.com test.jsp سيحصل أيضًا على هذا الملف.

أرغب في إخفاء الملف في مجلد ويب-إنف ، بحيث لا يمكن الوصول إليه من قبل العميل باستثناء التعيين الذي قدمته.

ما هي الطريقة المناسبة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

أرغب في إخفاء الملف في مجلد ويب-إنف ، بحيث لا يمكن الوصول إليه من قبل العميل.

حافظ على ملفات JSP الخاصة بك تحت WEB-INF فمثلا - (WEB-INF/jsp), ، بحيث لا تسمح حاويات الويب افتراضيًا بالموارد تحت مجلد ويب إنف RequestDispatcher يمكن الوصول إليه.

request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);

نصائح أخرى

إذا كنت تستخدم JSF ، فيمكنك وضع هذا الملف في مجلد Web-Inf واستخدام قاعدة التنقل لتخطيط الطلب إلى الصفحة. ولكن إذا لم تكن كذلك ، يمكنك إنشاء مرشح ورسم خريطة له إلى url "/test.jsp" باستخدام <url-pattern> قم بموافقة وإعادة توجيه إلى أي مكان تريده (مثل صفحة في شبكة الويب).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top