ملاحظات دراسة Jsp&Servelet (1)
الكاتب:Eve Cole
وقت التحديث:2009-07-02 17:15:10
1.1 كتابة برنامجservlet
1.2 كتابة برنامج Jsp
1.3 تجميع برنامج Servlet
1.4 حزمة برنامج Servlets وJsps
1.5 إنشاء واصف النشر
1.1 كتابة برنامجservlet
المشكلة تريد كتابة servlet كتطبيق ويب الحل اكتب فئة Java ترث من javax.servlet.http.HttpServlet. أولاً، يجب سكب حزمة فئة servlet.jar. ستحتاج إلى مكتبة الفصل بالداخل لتجميع برنامج servlet هذا.
المناقشة برنامج servlet هو فئة جافا يتم استخدامها للاستجابة للمحتوى الديناميكي الذي يطلبه العميل من خلال الشبكة. إذا كنت معتادًا على برامج (CGI)، فيمكن أن تحل servlets الخاصة بتكنولوجيا Java محل برامج CGI تمامًا. غالبًا ما يشار إليه على أنه مكون ويب، سيتم توفير برنامج servlet الذي يتم تنفيذه في بيئة التشغيل بواسطة حاوية servles مثل Tomcat وBea WebLogic.
ملاحظة: يمكن أن تكون حاوية الويب
يتم تثبيت Servlets في حاوية ويب كجزء من تطبيق ويب. سيحتوي هذا التطبيق على موارد الويب. مثل صفحات HTML، والصور، ومقاطع الوسائط المتعددة، وservlets، وjsps، وملفات تكوين xml، وفئات وقت تشغيل Java، ومكتبات الفئات. عند نشر تطبيق ويب في حاوية ويب، ستقوم الحاوية بإنشاء وتحميل مثيلات لفئة Java servlet في JVM. التعامل مع طلبات السيرفلتس.
ترث كافة servlet واجهة javax.servlet.Servlet. المبرمجون الذين يقومون بتطوير تطبيقات الويب يكتبون servlet خاصًا
موروثة من javax.servlet.http.HttpServlet، وهي فئة مجردة تنفذ واجهة Servlet وهي مصممة خصيصًا للتعامل مع طلبات HTTP.
عندما تقوم حاوية الويب بإنشاء مثيل servlet، يكون تسلسلها الأساسي كما يلي:
1. تقوم حاوية servlet أولاً باستدعاء طريقة init() الخاصة بـ servlet، والتي ستقوم بتهيئة المورد ليستخدمه servlet. مدرج كمسجل. سيتم استدعاء طريقة init() هذه مرة واحدة فقط خلال دورة حياة servlet بأكملها.
2. يقوم الأسلوب init() بتهيئة كائن يرث واجهة java.servlet.ServletConfig. يمكّن هذا الكائن servlet من تهيئة المعلمات المعلنة في واصف النشر. يمنح ServletConfig أيضًا وصول servlet إلى كائن javax.servlet.ServletContext، والذي يمكن أن يستخدمه servlet لتسجيل المعلومات وإرسال الطلبات إلى مكونات الويب الأخرى واستخدام موارد الويب الأخرى في نفس التطبيق.
3. تستدعي حاوية servlet طريقة الخدمة () الخاصة بـ servlet للرد على بعض طلبات servlet. استنادًا إلى HttpServlets، تستدعي الخدمة () تلقائيًا طريقة HTTP المناسبة للتعامل مع الطلب عن طريق استدعاء طريقة doGet () أو doPost () الخاصة بالخادم. بالنسبة للعديد من الأمثلة، يرسل المستخدم طلب نشر ويستجيب servlet للطلب عن طريق تنفيذ طريقة doPost().
4. عند استدعاء طريقتي doPost() وdoGet() لطريقتي HttpServlets الرئيسيتين، ستقوم حاوية servlet بإنشاء كائنات javax..servlet.http.HttpServletRequest وHttpServletResponse وتمريرها كمعلمات إلى طرق معالجة الطلب هذه.
http://www.downcodes.com/
5. إدارة دورة حياة servlet، أو تحديد وقت المعالجة لمثيل servlet هذا بناءً على طلب الطلب ووقت الوجود على جهاز Java الظاهري. عندما تبدأ حاوية servlet في إزالة servlet، سيتم استدعاء طريقة التدمير () الخاصة بـ servlet، حيث يمكن تحرير جميع الموارد، مثل اتصال قاعدة البيانات.
مثال HttpServlet نموذجي
الحزمة com.mydev;
import java.io.IOException; import java.io.PrintWriter;
import java.util.Enumeration; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// يجب أن يرث واجهة HttpServlet
الطبقة العامة FirstServlet تمتد HttpServlet ...{
public void doGet(طلب HttpServletRequest، استجابة HttpServletResponse) يطرح ServletException، java.io.IOException ...{
// قم بتعيين نوع MIME للاستجابة، "نص/html"
Response.setContentType("text/html");
// استخدم PrintWriter لإرسال البيانات النصية إلى العميل الذي طلب
//servlet
java.io.PrintWriter out = Response.getWriter() ;
// ابدأ بتجميع محتوى HTML out.println("<html><head>");
out.println("<title>صفحة المساعدة</title></head><body>");
out.println("<h2>الرجاء إرسال معلوماتك</h2>");
// تأكد من أن الطريقة = "post" بحيث تكون طريقة خدمة servlet
// يستدعي doPost في الرد على هذا النموذج إرسال
out.println( "<form Method="post" action ="" + request.getContextPath() + "/firstservlet" >");
out.println("<table border="0"><tr><td valign="top">");
out.println("اسمك الأول: </td> <td valign="top">");
out.println ("<input type = "text" name = "firstname" size = "20">")؛
out.println("</td></tr><tr><td valign="top">");
out.println("اسم عائلتك: </td> <td valign="top">");
println("<input type="text" name="lastname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("بريدك الإلكتروني: </td> <td valign="top">");
println("<input type="text" name="email" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("<input type="submit" value="إرسال المعلومات"></td></tr>");
out.println("</table></form>"); out.println("</body></html>");
}
//doGet
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse) يطرح ServletException، java.io.IOException ...{
// عرض أسماء المعلمات وقيمها
تعداد ParamNames = request.getParameterNames() ;
اسم السلسلة؛
// سيحمل هذا اسم المعلمة
booleanemptyEnum = false;
إذا (! paramNames.hasMoreElements() )
فارغEnum = صحيح؛
// قم بتعيين نوع MIME للاستجابة، "نص/html"
Response.setContentType("text/html");
// استخدم PrintWriter لإرسال البيانات النصية إلى العميل
java.io.PrintWriter out = Response.getWriter() ;
// ابدأ في تجميع محتوى HTML
println("<html><head>");
out.println("<title>المعلمات المرسلة</title></head><body>");
إذا (فارغة) ...{
out.println( "<h2>عذرًا، الطلب لا يحتوي على أية معلمات</h2>");
} آخر ...{
out.println( "<h2>هذه هي قيم المعلمات المقدمة</h2>");
}
بينما (paramNames.hasMoreElements ()) ...{
parName = (String) paramNames.nextElement() ;
println( "<strong>" + parName + "</strong> : " + request.getParameter(parName));
println("<br />");
}//بينما
println("</body></html>");
}
//doPost
}
قد تلاحظ أن doGet() وdoPost() سيقومان بطرح ServletException وIOException، وذلك لأن Response.getWriter() سيطرح استثناء IO.
http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx