JSP 1.2 | JSP 2.0 |
|
|
ထို့အပြင် View ကို ရေးသားရာတွင် မှားယွင်းလွယ်သော Script ကုဒ်များကို ရေးသားသည်ထက် ဒီဇိုင်းရေးရလွယ်ကူသော Action များကို အသုံးပြုသည်က ပို၍ကောင်းပါသဖြင့် တတ်နိုင်သလောက် Action များကို အသုံးပြုရန် တိုက်တွန်းအပ်ပါသည်။
JSP 2.0 ၏ Tag များသည် Custom Tag များတွင် အသုံးပြုသော Action များဖြစ်ပါသဖြင့် Custom Tags များအကြောင်းကို ဖော်ပြရင်း ဆက်လက် ဖော်ပြသွားပါမည်။
Java Bean များအား အသုံးပြုခြင်း
<jsp:useBean>
Java Bean များအား instance အဖြစ်ပြုလုပ်ပြီး၊ အသုံးပြုလိုသည့် Scope အတွင်းတွင် သတ်မှတ်ထားခြင်း အားဖြင့်၊ JSP စာမျက်နှာများမှ အသုံးပြုနိုင်ရန် ပြုလုပ်နိုင်သော Action တစ်မျိုးဖြစ်ပါသည်။ အကယ်၍ instance လုပ်ပြီး ဆိုပါက နောက်တစ်ကြိမ် instance လုပ်မည် မဟုတ်ပေ။ တဖန် useBean ၏ attribute ၏ တန်ဖိုးများအား Script ဖြင့် ရေးသား၍ မရနိုင်ပေ။
Attribute | ရှင်းလင်းချက် |
id | Java Bean ၏ instance ၏ အမည် ဖြစ်ပါသည်။ page အတွင်းတွင် တစ်ခုတည်းသာ ရှိရမည် ဖြစ်ပါသည်။ အမည်တူ instance ကို ရေးသား၍ မရနိုင်ပေ။ ထို့အပြင် မဖြစ်မနေ ရေးသားရန် လိုအပ်သော Attribute တစ်မျိုးဖြစ်ပါသည်။ |
scope | instance ကို အသုံးပြုနိုင်သည့် Scope ကို ဤ Attribute ဖြင့် သတ်မှတ်ရပါသည်။
|
class | Java Bean Instance ၏ Class အမည် ဖြစ်ပါသည်။ Instance အား new လုပ်ရာတွင် အသုံးပြုပါသည်။ |
beanName | Java Bean Instance ၏ Class အမည် ဖြစ်ပါသည်။ Instance အား new လုပ်ရာတွင် class ကို အသုံးမပြုလိုပါက အသုံးပြုရန် လိုအပ်ပါသည်။ အကယ်၍ serializable လုပ်နိုင်သော Class ဆိုပါက Serialize လုပ်သွားမည် ဖြစ်ပါသည်။ |
type | beanName ဖြင့် Instance ကို ပြုလုပ်ရာတွင် အသုံးပြုမည့် ပုံစံ ဖြစ်ပါသည်။ |
နမှုနာတစ်ခုကို ရေးသားကြည့်ပါမည်။ Car ဆိုသည့် Java Bean Class တစ်ခုကို ရေးသားပြီး useBean Action ကို အသုံးပြုကြည့်ပါမည်။
Car.java
useBean ဖြင့် JSP အတွင်းတွင် အသုံးပြုပုံ
Car.java
package com.mmju.jsp.ep2; public class Car { private String brand; private String model; private String year; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public String getYear() { return year; } public void setYear(String year) { this.year = year; } }useBean တွင် အသုံးပြုမည့် Java Bean Class သည်၊ parameter မပါသော public constructor တစ်ခုကို ပိုင်ဆိုင်ရန်လိုအပ်ပြီး၊ getter နှင့် setter မက်သတ်များကို ပိုင်ဆိုင်ရန် လိုအပ်ပါသည်။
useBean ဖြင့် JSP အတွင်းတွင် အသုံးပြုပုံ
<jsp:useBean id="gtr" class="com.mmju.jsp.ep2.Car" scope="request"></jsp:useBean>
<jsp:setProperty> နှင့် <jsp:getProperty>
<jsp:useBean> ဖြင့် ခေါ်ယူအသုံးပြုလိုသော Java Bean အချက်အလက် တန်ဖိုးများအား သတ်မှတ်ရာတွင်၎င်း၊ အချက်အလက်၏ တန်ဖိုးအား ရယူရာတွင် ၎င်း အထက်ပါ Action များအား အသုံးပြုနိုင်ပါသည်။ အမည် အတိုင်း တန်ဖိုးများအား သတ်မှတ်ရာတွင် <jsp:setProperty> ကို အသုံးပြုနိုင်ပြီး၊ တန်ဖိုးများအားရယူ ရာတွင် <jsp:getProperty> ကို အသုံးပြုနိုင်ပါသည်။
setProperty Tag ၏ Attributes များ
Attribute | ရှင်းလင်းချက် |
name | အသုံးပြုမည့် Java Bean ၏ instance ၏ အမည် ဖြစ်ပါသည်။ ဤ setProperty အတွက် မရှိမဖြစ်လိုအပ်သော Attribute တစ်မျိုးဖြစ်ပါသည်။ |
property | အသုံးပြုလိုသည့် Property အား သတ်မှတ်ရန် လိုအပ်ပါသည်။ အကယ်၍ "*" ကို သတ်မှတ်ခဲ့ပါက instance ၏ property ၏ အမည်တူ တန်ဖိုးများအား request အတွင်းမှ ရှာဖွေ၍ သတ်မှတ်သွားနိုင်မည် ဖြစ်သည်။ property Attribute ကို အသုံးပြုနိုင်ရန်အတွက် instance ၏ property တွင် public setter method ကို ကြိုတင် ရေးသားထားရန် လိုအပ်ပါသည်။ ဤ setProperty အတွက် မရှိမဖြစ်လိုအပ်သော Attribute တစ်မျိုးဖြစ်ပါသည်။ |
param | ဤ param Attribute ကို အသုံးပြုထားပါက၊ param နှင့် အမည်တူ ပါရာမီတာကို request အတွင်းမှရှာဖွေ၍ property ၏ တန်ဖိုးအဖြစ် အသုံးပြုသွားမည် ဖြစ်ပါသည်။ |
value | value Attribute အား ရေးသားထားပါက၊ ထိုတန်ဖိုးကို instance ၏ တန်ဖိုးအဖြစ် အသုံးပြုသွားမည် ဖြစ်၏။ အကယ်၍ property ၏ တန်ဖိုးသည် "*" ဟု ရေးသားထားခြင်း မရှိပါက param သို့မဟုတ် value Attribute ကို ရေးသားရန်လိုအပ်ပါသည်။ ဤ value Attribute တွင် script ကုဒ်များကိုလည်း အသုံးပြုနိုင်မည် ဖြစ်ပါသည်။ |
လက်တွေ့ ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
<jsp:setProperty name='car' property='model' param='model' /> <jsp:setProperty name='car' property='brand' value='မာစီဒီး'/> <jsp:setProperty name='car' property='year' value='<%=year%>'/>
getPropety Tag ၏ Attributes များ
Attribute | ရှင်းလင်းချက် |
name | အသုံးပြုမည့် Java Bean ၏ instance ၏ အမည် ဖြစ်ပါသည်။ ဤ getProperty အတွက် မရှိမဖြစ်လိုအပ်သော Attribute တစ်မျိုးဖြစ်ပါသည်။ |
property | အသုံးပြုလိုသည့် Property အား သတ်မှတ်ရန် လိုအပ်ပါသည်။ property Attribute ကို အသုံးပြုနိုင်ရန်အတွက် instance ၏ property တွင် public getter method ကို ကြိုတင် ရေးသားထားရန် လိုအပ်ပါသည်။ ဤ getProperty အတွက် မရှိမဖြစ်လိုအပ်သော Attribute တစ်မျိုးဖြစ်ပါသည်။ |
လက်တွေ့ ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
<jsp:getProperty name='car' property='model' />
Include နှင့် Forward
Servlet တွင်လည်း ဖော်ပြခဲ့သည့်အတိုင်း forward နှင့် Include များကို JSP Action အနေဖြင့် အသုံးပြုနိုင်ပါသည်။ Include ကို အသုံးပြု၍ အခြားသော JSP ဒါမှမဟုတ် Servlet ၏ လုပ်ဆောင်ခြားများကို လက်ရှိ အသုံးပြုနေသော JSP အတွင်းတွင်၎င်း၊ Forward Action ကို အသုံးပြု၍ အခြားသော Servlet ဒါမှမဟုတ် JSP အား လက်လွှဲ၍ Request လုပ်နိုင်ပါသည်။
အသုံးပြုနိုင်သော Attribute များမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
Attribute | ရှင်းလင်းချက် |
page | Include ဒါမှမဟုတ် Forward လုပ်မည့်စာမျက်နှာ၏ URL ကို ရေးသားရပါမည်။ |
flush | true နှင့် false တစ်ခုခုကို သတ်မှတ်နိုင်ပြီး၊ ရေးသားပြီးသောအခါ Buffer အား Flush လုပ်မည် မလုပ်မည်ကို ဖော်ပြပေးနေပါသည်။ Include Action မှာသာအသုံးပြုပါသည်။ ဘာမှ ရေးသားထားခြင်းမရှိပါက Default အနေနှင့် false ကို အသုံးပြုသွားမည် ဖြစ်ပါသည်။ |
Forward ကို အသုံးပြုရာတွင် Servlet ကဲ့သို့ပင် Forward မတိုင်ခင် အခြားသော Output များကို ရေးသား၍မရပေ။ ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်၏။
<jsp:include page="/jsp/header.jsp" flush="true" /> <jsp:forward page="/jsp/forwardServlet" />
တဖန် Include နှင့် Forward လုပ်သည့်အခါတွင် ပါရာမီတာများကို အသုံးပြုလိုပါက param Action ကို အသုံးပြုနိုင်ပါသည်။
ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်၏။
<jsp:include page="/header"> <jsp:param name="epNum" value="Episode 2" /> <jsp:param name="title" value="Action များကို အသုံးပြုခြင်း" /> </jsp:include> <jsp:forward page="/createCar"> <jsp:param name="msg" value="ဖော်ပြရန် ကားများမရှိပါသဖြင့် ကားအသစ်များကို စာရင်းသွင်းပါ။" /> </jsp:forward>
အသုံးများသော JSP Action များကို ရေးသားပုံနှင့်တကွ ဖော်ပြခဲ့ပါပြီ။ ကျန်သော Action များကိုလည်း နောက်ဆက်တွဲအခန်းများတွင် ဆက်လက်၍ဖော်ပြသွားပါဦးမည်။ ယခင်ဆိုလျှင် ဖော်ပြခဲ့သည် များကို အသုံးပြု၍ နမှုနာတစ်ခုကို ရေးသားလေ့ရှိခဲ့သော်လည်း၊ ဤအခန်းမှစ၍ စာဖတ်သူများလည်း စဉ်းစားနိုင်စေရန် နမှုနာများကို ရေးသားမည် ဖြစ်သော်လည်း၊ ရေးသားထားသော နမှုနာအား မည်သည့်နေရာတွင် အားနည်းနေသည်၊ မည်သို့ပြုလုပ်ပါက ပို၍ကောင်းမွန်လာနိုင်သည် ဆိုသည်ကို ဆွေးနွေးလိုပါသည်။
စာဖတ်သူများနှင့်ဆွေးနွေးထားချက်များသည် နောက်စာဖတ်သူများ အတွက် အဖိုးတန်သော အကြောင်းအရာများအဖြစ် ကျန်ရစ်လိမ့်မည်ဟု မျှော်လင့်ပါသည်။
နမှုနာ အပလီကေးရှင်း
JSP Action ကို အသုံးပြု၍၊ ကားစာရင်းတစ်ခုကို ရေးသားပါမည်။ အမှန်မှာ Data Base ကို အသုံးပြုသင့်သော်လည်း ဤအခန်းတွင် JSP ကို အဓိကထား၍ ဖော်ပြလိုပါသောကြောင့် Application Scope အတွင်းတွင် အချက်အလက်များကို သိမ်းဆည်း အသုံးပြုပါမည်။
အောက်ပါစာမျက်နှာများကို အသုံးပြုသွားပါမည်။
- /page/episode2.html ပင်မစာမျက်နှာဖြစ်ပြီး ကားစာရင်းနှင့် ကားအသစ်သွင်းရန် စာမျက်နှာများဆီသို့ သွားရန် လင့်ခ်များကို ရေးသားထားပါသည်။
- /jsp/episode2/ep2-10.jsp Application Data ထဲတွင်ရှိသော ကားလစ်ကို ခေါ်ယူပြီး၊ တွေ့ရှိပါက ကားစာရင်းကို ဖော်ပြမည် ဖြစ်ပြီး၊ မရှိပါက ကားအသစ်သွင်းရန် စာမျက်နှာများကို အလိုအလျှောက် ဖော်ပြပေးမည် ဖြစ်သည်။
- /jsp/episode2/ep2-11.jsp ကားစာရင်း သွင်းရန် စာမျက်နှာဖြစ်သည်။
- /jsp/episode2/ep2-12.jsp ကားစာရင်း သွင်းထားသော ကားအား ရေးသားထားသည်မှာမှန်ကန်ကြောင်း အသုံးပြုသူကို စစ်ဆေးစေသော စာမျက်နှာဖြစ်ပါသည်။ စာရင်းသွင်းမည်ဟု ခလုပ်နှိပ်ပါက ကားစာရင်း စာမျက်နှာကို ဖော်ပြမည် ဖြစ်ပါသည်။
- /jsp/episode2/ep2-14.jsp စာမျက်နှာ အသီးသီးတွင် ဖော်ပြလိုသော ရှင်းပြချက်ကို ရေးသားထားပြီး၊ စာမျက်နှာ အသီးသီးမှ include လုပ်ခြင်းဖြင့် အသုံးပြုပါသည်။
နမှုနာ အပလီကေးရှင်းကို ဤနေရာမှ လက်တွေ့ စမ်းသပ်အသုံးပြုနိုင်ပါသည်။
ဤစာမျက်နှာကို စမ်းသပ်ကြည့်ပြီး၊ လိုအပ်ချက်များနှင့် မည်သို့ ပြုပြင်သင့်ကြောင်းကို စဉ်းစားကြည့်ပါ။
လေးစားစာဖြင့်
မင်းလွင်
Today, I went to the beach with my children. I found
ReplyDeletea sea shell and gave it to my 4 year old daughter
and said "You can hear the ocean if you put this to your ear." She put the
shell to her ear and screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!
I have read so many posts on the topic of the blogger lovers but this
ReplyDeletepost is truly a fastidious paragraph, keep it up.
Definitely imagine that that you stated. Your
ReplyDeletefavorite reason seemed to be on the net the simplest thing to have
in mind of. I say to you, I certainly get annoyed while other people think about issues that they plainly don't
understand about. You controlled to hit the nail upon the highest and
defined out the whole thing with no need side-effects
, people can take a signal. Will likely be again to get more.
Thank you
I'm truly enjoying the design and layout of your website.
ReplyDeleteIt's a very easy on the eyes which makes it much more pleasant for me to come
here and visit more often. Did you hire out a designer to create your
theme? Superb work!
great submit, very informative. I ponder why the opposite experts of this sector do not notice this.
ReplyDeleteYou must continue your writing. I am confident, you've a huge readers' base already!
When someone writes an post he/she maintains the image of
ReplyDeletea user in his/her brain that how a user can know it.
Therefore that's why this post is perfect. Thanks!