سرولت جاکارتا
یک سرولت جاکارتا با نام پیشین جاوا سرولت یک مولفه نرم‌افزاری به زبان جاوا است که توانمندی‌های یک سرور (رایانه خدمت‌رسان) را گسترش می‌دهد. اگرچه سرورها می‌توانند به انواع مختلفی از درخواست پاسخ بدهند، اما به صورت معمول «» را برای میربانی از «برنامه‌های کاربردی وب» روی سرورهای وب، پیاده‌سازی می‌کنند، و بنابراین آن‌ها واجد شرایط یک واسط برنامه‌سازی کاربردی وب سرولت در سمت سرور هستند. این سرولت‌ها، همتای جاوایی، برای دیگر فناوری‌های محتوای پویای وب، مثل PHP و ASP.NET هستند.  سرولت برنامه‌ای در زبان برنامه‌نویسی جاوا برای توسعه توانایی‌های سرورها است، هرچند سرولت‌ها می‌توانند به هر نوع درخواستی پاسخ دهند، اما بیشترین کاربرد را در استقرار برنامه‌هایی با قابلیت استقرار روی وب سرورها دارند، و می‌توان سرولت جاوا را نمونه‌ای مانند پی اچ پی ای اس پی دات نت دانست.
یک سرولت کلاسی از جاواست که در جاوای سازمانی مطابق با رابط برنامه‌نویسی سرولت جاواست، پروتکلی که مسئول پاسخ به درخواست است. آن‌ها تنها به پروتکل مشتری-سرور محدود نمی‌شود، ولی بیشتر مواقع از پروتکل انتقال ابرمتن استفاده می‌نماید؛ بنابراین کلمهٔ سرولت بیشتر بر "اچ‌تی‌تی‌پی سرولت" دلالت دارد. توسعه‌دهندهٔ نرم‌افزار از سرولت برای اضافه کردن محتوای پویا به سرور وب با استفاده از سکوی جاوا استفاده می‌نماید. صفحهٔ تولید شده عمدتاً شامل محتوای اچ‌تی‌ام‌ال است ولی گاهی نیز سایر داده‌های مانند اکس‌ام‌ال را نیز شامل می‌شود. سرولت‌ها، همتای مبتنی بر جاوای فناوری‌هایی غیر جاوایی مانند سی‌جی‌ال و صفحه‌های سرور فعال است. سرولت‌ها می‌توانند حالت وضعیت متغیرها را در یک نشست حفظ نمایند. این کار به کمک کوکی اچ‌تی‌تی‌پی و موتور بازنویسی انجام می‌دهند.
مشخصات کلی سرولت‌ها توسط سان میکروسیستمز ایجاد و نگارش اولش با شمارهٔ ۱٫۰ در ژوئن ۱۹۹۷(خرداد ۱۳۷۶) نهایی شد. با انتشار نگارش ۲٫۳ مشخصات سرورلت تحت فرایند جمعیت جاوا (ف.ج. ج) قرار گرفت. سند جی‌اس‌ار ۵۳، محتوی مشخصات «جاوا سرولت ۲٫۳» و «صفحات جاوا سرور» است. سند جی‌اس‌ار ۱۵۴ نیز مشخصات سرولت ۲٫۴ و ۲٫۵ را در برد دارد. از مارس ۲۰۱۰ (اسفند ۱۳۸۸) نگارش کنونی سرولت با شماره ۳٫۰ منتشر شد. در وبلاگ آن بر روی Java.net، کارمند کارآزمودهٔ سان و مدیر ماهی شیشه‌ای به تشریح تاریخچهٔ فناوری سرولت پرداخت. جیمز گاسلینگ فردی بود که در روزهای آغازین جاوا فکر ایجاد آن را می‌پروراند؛ ولی مفهوم آن تا زمان ارائه آن به صورت محصول از سوی جاوا عملی نشد. این پیش از عملی شدن جاوای سازمانی بود. برتری‌های استفاده ار سرولت را می‌توان در افزایش اجرا و راحتی استفادهٔ ترکیبی به سی‌جی‌آی سنتی است. اسکریپت‌های سی‌جی‌آیِ سنتی که با زبان جاوا نوشته می‌شود دارای مشکلاتی در اجراست:نمونهٔ زیر عبارت «سلام دنیا» را بر صفحهٔ وب نمایش می‌دهد. توجه نمایید که codice_7 زیر کلاسی از codice_8 است که از پیاده‌سازیِ رابط codice_9 بدست آمده‌است. متد codice_3 درخواست دریافتی را به متدهای codice_11، codice_12، codice_13 ، codice_14 و مانند آن‌ها ارسال می‌نماید که منطبق با درخواست دریافت شده‌باشد. 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 empList=new ArrayList(); 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);
سرولت‌ها بیشتر در یکی از موارد زیر کاربرد دارند:
سرورهای