کد نویسی سریع با JSTL در JSP
درسری مقالات آموزش Java Enterprise, به مبحث JSTL میپردازیم.
JSP Standard Tag Library یا به اختصار JSTL مجموعه ای از tag ها هستند که کد نویسی JSP را راحتر میکنند. JSTL دستورات شرطی, دستورات تکرار, دستورات ویرایش XML ها, دستورات SQL و غیره را پشتیبانی میکند. این دستورات به ما کمک میکنند تا کد نویسی پروژه ها با سرعت بیشتری صورت پذیرد. همچنین به علت آماده بودن این کد ها, قابلیت استفاده مجدد (Reusability) برای کد نویس فراهم میشود. همچنین به علت گستردگی دستوراتی که JSTL آنها را شامل میشود, از scriptlet tag های کمتری استفاده میشود.
JSTL ها متناسب با دستورات آنها, به پنج گروه دسته بندی میشوند:
- Core Tag: دسته ای از tag ها که استفاده آنها متداول تر است. لیست این tag ها را میتوانید از اینجا مشاهده کنید.
- Function Tag: دسته ای از tag ها است که عمدتا شامل متد هایی برای کار با String ها میشود. لیست این tag ها را میتوانید از اینجا مشاهده کنید.
- XML Tag: دسته ای از tag ها که برای کار با xml ها است. لیست این tag ها را میتوانید از اینجا مشاهده کنید.
- SQL Tag: دسته ای از tag ها که برای اجرای دستورات SQL و ارتباط با پایگاه داده است. لیست این tag ها را میتوانید از اینجا مشاهده کنید.
- Format Tag: دسته ای از tag ها که برای مشخص کردن فرمت نمایش ها استفاده میشود. لیست این tag ها را میتوانید از اینجا مشاهده کنید.
برای درک بهتر JSTL ها از هریک چند مثال را بررسی میکنیم. در ابتدا Dependency مورد نیاز به Maven اضافه میکنیم:
<!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
و سپس آن را به پروژه اضافه میکنیم. برای استفاده از هریک از دسته ها باید آن را با tagLib Directive به صفحه مورد نظر اضافه کنید. uri و prefix هریک از دسته ها در لینک های ذکر شده موجود است. برای مثال میخواهیم در صفحه user.jsp در مقاله قبل را تا حد امکان با استفاده از JSTL ها بنویسم:
<body> <h1> Dear <jsp:useBean id="user" scope="request" type="User.UserModel"/> <c:out value="${user.username}"/></h1> <h2>Welcome to your Panel</h2> </body>
در کد بالا بجای ایجاد یک object از روی UserModel, از useBean استفاده کردیم. در اینجا id باید برابر با مقدار attribute باشد و دسترسی به beans نیز از طریق همین id امکان پذیر است. در خط بعدی با استفاده از out tag مقدار را در خروجی نمایش دادیم. همانطور که مشاهده میکنید دیگر از کد ها جاوا استفاده نکرده ایم و تنها با استفاده از tag ها این کار را انجام داده ایم. وقتی از implicit object ها (مانند session, request و غیره) استفاده میکنید باید توجه داشته باشید که attribute ها مقادیری هستند که برنامه نویس در برنامه جابجا میکند و parameter مقادیری هستند که توسط کاربر به برنامه وارد میشود.
اگر بخواهیم از login.jsp را نیز تغییر دهیم نیاز است تا به این صورت عمل کنیم:
<c:if test="${requestScope['failed'] !=null}"> <br> <h3>Login Failed</h3> </c:if>
در اینجا خط پایانی کد login.jsp که اگر کاربر اطلاعات نادرستی را وارد کند, به وی نمایش داده میشود, اصلاح شد.
یکی از کاربرد های دسته format نیز به این صورت است:
<c:set var="money" value="120880"/> <fmt:formatNumber value="${money}" type="currency"/>
کد بالا مقدار را با فرمت پولی نمایش میدهد.
یکی از کاربرد های function به این صورت است:
<c:if test="${fn:contains(username, vahid)}"> <c:out value="Welcome vhdrjb"/>
بررسی میکند اگر رشته مورد نظر وجود داشت, مقداری را در خروجی چاپ میکند.
یکی از کاربرد های XML به این صورت است:
<c:set var="updates"> <posts> <post> <title>JSP Overview</title> <author>Vhdrjb</author> <Description>Java Server Pages </Description> </post> <post> <title>OpenCV Android</title> <author>Vhdrjb</author> <Description>Android Image Processing</Description> </post> </posts> </c:set> <x:parse xml="${updates}" var="tables"/> <table style="width:100%"> <tr> <th>Title</th> <th>Author</th> <th>Description</th> </tr> <x:forEach select="$tables/posts/post" var="item"> <tr> <td><x:out select="$item/title" /></td> <td><x:out select="$item/author" /></td> <td><x:out select="$item/Description" /></td> </tr> </x:forEach> </table>
کد بالا یک XML را پردازش میکند و در قالب یک جدول نمایش میدهد. در نهایت دسته SQL tag نیز به این صورت قابل استفاده است:
<sql:setDataSource var="db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/zerotoheroDB" user="vhdrjb" password="123456789"/>
در کد بالا به یک پایگاه داده متصل میشویم. در این مقاله به بررسی JSTL در JSP ها پرداختیم. در مقاله بعدی به مبحث امنیت در JSP میپردازیم.
سری مقالات آموزش Java Enterprise همچنان ادامه دارد.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.