2013-10-04 60 views
-1

我是JSP新手。我使用JSP創建了一個Web應用程序。關於在JSP中使用腳本庫

我將JSP代碼寫入JSP腳本(<%.....%>)中。
對於數據庫連接,我也採取了同樣的方式。
例子:

html code; 
    <% 
    database connectivity code; 

    %> 

    some jquery code; 

<% 

    again database connectivity code; 
%> 

但有些人告訴我說,它有一個很大的缺點就是 「通過使用只有一個人可以在同一時間使用你的網站不衝突的scriptlet聲明」
我做對? 以這種方式構建Web應用程序是正確的方式嗎?

+3

不,這是編寫Web應用程序的可怕方法。從['jsp'](http://stackoverflow.com/tags/jsp/info)開始查看我們的各種wiki站點。 –

+0

http://stackoverflow.com/questions/5818101/why-business-logic-should-be-moved-out-of-jsp –

+0

忘了JSP,開始使用Servlet,JSP通常用於簡單的常量頁面。 – 2013-10-04 18:42:42

回答

1

這是一個壞主意,但這不是因爲一次只有一個人可以使用該網站。這是一個壞主意,因爲代碼將變得難以維護。您的數據庫連接代碼應該與您的查看邏輯分開。也許把它放在servlet(理想情況下它會在一些持久層中被抽象掉)。該servlet將從數據庫中獲取數據並使其可供jsp呈現。

0

就像servlet一樣,JSP也被翻譯成servlet然後編譯,所以無論你在JSP聲明塊中聲明什麼,即<%! ... %>都會直接在已翻譯的Servlet中聲明。而就servlet而言,在整個服務器生命週期中只有一次servlet實例,並且只有來自該實例的新創建的線程纔會調用服務方法。因此,如果同時發生請求,它們可能會更改相同的數據成員,並可能導致意外的結果

+0

*無論您在JSP聲明塊中聲明什麼聲明塊都將被視爲已翻譯Servlet的屬性*這是** false **,在scriptlets中聲明的變量將在'_jspService'方法中被視爲局部變量。 –

+0

我已經提到了聲明塊,意思是不是scriplet塊<% %> – Vijay

+0

我看不到你的答案中的任何部分,你**明確**顯示'<%! ... %>'的用法。 –

0

如果腳本中的代碼導致發生這種情況,JSTL, Struts等都生成java代碼,看起來就像JSP和scriptlet生成的代碼一樣。

這就是說,使用scriptlets被認爲是不好的做法,因爲它會導致錯綜複雜的代碼。嘗試使用JSTL使用bean,而不是使用你的java邏輯。您的JSP看起來會更好,更容易維護。