課程
/后端開發(fā)
/Java
/JAVA遇見HTML——JSP篇
如題:jsp腳本和jsp表達式有什么區(qū)別?怎么用?
2016-07-17
源自:JAVA遇見HTML——JSP篇 3-4
正在回答
?1. 先界定一下題目中概念。
(1)jsp腳本:有的地方也叫java腳本,指用<%%>括起來的jsp頁面中的java腳本。所有能在java程序中執(zhí)行的代碼,都可以通過jsp腳本執(zhí)行。
(2)jsp聲明:用<%!聲明部分%>形式聲明的變量和方法??梢灾苯佑迷趈sp腳本中。
(3)jsp輸出表達式:用<%=表達式%>輸出表達式的值,效果與jsp腳本中的out.println相同。表達式后面不能有分號。
(4)javascript:頁面中<script></script>之間的代碼,簡稱js。js插入的位置不同,執(zhí)行效果也不同。放在<head>中的js調(diào)用時才執(zhí)行,而放在<body>部分的在網(wǎng)頁讀到這部分時就會執(zhí)行。也可以像添加外部CSS一樣添加外部javaScript腳本文件,其后綴通常為.js。例如:
<head>
???????? <script src="example.js"></script>
</head>
(5) 剩下的幾個好像就沒有必要解釋了,在此略過。
2. jsp腳本、jsp聲明、jsp輸出表達式之間
jsp聲明中聲明的變量和方法對應于Servlet中的成員變量和方法(可以從tomcat的work\Catalina\localhost目錄下找到轉(zhuǎn)換成的類)。可以在jsp腳本和jsp輸出表達式中直接使用。
jsp腳本中定義的變量也可以在jsp輸出表達式中使用。例如:
<!-- 下面是JSP聲明部分 --><%!public int count;public String info(){?return "hello";}%><%Integer i=10;
out.println(count++);%><%out.println(info());%>
<%=count++%>
<%=info()%>
<%=i%>
3. jsp標簽、struts2標簽和javascript之間
用var orgIP=document.getElementById("address").value之類在javascript中獲取標簽的值。不同的標簽方法讀取值可能會不同。例如,struts2的autocompleter就需要用下面的方式獲得。
?var completer=dojo.widget.byId("name");?var organizationName=completer.comboBoxSelectionValue.value;
而getElementByName用戶獲取一組同名的標簽。
也可以在javascript中設(shè)置標簽的值。例如:
document.getElementById("code").value="test";
4. jsp腳本、struts2 action之間
jsp腳本要訪問struts2 action傳過來的變量,要用到ValueStack。例如:
?<%? ??ValueStack vs = (ValueStack) request.getAttribute("struts.valueStack");????User user=(User)vs.findValue("user");??
??? String name=vs.findValue("name");??
?%>
其中,user和name是action中定義的成員變量,并有對應的getter和setter方法。
5. jsp標簽、struts2標簽、struts2 action之間
struts2 action要訪問jsp標簽、struts2標簽的值,需要有和標簽同名的變量,并有對應的getter和setter方法,這是struts2的傳值機制。當然,struts2 action傳值給result中轉(zhuǎn)向的jsp頁面中的jsp標簽、struts2標簽時,也使用同名機制。注意,值的傳遞是單次的,也就是說,如果jsp1->action1->jsp2,jsp1只能傳值給action1。
?jsp標簽、struts2標簽通過頁面中的form或s:form將值傳遞給action,action通過setter方法或直接給與標簽同名的action成員變量賦值的方法將值傳遞給jsp頁面。
1)對jsp標簽來講,需要使用<s:property>訪問action傳來的值。例如:
<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="user.name"/>" >
<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="name"/>" >
前者傳過來的user是對象,有name屬性;后者傳過來的name是簡單類型數(shù)據(jù),如string。
2)對struts2標簽來講,需要%{變量}的方式訪問傳來的值。例如:
<s:textfield name="name" id="name"? size="40"??value="%{user.name}">?</s:textfield>??
<s:textfield name="name" id="name" size="40"??value="%{name}">?</s:textfield>??
?6. jsp輸出表達式、struts2 action之間
jsp輸出表達式也可以直接輸出struts2 action傳來的值。例如:
<%=pageNum * pageSize%>
其中,pageNum和pageSize是struts2 action傳來的值。
7. javascript訪問struts2 action傳來的數(shù)據(jù)
使用s:property讀取即可。下例中,smsUnit是從action傳過來的變量。
document.getElementById("smsUnit").value="<s:property value="smsUnit"/>"
?
暫時想到這些,遺漏的以后再補充吧。
夏夜華語 提問者
jsp腳本<br><% 腳本內(nèi)容 %><br>jsp表達式<%=表達式%> //表達式不以;結(jié)束。
舉報
Java Web入門級教程JSP,帶你輕松的學習JSP基礎(chǔ)知識
1 回答jsp腳本和jsp表達式有什么區(qū)別?怎么用?
2 回答Jsp腳本和表達式有啥區(qū)別?
1 回答jsp中腳本和表達式的區(qū)別?用法有什么不同?
2 回答jsp腳本與表達式
1 回答jsp表達式和腳本的問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-07-17
?1. 先界定一下題目中概念。
(1)jsp腳本:有的地方也叫java腳本,指用<%%>括起來的jsp頁面中的java腳本。所有能在java程序中執(zhí)行的代碼,都可以通過jsp腳本執(zhí)行。
(2)jsp聲明:用<%!聲明部分%>形式聲明的變量和方法??梢灾苯佑迷趈sp腳本中。
(3)jsp輸出表達式:用<%=表達式%>輸出表達式的值,效果與jsp腳本中的out.println相同。表達式后面不能有分號。
(4)javascript:頁面中<script></script>之間的代碼,簡稱js。js插入的位置不同,執(zhí)行效果也不同。放在<head>中的js調(diào)用時才執(zhí)行,而放在<body>部分的在網(wǎng)頁讀到這部分時就會執(zhí)行。也可以像添加外部CSS一樣添加外部javaScript腳本文件,其后綴通常為.js。例如:
<head>
???????? <script src="example.js"></script>
</head>
(5) 剩下的幾個好像就沒有必要解釋了,在此略過。
2. jsp腳本、jsp聲明、jsp輸出表達式之間
jsp聲明中聲明的變量和方法對應于Servlet中的成員變量和方法(可以從tomcat的work\Catalina\localhost目錄下找到轉(zhuǎn)換成的類)。可以在jsp腳本和jsp輸出表達式中直接使用。
jsp腳本中定義的變量也可以在jsp輸出表達式中使用。例如:
<!-- 下面是JSP聲明部分 -->
<%!
public int count;
public String info()
{?return "hello";}
%>
<%
Integer i=10;
out.println(count++);
%>
<%
out.println(info());
%>
<%=count++%>
<%=info()%>
<%=i%>
3. jsp標簽、struts2標簽和javascript之間
用var orgIP=document.getElementById("address").value之類在javascript中獲取標簽的值。不同的標簽方法讀取值可能會不同。例如,struts2的autocompleter就需要用下面的方式獲得。
?var completer=dojo.widget.byId("name");
?var organizationName=completer.comboBoxSelectionValue.value;
而getElementByName用戶獲取一組同名的標簽。
也可以在javascript中設(shè)置標簽的值。例如:
document.getElementById("code").value="test";
4. jsp腳本、struts2 action之間
jsp腳本要訪問struts2 action傳過來的變量,要用到ValueStack。例如:
?<%
? ??ValueStack vs = (ValueStack) request.getAttribute("struts.valueStack");
????User user=(User)vs.findValue("user");??
??? String name=vs.findValue("name");??
?%>
其中,user和name是action中定義的成員變量,并有對應的getter和setter方法。
5. jsp標簽、struts2標簽、struts2 action之間
struts2 action要訪問jsp標簽、struts2標簽的值,需要有和標簽同名的變量,并有對應的getter和setter方法,這是struts2的傳值機制。當然,struts2 action傳值給result中轉(zhuǎn)向的jsp頁面中的jsp標簽、struts2標簽時,也使用同名機制。注意,值的傳遞是單次的,也就是說,如果jsp1->action1->jsp2,jsp1只能傳值給action1。
?jsp標簽、struts2標簽通過頁面中的form或s:form將值傳遞給action,action通過setter方法或直接給與標簽同名的action成員變量賦值的方法將值傳遞給jsp頁面。
1)對jsp標簽來講,需要使用<s:property>訪問action傳來的值。例如:
<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="user.name"/>" >
<input name="name" type="text" class="form_field_default" size="50" id="name" value="<s:property value="name"/>" >
前者傳過來的user是對象,有name屬性;后者傳過來的name是簡單類型數(shù)據(jù),如string。
2)對struts2標簽來講,需要%{變量}的方式訪問傳來的值。例如:
<s:textfield name="name" id="name"? size="40"??value="%{user.name}">?</s:textfield>??
<s:textfield name="name" id="name" size="40"??value="%{name}">?</s:textfield>??
?6. jsp輸出表達式、struts2 action之間
jsp輸出表達式也可以直接輸出struts2 action傳來的值。例如:
<%=pageNum * pageSize%>
其中,pageNum和pageSize是struts2 action傳來的值。
7. javascript訪問struts2 action傳來的數(shù)據(jù)
使用s:property讀取即可。下例中,smsUnit是從action傳過來的變量。
document.getElementById("smsUnit").value="<s:property value="smsUnit"/>"
?
暫時想到這些,遺漏的以后再補充吧。
2016-07-17
jsp腳本<br>
<% 腳本內(nèi)容 %><br>
jsp表達式
<%=表達式%> //表達式不以;結(jié)束。