2011-08-19 41 views
0

我是JSP EL新手。我讀了一些EL文本,得到了下面的代碼:關於使用JSP EL進行一些計算的問題?

<body> 
     <h1>Hello World!</h1> 
     <% 
     String s1 = "aaa "; 
     String s2 = "22"; 
     Double dObj = new Double(3.5); 
     int a; 
     a = 12; 
     %> 
     s1 + s2 = ${ s1 + s2 } <br> 
     a + 2 = ${a + 2} <br> 
     dObj + 2 = ${dObj + 2} <br> 
     2 + 2 = ${"2" + 2} 
    </body> 

而且結果:

s1 + s2 = 0 (1) 
a + 2 = 2 (2) 
dObj + 2 = 2 (3) 
2 + 2 = 4 (4) 

我能理解(4)的結果,但與結果沒有想法(1) ,(2)和(3)。任何人都可以詳細說明嗎?

+1

無論你做什麼,都不要使用scriptlets! – Kris

回答

2

EL變量引用頁面,或請求或會話或應用程序作用域屬性(按照該順序檢查每個作用域)。他們不引用本地scriptlet變量。

所以,請你以後不要在命名s1s2adObj任何範圍內的任何屬性,使用默認值(0)。

的結果,將會是你期待的那些,如果scriptlet代碼將是如下:

<% 
    String s1 = "aaa "; 
    String s2 = "22"; 
    Double dObj = new Double(3.5); 
    int a; 
    a = 12; 

    request.setAttribute("s1", s1); 
    request.setAttribute("s2", s2); 
    request.setAttribute("dObj", dObj); 
    request.setAttribute("a", a); 

    %> 

在一個架構良好的應用程序,這些屬性會通過將分發到一個servlet設置您的JSP或JSP標籤(例如<c:set>),但不能通過scriptlet。 Scriptlet不應該再使用了。