إجابات على المشاكل التي قد تواجهها في JSP
1. كيفية مزج Jsp وSSI #include؟
يمكن تضمين لغة HTML النقية في JSP على النحو التالي:
< !--#تضمين الملف = "data.inc"-- >
ولكن إذا كان data.inc يحتوي على رمز JSP، فيمكننا استخدام:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. كيفية تنفيذ JSP آمن للخيط؟
فقط قم بإضافة الأمر التالي
< %@ الصفحة isThreadSafe="false" % > </P>
3. كيف يقوم JSP بمعالجة البيانات في نموذج HTML؟
ما عليك سوى استخدام كائن الطلب المضمن، كما يلي:
<%
String item = request.getParameter("item");
int howMany = new Integer(request.getParameter("units")).intvalue();
%></P>
4. كيفية تضمين ملف ثابت في JSP؟
التضمين الثابت هو كما يلي: < %@ include file="copyright.html" % >
يكون التضمين الديناميكي كما يلي: < jsp:include page="copyright.html" Flush="true"/ > </P>
5. كيفية استخدام التعليقات في JSP؟
هناك أربع طرق رئيسية:
1. < %-- و --% >
2. //
3. /**و**/
4. < !--و-- > </P>
6. كيفية تنفيذ إعادة توجيه التصفح في JSP؟
استخدم الطريقة التالية: Response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
يمكنك أيضًا تغيير سمة HTTP HEADER فعليًا، كما يلي:
<%
Response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/index.html"؛
Response.setHeader("الموقع"،newLocn);
%></P>
7. كيف يمكن منع حفظ المخرجات في JSP أو Servlet في ذاكرة التخزين المؤقت بواسطة المتصفح؟
ما عليك سوى إضافة البرنامج النصي التالي إلى بداية ملف JSP:
<%
Response.setHeader("Cache-Control"،"no-store"); //HTTP 1.1
Response.setHeader("Pragma"،"no-cache")؛ //HTTP 1.0
Response.setDateHeader ("انتهاء الصلاحية"، 0)؛ // يمنع التخزين المؤقت على الخادم الوكيل
%></P>
8. كيفية ضبط ملف تعريف الارتباط في JSP؟
يتم إرسال ملف تعريف الارتباط كجزء من HTTP HEADER ويمكن ضبطه على النحو التالي:
<%
ملف تعريف الارتباط mycookie = ملف تعريف الارتباط الجديد("aName"،"avalue")؛
Response.addCookie(mycookie);
%></P>
9. كيفية حذف ملف تعريف الارتباط في JSP؟
<%
Cookie killMyCookie = new Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
Response.addCookie(killMyCookie);
%></P>
10. كيفية إيقاف تنفيذ JSP أثناء معالجة طلب JSP هي كما يلي:
<%
إذا (request.getParameter("wen") != null) {
// افعل شيئا
} آخر {
يعود؛
}
%></P>
11. كيفية تحديد الأساليب في JSP يمكنك تحديد الأساليب، ولكن لا يمكنك الوصول مباشرة إلى الكائنات المضمنة في JSP، ولكن يمكنك تمريرها من خلال أساليب المعلمات. على النحو التالي:
<%!
سلسلة عامة howBadFrom(HttpServletRequest req) {
HttpSession ses = req.getSession();
...
إرجاع req.getRemoteHost();
}
%>
<%
out.print("بشكل عام، لاو لي ليس باديًا");
%>
< %= howBadFrom(request) % > </P>
12. إذا قام المتصفح بإيقاف تشغيل ملفات تعريف الارتباط، فكيف يمكنني فتح الجلسة في JSP لتتبع واستخدام إعادة كتابة عنوان URL، كما يلي:
hello1.jsp
< %@ جلسة الصفحة = "صحيح" % >
<%
عدد صحيح = عدد صحيح جديد (100)؛
session.putvalue("num",num);
String url =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hello2.jsp
< %@ جلسة الصفحة = "صحيح" % >
<%
عدد صحيح i= (عدد صحيح )session.getvalue("num");
println("القيمة العددية في الجلسة هي"+i.intvalue());
%></P>
13. هل يمكن إرسال البريد الإلكتروني في JSP؟ يمكنك استخدام حزمة SUN الخاصة: حزمة sun.net.smtp. يستخدم البرنامج النصي التالي فئة SmtpClient لإرسال البريد الإلكتروني.
< %@ page import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
سلسلة من = " <A href=" mailto:[email protected]">[email protected]</A >";
سلسلة إلى = " <A href=" mailto:[email protected]">[email protected]</A> ، <A href=" mailto:[email protected]">[email protected]. cn</A >";
يحاول{
عميل SmtpClient = new SmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
رسالة PrintStream = client.startMessage();
message.println("إلى:" + إلى);
message.println("الموضوع: إرسال بريد إلكتروني من JSP!");
message.println("تم إرسال هذا من صفحة JSP!");
message.println();
message.println("رائع! :-)");
message.println();
message.println("الولد الطيب");
message.println("أنا في genius.com");
message.println();
Client.CloseServer();
}
قبض (IOException ه) {
System.out.println("خطأ في إرسال البريد الإلكتروني:"+e);
}
%></P>
14. هل يمكنني استدعاء صفحة خطأ JSP في SERVLET؟ بالطبع لا توجد مشكلة. يوضح ما يلي كيفية استدعاء صفحة خطأ JSP في وحدة منطق التحكم في SERVLET.
إرسال خطأ محمي محمي (طلب HttpServletRequest،
استجابة HttpServletResponse، سلسلة errorPageURL،
رمي ه)
يرمي ServletException، IOException {
request.setAttribute("javax.servlet.jsp.jspException"، e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(request,
إجابة)؛
} </ف>
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse) {
يحاول {
// افعل شيئا
} قبض (استثناء على سبيل المثال) {
يحاول {
sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);
} قبض (الاستثناء ه) {
printStackTrace();
}
}
} </ف>
15. كيف يتم التواصل بين JSP وAPLET؟
كيف يتواصل JSP مع EJB SessionBean يوفر مقتطف التعليمات البرمجية التالي عرضًا توضيحيًا جيدًا
< %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
// تحديد مرجع عالمي لمثيل واجهة SessionBeanHome
AccountHome accHome=null </P>
الفراغ العام jspInit () {
// احصل على مثيل الواجهة الرئيسية
InitialContext cntxt = new PrimaryContext() ;
Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
// إنشاء نسخة فورية من SessionBean
حساب الحساب = accHome.create();
// استدعاء الطريقة البعيدة
acct.doWhatever(...);
// وهكذا
%></P>
16. كيف يمكنني منع عرض الحقول ذات الحقول "الفارغة" في حقول نص إدخال HTML الخاصة بي عند استخدام مجموعة النتائج؟
ويمكن تعريف دالة بسيطة لتحقيق الغرض، كما يلي:
<%!
سلسلة فارغة (سلسلة ق) {
العودة (ق == فارغة) ?
}
%></P>
ثم في نموذج JSP، يمكنك استخدامه على هذا النحو
< نوع الإدخال = "نص" اسم = "حجم الحذاء" قيمة = "< %=blanknull(shoesize)% >" > </P>
17. كيفية تنزيل ملف (مثل: ثنائي، نصي، قابل للتنفيذ) في Servlet أو JSP؟
يتم الآن توفير حلين:
ج: استخدم HTTP،
ب: في Servlet، يمكن القيام بذلك عن طريق تعيين ContentType واستخدام الدفق والفئات الأخرى لحزمة java.io على سبيل المثال:
Response.setContentType("application/x-msword");
ثم اكتب شيئًا ما في المخزن المؤقت للإخراج. </ف>
18. كيفية قبول معلمات التهيئة عند تهيئة BEAN باستخدام علامة useBean فقط استخدم العلامتين التاليتين:
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name = "wenBean" property = "someProperty" value = "somevalue"/ > </P>
19. كيف يمكن الحصول على معلومات متصفح العميل باستخدام JSP؟
ما عليك سوى استخدام request.getHeader(String)</P>
20. هل يمكن استدعاء JSP كإجراء فرعي؟
بالطبع يمكنك استخدام< jsp:include page="relativeURL" Flush="true"/ > </P>
21. بعد إعادة ترجمة الفصل الذي يستخدمه JSP، لماذا يستمر JVM في استخدام الفصل القديم الخاص بي؟ </ف>
ما الفرق بين < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > و < jsp:include page="abc.jsp"/ >؟
الأول هو تضمين ثابت، بينما الأخير هو تضمين ديناميكي</P>
22. عيوب JSP؟
1. لا توجد أشياء جيدة حول تصحيح أخطاء برامج JAVA
2. لأن معظم محركات servlet لا تدعم تجميع الاتصالات
3. لا يوجد معيار لمحركات Servlet
4. التفاعل بين JSP ولغات البرمجة النصية الأخرى</P>
23. هل يستطيع JSP إجراء مكالمات متكررة؟
بالطبع يمكنك ذلك، إذا قمت بإرسال النموذج إلى هذه الصفحة</P>
34. كيفية تحقيق تدويل JSP؟
ما عليك سوى توفير ملفات خصائص حزم الموارد للإصدارات المختلفة</P>
25. كيفية كتابة الملفات النصية في JSP؟
استخدم كائن PrintWriter، مثل:
< %@ page import="java.io.*" % >
<%
String str = "اطبعني";
String nameOfTextFile = "/usr/anil/imp.txt";
يحاول {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(str);
pw.Close();
} قبض على (IOException ه) {
println(e.getMessage());
}
%></P>
26. كيفية تضمين ملفات المسار المطلق في JSP؟
فقط استخدم URLConnection. </ف>
27. هل يمكن مشاركة كائنات الجلسة بين servlets وJSP؟
بالتأكيد،
جلسة HttpSession = request.getSession(true);
session.putvalue("variable"، "value" </P>
28. هل يمكن نسخ متغيرات Javascript إلى JSP SESSION؟ </ف>
29. كيفية ضبط ملفات تعريف الارتباط بحيث تنتهي صلاحيتها بعد فترة زمنية معينة؟
استخدم Cookie.setMaxAge(int) </P>
30. كيف يمكن الحصول على العدد الحالي للجلسات؟
يمكنك استخدام HttpSessionBindingListeners للتتبع</P>
31. هل يمكنني إعداد بعض التعليمات البرمجية للتشغيل على جميع ملفات JSP الخاصة بي؟ إذا كان الأمر كذلك، هل يمكن مشاركتها؟
بالطبع، يمكنك تحديد اسم مستعار لملف JSP الخاص بك: /jsp/=ybwen.genius.myPreprocessingServlet، ويمكن استخدام الملفات المسبوقة بـ /jsp/</P>
32. بالنسبة لصفحة JSP، إذا طلبها عدة عملاء في نفس الوقت، فهل المزامنة ممكنة؟
ما هي فوائد استخدام beanName في بناء جملة jsp:useBean؟
يستخدم beanName Beans.instantiate() لتهيئة Bean </P>
33. عندما أستخدم < jsp:forward >، لا يتغير شريط العناوين في المتصفح؟
استخدم Response.sendRedirect("newURL") </P>
34. كيف يمكن تحويل ملفات إصدار JSP 0.9 إلى JSP1.1؟
فقط استخدم sed/awk</P>
35. هل يمكنك استخدام JSP لتعيين تركيز حقل الإدخال في نموذج HTML دون استخدام Javascript؟
مستحيل</P>
36. ما هي أفضل طريقة للاتصال بتجمع المخزن المؤقت لاتصال قاعدة البيانات باستخدام JSP؟
1. استخدم برنامج التشغيل مع هذه الخدمة في JDBC2.0
2. استخدم خادم التطبيقات الذي يوفر هذه الخدمة