سؤال

في بريمج أود أن الوصول إلى الجذر من سياق لدرجة أنني يمكن أن تفعل بعض جافا سكريبت تصغير.

سيكون من الممكن القيام صغر كجزء من عملية تثبيت ولكن أود أن تفعل ذلك على بريمج بدء التشغيل للحد من تكلفة التنفيذ.

لا أحد يعرف من طريقة للحصول على سياق الدليل بحيث لا يمكن تحميل و كتابة الملفات إلى القرص ؟

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

المحلول

هذا يجب أن تعطيك المسار الحقيقي التي يمكنك استخدامها لاستخراج / تحرير الملفات.

جافادوك الرابط

نقوم بشيء مماثل في سياق المستمع.

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext().getRealPath("/");
        ...
    }

    ...
}

نصائح أخرى

في بريمج أود أن الوصول إلى الجذر من سياق لدرجة أنني يمكن أن تفعل بعض جافا سكريبت تصغير

يمكنك أيضا الوصول إلى الملفات في WebContent من قبل ServletContext#getResource().حتى إذا كان لديك ملف JS هو على سبيل المثال الموجود في WebContent/js/file.js ثم يمكنك استخدام ما يلي في Servlet للحصول على File مقبض من ذلك:

File file = new File(getServletContext().getResource("/js/file.js").getFile());

أو للحصول على InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js");

أن قال, كيف وغالبا ما كنت بحاجة إلى صغر JS الملفات ؟ أنا لم أر الحاجة إلى الطلب القائم على تصغير سيكون فقط دون داع إضافة الكثير من النفقات العامة.ربما كنت تريد أن تفعل ذلك مرة واحدة فقط خلال التطبيق بدء التشغيل.إذا كان الأمر كذلك ، Servlet هذا هو فكرة سيئة.أفضل استخدام ServletContextListener وتفعل الشيء الخاص بك على contextInitialized().

كنت أبحث نتيجة الحصول على أي مكان.في صفحات JSP التي تحتاج إلى استخدام جافا سكربت الوصول الحالية contextPath هو في الواقع من السهل جدا.

فقط ضع ما يلي في html الرأس داخل script كتلة.

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 

تعني:

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext();
        ...
    }

    ...
}

أو شيء أكثر تعقيدا ؟

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