آموزش برنامه نویسی با JSP: بخش ششم - اکشن ها (Actions)

در این مقاله ما استفاده از  اکشن ها در کد نویسی به زبان JSP ‌را به شما آموزش خواهیم داد. این اکشن ها با استفاده از syntax زبان xml رفتار موتور سرولت(servlet engine) رو کنترل می کنن.با استفاده از اکشن ها می تونید یک فایل رو به طور پویا به کدتون اضافه کنید،از کامپوننت های java bean استفاده کنید و یا کاربر رو به یک صفحه دیگه هدایت کنید.

تنها روشی که می شیه یک اکشن JSP رو نوشت به صورت زیر هستش(چون فقط از syntax زبان XML پیروی می کنه):

<jsp:action_name attribute = "value" />

 اکشن ها اساسا یک سری توابع از پیش تعرف شده هستن که تو لیست زیر می تونید ببینید:

1-jsp:include

مثل include تو زبان php هستش.یعنی یک فایل رو در زمان اجرا به فایل اصلیمون اضافه می کنه.اگه آموزش دایرکتیو ها تو jsp رو خونده باشین حتما می دونین که یه include هم تو دایرکتیوها داریم.فرق این با اون تو زمان اجرا شدنشون هست.دایرکتیو در زمان ترجمه اجرا می شه و این یعنی اینکه اگه محتوای فایلی که include میشه  بعد از ترجمه عوض بشه رو نتیجه تاثیر نمی ذاره.به طور کلی به صورت زیر استفاده می شه:

 <jsp:include page = "آدرس نسبی" flush = "true" />

flush هم برای این هستش که آیا این page باید به طور کامل بافر بشه تا include بشه یا نه؟

مثلا:

 <jsp:include page = "jsp-tutorial.jsp" flush = "true" />

 

2-jsp:useBean

یک javaBean رو پیدا می کنه یا میسازه(instantiate می کنه).یک شباهت های کوچکی به require_once تو php داره. وقتی ازش استفاده می کنیم اول سعی می کنه اون java bean ای که می خواهیم رو پیدا بکنه. اگه یک object از اون java bean وجود داشت و ساخته شده بود که هیچ. اگر نبود یک object از اون میسازه.به طور کلی به صورت زیر استفاده می شه:

 <jsp:useBean id = "name" class = "package.class" />

3-jsp:setProperty

یک property از یک JavaBean رو مقدار دهی می کنه. عملا همون توابع setter تو java هستش.یعنی مقدار یکی از متغیر های یک object از یک کلاس رو set می کنه.فقط همون رو با سینتکس xml می نویسه.البته تو اینجا دسترسی مستقیم به خود object نداریم و از طریق java bean این کار رو انجام میدیم.واضحه که برای استفاده از این توابع اول باید object رو بسازیم ، یعنی از usebean استفاده کنیم.این اکشن دوتا روش استفاده داره ، یکیش اینطوری هست که بعد ازusebean و بیرونش نوشته بشه،مثل این:

<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>

 یکیش هم این هست که داخل usebean نوشته بشه:

<jsp:useBean id = "myName" ... >
   ...
   <jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>

روش اول همیشه اجرا میشه ولی روش دوم فقط زمانی اجرا میشه که usebean باعث ساخته شدن یک object شده باشه(چون همونطور که ذکر شد usebean در مواقعی که اون object از قبل وجود داشته باشه object جدید نمیسازه)

4-jsp:getProperty

یک property از یک JavaBean رو چاپ می کنه.این هم عملا همون توابع getter تو java هستش.یعنی یک property از یک object از یک کلاس رو برمی گردونه.به طور کلی به صورت زیر استفاده می شه:

<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>

برای اینکه تمرین کنیم که چطور میشه یک javabean تعریف کرد و ازش استفاده کرد اول یک کلاس به صورت زیر تعریف کنید:

 

/* File: TestBean.java */
package action;
 
public class TestBean {
   private String message = "No message specified";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

 

حالا این کلاس رو کامپایل کنید و فایل TestBean.class ساخته شده رو تو آدرس زیر کپی کنید:

آدرس تامکت\webapps\WEB-INF\classes\action

خوب حالا می تونید با نوشتن کدی مثل کد زیر به متد های اون دسترسی پیدا کنید:

 

<html>
   
   <head>
      <title>Using JavaBeans in JSP</title>
   </head>
   
   <body>
      <center>
         <h2>Using JavaBeans in JSP</h2>
         <jsp:useBean id = "test" class = "action.TestBean" />
         <jsp:setProperty name = "test"  property = "message" 
            value = "Hello JSP..." />
            
         <p>Got message....</p>
         <jsp:getProperty name = "test" property = "message" />
      </center>
   </body>
</html>

5-jsp:forward

یه چیزی مثل redirect کردن هست: کاربر رو به یک صفحه دیگه هدایت می کنه.به طور کلی به صورت زیر استفاده می شه:

 <jsp:forward page = "آدرس نسبی" />

 مثلا:

<jsp:forward page = "date.jsp" />

6-jsp:plugin

یک کد مخصوص مرورگر کاربر رو تولید می کنه که یک object یا تگ embed شده رو برای پلاگین java میسازه.به طور کلی به صورت زیر استفاده می شه:

<jsp:plugin type = "applet" codebase = "dirname" code = "MyApplet.class"
   width = "60" height = "80">
   <jsp:param name = "fontcolor" value = "red" />
   <jsp:param name = "background" value = "black" />
 
   <jsp:fallback>
      پیام خطا در صورت نیاز
   </jsp:fallback>
 
</jsp:plugin>
 

 

 fallback هم برای این استفاده میشه که در صورتی که نتونه اون پلاگین رو load کنه یک پیام خطا نشون داده بشه.

7-jsp:attribute

برای تعریف متغیر و استفاده از اون در زمان اجرا به کار میره.با استفاده از attribute می تونید یه متغیر به صورت پویا تعریف کنید که بعدا ازش استفاده کنید.واژه پویا یا dynamic رو به خاطر در زمان اجرا بودنش استفاده کردم.

8-jsp:element

برای تعریف یک element زبان xml به صورت dynamic در زمان اجرا به کار میره.

 

9-jsp:body

برای تعریف بدنه یک element زبان xml به صورت dynamic در زمان اجرا به کار میره.

 اینجا می تونید یک مثال کلی برای استفاده از jsp:attribute,jsp:element و jsp:body رو ببینید:

<%@page language = "java" contentType = "text/html"%>
<html xmlns = "http://www.w3c.org/1999/xhtml"
   xmlns:jsp = "http://java.sun.com/JSP/Page">
   
   <head><title>Generate XML Element</title></head>
   
   <body>
      <jsp:element name = "xmlElement">
         <jsp:attribute name = "Developer">
            SweetSoft.ir
         </jsp:attribute>
         
         <jsp:body>
            Hi,We Make Everything
         </jsp:body>
      
      </jsp:element>
   </body>
</html>
   

خروجیش به اینصورت میشه:

 

<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page">
   <head><title>Generate XML Element</title></head>
   
   <body>
      <xmlElement Developer = "SweetSoft.ir">
         Hi,We Make Everything
      </xmlElement>
   </body>
</html>

10-jsp:text

برای نوشتن یک متن template در صفحات و اسناد jsp استفاده میشه.به طور کلی به صورت زیر استفاده می شه:

<jsp:text>Template data</jsp:text>

 مثلا:

	
<message><hello>	
<jsp:text>
welcome to Java server pages persian tutorial from sweet software development group
</jsp:text> </hello></message>

 

خروجیش این کد به صورت زیر میشه:

 

<message><hello>	
welcome to Java server pages persian tutorial from sweet software development group </hello></message>

 

مقاله از : هادی امیرنهاوندی - گروه نرم افزاری Sweet

 منابع:

https://www.tutorialspoint.com/jsp/jsp_actions.htm

https://beginnersbook.com/2013/12/difference-between-include-directive-and-include-tag-in-jsp/