Expression Language หรือ EL นั่นเป็นภาษาที่ช่วยในการเข้าถึง Property ของ Java Object ผ่าน Tag Library ใน JSP นอกจากนี้ EL ยังมี Function ที่มีประโยชน์อีกหลายตัวด้วยกัน EL สามารถใช้ดึงค่าจาก scope ต่างๆได้ โดยเมื่อเปรียบเทียบกับ java จะได้ดังนี้
Expression Language | Java (Scriptlet with implicit objects) |
---|---|
${applicationScope.test} | application.getAttribute(“test”}; |
${sessionScope.test} | session.getAttribute(“test”); |
${requestScope.test} | request.getAttribute(“test”);; |
${pageScope.test} | pageContext.getAttribute(“test”}; |
${test} | pageContext.findAttribute(“test”); |
${param.test} | request.getParameter(“test”) |
ถึงแม้ว่าจะมีการเปรียบเทียบให้เห็นอย่างนี้ว่าทั้ง 2 อย่างอาจใช้แทนกันได้ แต่ในความเป็นจริงแล้ว EL จะเป็นที่ยอมรับมากกว่า และบาง taglib ก็จะบังคับว่าต้องใช้ EL เท่านั้นครับ
มาดูระดับ(Scope) แต่ละอย่างกันนะครับว่าแต่ละอันเป็นยังไง โดยที่ผมยกมานี้เป็นตัวที่คิดว่ามีให้เห็นบ่อยๆ แต่ไม่ได้หมายความว่าอันอื่นไม่ได้ใช้นะครับ ซึ่งเราก็ควรจะเลือกใช้ให้เหมาะสมครับ (พยายามอย่าใช้ระดับใหญ่ๆ เพราะ lifetime มันจะนานกว่า ทำให้เปลือง memory ครับ)
Application หรือก็คือ ServletContext ซึ่งเป็นระดับสูงสุด การอ้างถึง attribute ตัวหนึ่งก็จะเป็นตัวเดียวกันทั้งโปรแกรม โดยทุกเครื