后台通過request.setAttribute向前台傳值,前台如何去獲取其中的對象或屬性值


講這些,我們先來了解一下request.setAttribute和request.setAttribute()這兩種方法的作用。

request.getAttribute("nameOfObj"); 可得到jsp頁面表單中輸入框內的value。(其實表單控件中的Object的name與value是存放在一個哈希表中的,所以在這里給出Object的name會到哈希表中找出對應它的value)

request.setAttribute(position,nameOfObj);屬於頁面之間的傳值,從a.jsp到b.jsp一次傳遞,之后這個request就會失去他的作用范圍,再傳就要重新設一個request.setAttribute()。(使用session.setAttribute()會在一個過程中始終保持這個值)

注:javascript與jsp中不能相互傳值,因為javascript運行在客戶端,jsp運行在服務器端。若想使他們能夠相互傳參數,可以在jsp頁面中設置一個hidden屬性的控件,用它的value來傳遞所需的數值。

1、把js直接寫在了JSP頁面,所以能獲取到。如果單獨把JS抽離出來是不可能獲取到的。前者服務端解析能或許到,后者客戶端解析獲取不到。

2、js里是在客戶端執行的,不能直接獲取,因為EL表達式是在服務器的時候被解析的,所以可以獲取到。一個是客戶端的東西,一個是服務器端的東西。

3、jsp能取到,那是因為他本身就是servlet。js不可能有方法直接獲取到HttpServletRequest里面的屬性值。

4、setAttribute是服務器行為,到了客戶端就無效了,也談不上如何用。除非你在jsp的時候就寫到js變量里,或者使用ajax請求你需要的數據。

下面開始進入正題:

java后台通過:

request.setAttribute("msg","成功!!");

在jsp/html頁面就可以通過EL表達式獲取到request中設置的屬性值:

<div>${msg}</div>

js中獲取request中的值,就有兩種方式:

第一種:

var msg="<%=request.getAttribute("msg")%>";
alert(msg);

第二種:

var msg="${msg}";
alert(msg);

這里不能寫在引入的js頁面中,上面已經說了,他們解析的方式不同,寫在外部的js中識別不了,可以通過在html.jsp頁面中設置一個隱藏域,然后獲取它的value值。如:

JSP中:
<input type="hedden" value="${student.name}" id="stuName"/>
javascript中:
var stuName=$('stuName').value;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM