From Wikipedia, the free encyclopedia
یک سرولت جاکارتا (به انگلیسی: Jakarta Servlet) با نام پیشین جاوا سرولت (به انگلیسی: Java Servlet) یک مولفه نرمافزاری به زبان جاوا است که توانمندیهای یک سرور (رایانه خدمترسان) را گسترش میدهد. اگرچه سرورها میتوانند به انواع مختلفی از درخواست پاسخ بدهند، اما به صورت معمول «گنجانههای وب» را برای میربانی از «برنامههای کاربردی وب» روی سرورهای وب، پیادهسازی میکنند، و بنابراین آنها واجد شرایط یک واسط برنامهسازی کاربردی وب سرولت در سمت سرور هستند. این سرولتها، همتای جاوایی، برای دیگر فناوریهای محتوای پویای وب، مثل PHP و ASP.NET هستند.
نویسنده(های) اصلی | پاونی دیوانجی |
---|---|
توسعهدهنده(ها) | بنیاد اکلیپس |
انتشار اولیه | دسامبر ۱۹۹۶ |
انتشار پایدار | 5.0
/ ۷ سپتامبر ۲۰۲۰ |
مخزن | |
نوشتهشده با | جاوا |
پلتفرم | سکوی جاوا، نسخه سازمانی |
حجم | 2.56 MB |
نوع | مولفه نرمافزاری برای واسط برنامهنویسی وب |
مجوز | پروانه همگانی اکلیپس |
وبگاه |
سرولت برنامهای در زبان برنامهنویسی جاوا برای توسعه تواناییهای سرورها است، هرچند سرولتها میتوانند به هر نوع درخواستی پاسخ دهند، اما بیشترین کاربرد را در استقرار برنامههایی با قابلیت استقرار روی وب سرورها دارند، و میتوان سرولت جاوا را نمونهای مانند پی اچ پی ای اس پی دات نت دانست.[1]
یک سرولت کلاسی از جاواست که در جاوای سازمانی مطابق با رابط برنامهنویسی سرولت جاواست، پروتکلی که مسئول پاسخ به درخواست است. آنها تنها به پروتکل مشتری-سرور محدود نمیشود، ولی بیشتر مواقع از پروتکل انتقال ابرمتن استفاده مینماید؛ بنابراین کلمهٔ سرولت بیشتر بر اچتیتیپی سرولت دلالت دارد.[2] توسعهدهندهٔ نرمافزار از سرولت برای اضافه کردن محتوای پویا به سرور وب با استفاده از سکوی جاوا استفاده مینماید. صفحهٔ تولید شده عمدتاً شامل محتوای اچتیامال است ولی گاهی نیز سایر دادههای مانند اکسامال را نیز شامل میشود. سرولتها، همتای مبتنی بر جاوای فناوریهایی غیر جاوایی مانند سیجیال و صفحههای سرور فعال است. سرولتها میتوانند حالت وضعیت متغیرها را در یک نشست حفظ نمایند. این کار به کمک کوکی اچتیتیپی و موتور بازنویسی انجام میدهند.
مشخصات کلی سرولتها توسط سان میکروسیستمز ایجاد و نگارش اولش با شمارهٔ ۱٫۰ در ژوئن ۱۹۹۷(خرداد ۱۳۷۶) نهایی شد. با انتشار نگارش ۲٫۳ مشخصات سرورلت تحت فرایند جمعیت جاوا (ف.ج. ج) قرار گرفت. سند جیاسار ۵۳، محتوی مشخصات «جاوا سرولت ۲٫۳» و «صفحات جاوا سرور» است. سند جیاسار ۱۵۴ نیز مشخصات سرولت ۲٫۴ و ۲٫۵ را در برد دارد. از مارس ۲۰۱۰ (اسفند ۱۳۸۸) نگارش کنونی سرولت با شماره ۳٫۰ منتشر شد. در وبلاگ آن بر روی Java.net، کارمند کارآزمودهٔ سان و مدیر ماهی شیشهای به تشریح تاریخچهٔ فناوری سرولت پرداخت. جیمز گاسلینگ فردی بود که در روزهای آغازین جاوا فکر ایجاد آن را میپروراند؛ ولی مفهوم آن تا زمان ارائه آن به صورت محصول از سوی جاوا عملی نشد. این پیش از عملی شدن جاوای سازمانی بود.
نگارشایپیال سرولت | تاریخ انتشار | شماره جی اس آر | سکو | تغییرات مهم
|
---|---|---|---|---|
Jakarta Servlet 5.0.0 M1 | Jun 12, 2020 | 5.0 | Jakarta EE 9 |
API از پکیج |
Jakarta Servlet 4.0.3 | Aug 13, 2019 | 4.0 | Jakarta EE 8 | تغییر نام از نام تجاری «جاوا» |
سرولت ۴٫۰ | شهریور ۱۳۹۶ | ۳۶۹ | Java EE 8 | HTTP/2 |
سرولت ۳٫۱ | خرداد ۱۳۹۲ | ۳۴۰ | Java EE 7 | Non-blocking I/O, HTTP protocol upgrade mechanism (WebSocket) |
سرولت ۳٫۰ | آذر ۱۳۸۸ | ۳۱۵ | JavaEE 6,JavaSE 6 | قابلیت اتصال، سهولت توسعه، سرولت نامتقارن، امنیت، بارگذاری پرونده |
سرولت ۲٫۵ | شهریور ۱۳۸۵ | ۱۵۴ | JavaEE 5,JavaSE 5 | نیازمند جاوا استاندارد نگارش ۵، قابلیت تفسیر |
سرولت ۲٫۴ | آبان ۱۳۸۲ | ۱۵۴ | J2EE 1.4 , J2SE 1.3 | استفاده از شمای اکسامال در web.xml |
سرولت ۲٫۳ | مرداد ۱۳۸۰ | ۵۳ | J2EE 1.3 , J2SE 1.2 | افزودهشدن Filter |
سرولت ۲٫۲ | مرداد ۱۳۷۸ | ۹۰۲، ۹۰۳ | J2EE 1.2 , J2SE 1.2 | الحاق به نگارش سازمانی، معرفی برنامههای مستقل وب در قالب فایل war. |
سرولت ۲٫۱ | آبان ۱۳۷۷ | نامعلوم | نامعلوم | اولین مشخصات رسمی ارائه شد، اضافهشدن RequestDispatcher و ServletContext |
سرولت ۲٫۰ | نامعلوم | JDK 1.1 | بخشی از کیت توسعهٔ جاوا سرولت ۲٫۰ | |
سرولت ۱٫۰ | خرداد ۱۳۷۹ | نامعلوم | نامعلوم |
برتریهای استفاده ار سرولت را میتوان در افزایش اجرا و راحتی استفادهٔ ترکیبی به سیجیآی سنتی است. اسکریپتهای سیجیآیِ سنتی که با زبان جاوا نوشته میشود دارای مشکلاتی در اجراست:
init()
را صدا میزند. این متد سرولت را مقداردهی نموده و باید پیش از آغاز زندگی سرولت فراخوانی شود، متد init()
تنها یکبار فراخوانی میشود.service()
را به ازای هر درخواست فراخوانی مینماید. متد service()
نوع درخواست دریافت شده را تعیین و آن را به متد مناسبی که وظیفهاش رفع نیازهای آن درخواست است، ارسال مینماید. توسعهدهندهٔ سرولت باید این متدها را پیادهسازی نماید. در صورت عدم پیادهسازی متد یادشده، متدِ والدِ کلاس فراخوانی خواهد شد که معمولاً با ارسال یک خطا به درخواستکننده همراه است.destroy()
را فراخوانی نموده که سرولت را از دور کار خارج مینماید. متد destroy()
مانند متد مقدار دهی تنها یک بار در چرخهٔ کاری فراخوانی میشود.نمونهٔ زیر عبارت «سلام دنیا» را بر صفحهٔ وب نمایش میدهد.
توجه نمایید که HttpServlet
زیر کلاسی از GenericServlet
است که از پیادهسازیِ رابط Servlet
بدست آمدهاست.
متد service()
درخواست دریافتی را به متدهای doGet()
، doPost()
، doPut()
، doDelete()
و مانند آنها ارسال مینماید که منطبق با درخواست دریافت شدهباشد.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action=request.getParameter("action");
EmployeeManager eMgr=new EmployeeManager();
if(action==null)
{
action="";
}
else if(action.equals("create"))
{
Employee emp=eMgr.Populate(request);
try
{
eMgr.create(emp);
}
catch(SQLException e)
{
System.out.println("Exception="+e);
}
finally
{
RequestDispatcher disp=request.getRequestDispatcher("/jsp/confirmation.jsp");
disp.forward(request,response);
}
}
else if(action.equals("view"))
{
ArrayList<Employee> empList=new ArrayList<Employee>();
try
{
empList=eMgr.view();
}
catch(SQLException e)
{
e.printStackTrace();
}
request.setAttribute("empList1",empList);
RequestDispatcher disp=request.getRequestDispatcher("/jsp/view.jsp");
disp.forward(request, response);
}
else if(action.equals("Update"))
{
String empId = null;
empId = request.getParameter("empRadio");
Employee empRecord = new Employee();
if(empId==null)
{
empId = " ";
}
System.out.println(empId);
try
{
empRecord = eMgr.empRecord(empId);
}
catch (SQLException e)
{
e.printStackTrace();
}
request.setAttribute("empRecord",empRecord);
RequestDispatcher disp = request.getRequestDispatcher("/jsp/update.jsp");
disp.forward(request, response);
}
else if(action.equals("updateAddress"))
{
String newContactNo=null;
String newAddress=null;
String empId=null;
newAddress = request.getParameter("newAddress");
newContactNo = request.getParameter("newContactNo");
empId=request.getParameter("empId");
try
{
eMgr.updateAddress(empId,newAddress,newContactNo);
}
catch (SQLException e)
{
e.printStackTrace();
}
RequestDispatcher disp = request.getRequestDispatcher("/EmployeeController?action=view");
disp.forward(request, response);
}
else if(action.equals("Delete"))
{
String empId=null;
empId=request.getParameter("empRadio");
int flag=0;
try
{
flag = eMgr.delete(empId);
}
catch (SQLException e)
{
e.printStackTrace();
}
RequestDispatcher disp = request.getRequestDispatcher("/EmployeeController?action=view");
disp.forward(request, response);
}
else if(action.equals("Search"))
{
String empId = null;
empId = request.getParameter("search");
Employee empRecord = new Employee();
if(empId==null)
{
empId = " ";
}
System.out.println(empId);
try
{
empRecord = eMgr.empRecord(empId);
}
catch (SQLException e)
{
e.printStackTrace();
}
request.setAttribute("empRecord2",empRecord);
RequestDispatcher disp = request.getRequestDispatcher("/jsp/viewSearch.jsp");
disp.forward(request, response);
}
}}
سرولتها بیشتر در یکی از موارد زیر کاربرد دارند:
سرورهای
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.