『壹』 jsp中,這兩種js的寫法,有什麼區別
jsp與asp php是同一個級別的,都是運行在伺服器里的腳本格式。
javascript 是直接運行在客戶端的腳本語言。
首先,javascript是netscape發明的,提交給ECMA組織進行標准化,JavaScript在不斷的修訂,從1.0到1.1、1.2、1.3、1.5,而ECMAScript也在不斷的升級,有Edition 1、2、3,其中Edition 3相當於JavaScript 1.5。雖然MS後來參與了標准化,但還是以NS為主導的。目前正在制定的Edition 4也將以Netscape正在制定的JavaScript 2.0協同開發。順便說一下,jscript的文檔在Windows Script 5.6(包含jscript、vbscript和windows host script編譯器)之前是很差的,就是因為ms只是在抄襲而又沒抄全。在我的《javascript隱藏秘技》中,還指出了ms的jscript的幾處實現上的bug(與ECMAScript標準的不一致)。
javascript還有一些其他的實現,比如apache的許多項目,比如resin的jsp實現了js 1.3(類似jscript用於asp)。注意jsp只是一個伺服器腳本語言的規范,並沒有規定一定要用java,事實上有不少jsp engine支持額外的腳本語言,尤其是支持js居多。
DOM和jscript是分離的。W3C DOM 和DHTML也不是一回事。在IE 5之前,jscript只支持MS專有的DHTML(NS也有自己的專有DHTML用於NN系列,MS是仿造它的),但是DOM(文檔對象模型)是W3C制定的標准,不是MS的!到目前為止,仍然是Mozilla(Netscape)對DOM的支持最好(支持所有的DOM Level 1和大多數DOM Level 2特性),IE 6隻支持了絕大多數的DOM Level 1和極少的DOM Level 2特性。
簡單的說,一個jsp程序員必須要是一個Java程序員。而一個能寫javaScript的就不一定了!呵呵
javascrip只是從java語言中提取出來的一部分冬冬,在網頁中用javascript這個東西很不好的,最好不用
『貳』 如何在jsp中插入js
jsp也就是在html中寫一些scriptlet的代碼。就是<%%>,<%!%>,<%=%>中的代碼。
js又是在html中寫腳本代碼,<script>...</script>。
所以直接像在html中寫就可以了。
『叄』 怎麼向jsp頁面寫JavaScript腳本
在JSP頁面中寫JavaScript 腳本有兩個方法
1直接寫
<script type="text/javascript">
alert(1);
</script>
2 寫在js文件中,然後再頁面中引入
<script type="text/javascript" src="json.js" ></script>
其實,在 jsp 頁面里寫 js 和在 HTML 頁面里寫 js 沒啥區別
『肆』 用js輸出jsp標簽
js是無法輸出jsp標簽的來,因為自js運行在客戶端,jsp是運行在服務端的,所以二者不同步,輸出會報錯,本來語法上也是不允許的。
jsp 即 JavaServer Pages. 是一種web後端技術,可以響應客戶端(如:瀏覽器)請求,動態生成HTML、XML或其他格式文檔的Web網頁的技術標准。jsp技術是以Java語言作為腳本語言的,可使用java這種編程語言來進行編程的。
js即 Javascript .是一種編程語言,編程語言是獨立於平台,環境的。語言好比我們說的國語,粵語,只不過javascript是機器能懂的,可編程性的語言。js可以寫前端(js與html,css結合),也可以寫後端(如:node)
『伍』 怎麼在 js 代碼中使用 jsp 標簽或 Java 代碼
JSP 標簽還是很方便的,比如 Struts、Spring 等提供給我們的 JSP 標簽,可以用它們來獲取變數或進行一些計算。比如
struts2 的 <s:url value="/admin/unmi.action"/>
會為我們自動在前面附加上應用上下文,如實際會生成
/testsite/admin/unmi.action。還有更多更方便的標簽使用,比如用標簽獲取到 session 或請求中的數據作為 js
的變數等。
引申此話題的,其實不光是在 JS 中使用 JSP 標簽,可用 JSP 標簽的地方當然可以直接寫 Java 代碼,即 ScriptLet 代碼。
如果是在 JSP 中內嵌的 JS 代碼,那當然好辦,JSP 文件中能用什麼標簽,js 代碼中也能隨便用,因為 JSP 標簽會先在服務端解釋生成相應的 JS 代碼,丟給客戶端執行。
那如果是在單獨的 JS 文件中想要使用 JSP 標簽,該如何辦呢?還直接像 JSP 那樣使用標簽的話,對不起 JS
文件中給你原樣顯示出來,因為 JS 文件不被伺服器端解釋。其實到現在問題也基本有了答案,要解決的問題就是要讓服務端去解釋你的標簽,有兩種方案。
一. js 文件命名為 JSP 文件,寫 js 內容,其中用標簽,然後用 <script src="/scripts/tags.js.jsp"></script> 把該 JSP 文件當作 JS 文件那樣引入。
因為 JSP 文件會被服務端解釋,所以把該 JSP 文件當作 JS 文件來寫,JS 文件里應該是什麼,你的 JSP
文件也應該輸出什麼,只是裡面可以放標簽,要知道它將會輸出什麼。用 <script> 來引入的話,頁面順理的把它認為是一段外部 JS
代碼。
例如文件 /scripts/tags.js.jsp 中的內容是:
<%@ taglib prefix="s" uri="/struts-tags" %>
var currentUser = '<s:property value="#session.userName" />';
alert("currentUser: " + currentUser);
那麼在某個網頁中用 <script src="/scripts/tags.js.jsp"></script> 引入該文件時,上面的 JS 代碼將會彈出當前 session 中的用戶名來。
上面代碼執行都沒問題的,但是你直接瀏覽 http://unmi/testsite/scripts/tags.js.jsp 你看到的是擠在一團的代碼,不像查看普通 JS 文件那樣有清晰的換行和退格,原因是瀏覽器默認只認擴展名,它的 mime 類型,也就是 Content-Type text/html。要讓它更像是個 JS 文件那得給它加上響應類型的設置,在 tags.js.jsp 文件第一行加上:
<%response.setContentType("text/javascript;charset=utf-8");%>
這時候對於瀏覽器來說,無論從哪個方向來看它都是個切切實實的 JS 文件,只擴展名不同罷了。
上面的方法實際表現是沒什麼問題的,不過還有兩點不那麼完美,第一,文件名看起來像 JSP 文件,有些令人誤解;第二,在 IDE 中打開該 JSP 文件,沒法應用 JS 的語法加亮,給編輯帶來不少麻煩。下面的方法充分解決前面兩個問題。
二. 直接在 JS 文件中使用 JSP 標簽
講下原理,不是說應用伺服器端默認不解釋 JS 中的標簽嗎,那我們可以讓個別的 JS 文件同樣受到伺服器端的關注,不是把 js 原文直接拋給客戶端,而是先解釋其中的標簽,或是其中的 java 代碼。
Tomcat 這種應用伺服器我們通常也會稱它為 Servlet 容器,因為它執行的是 Servlet,JSP 自然也是 Servlet。在 %TOMCAT_HOME%/conf/web.xml 中我們可以看到實際處理 JSP 文件的 Servlet 是:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
org.apache.jasper.servlet.JspServlet,所以我們可以在自己應用的 web.xml
文件中配置某些特別的文件同樣由 JspServlet 來處理。比如要特別處理 /scripts/tags.js 文件,在應用的 web.xml
中只要加上:
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>
注意,上面是 Tomcat 6.x 或更早版中應用的 web.xml 的寫法,後來 servlet-mapping 中
url-pattern 可同時寫多個,加上 Tomcat 7 自身的古怪,這一設置會覆蓋掉原 jsp 的設置,所以在 Tomcat 7
中應用必須配置成如下(也就是必須默認項也帶上,然而列出自己的希望被當作 jsp 的 js 文件,可多個,不把 *.jsp/*.jspx
帶上的話,你原有的 jsp 會當作文本文件直接展示出源碼來):
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>
我們配置 /scripts/tags.js 要由 JspServlet 來處理,不會影響到現有的其他任何 JS 文件。
那現在的 /scripts/tags.js 可不是普通的 js 文件了,它可是具有放置 JSP 標簽和寫 Java
代碼的超能力了,因為其中的 JSP 標簽和 Java 代碼首先會經由服務端來解釋。它集 JS 和 JSP 於一身,另外也別忘了給該 JS
文件前面加上代碼:
<%response.setContentType("text/javascript;charset=utf-8");%>
不然單獨瀏覽它也就只是不那麼好看。
無疑,這是目前我能想的最完美的一種方式了,且兼容於其他的 Servlet 容器,也不用改動公共部分的東西。/scripts/tags.js 在 JS IDE 中打開也漂亮多了,因為它就是個 JS 文件,只是被賦予了 JSP 的功能。
『陸』 在js裡面可以寫jsp語句嗎
不行,要做到這樣請參照ajax
『柒』 能不能在javascript中嵌入jsp代碼
在javascript中嵌入jsp代碼和在jsp中動態組裝javascript代碼是不一樣的概念。
如果你的javascript寫在了html頁面中,那麼你的jsp代碼是不會被編譯的。
如果你在jsp中動態組裝了javascript代碼,那麼jsp頁面會被編譯為一個class類,這個類會跟你寫的邏輯會輸出(out.println()方式)javascript代碼。舉例來說:
在javascript中寫jsp代碼:
<javascript>
alert(「<% int i=1; i++; out.println(i); %>」);
</javascript>
上面的代碼段如果放在jsp頁面中<% int i=1; i++; out.println(i); %>會被編譯,但是放在HTML頁面中不會被編譯。
在jsp頁面中動態組裝javascript代碼:
<% if(loginType =="admin"){
out.println("<javascript> function ShowType{ document.getElementById('type').innerHTML = "admin" } </javascript>");
}else{
out.println("<javascript> function ShowType{ document.getElementById('type').innerHTML = "admin" } </javascript>");
}%>
上面這個jsp代碼段放在合適的jsp頁面中這個javascript是會被發送到client的,你就可以在client使用這個ShowType方法。
總之一句話:javascript代碼是給瀏覽器執行的,jsp代碼是在server端編譯的,jsp代碼必須放在jsp頁面中經server編譯,而javascript只要發送給client就行。
『捌』 在jsp中javascript的代碼應該寫在那裡啊
最好是單獨寫個文件夾,然後寫個js文件放置
然後在jsp頁面通過
<script src="js文件的相對地址">來導入。
當然你回寫在<head>里也可以答。
最好能不寫在頁面里就不寫在頁面里。。
實現一般都用外部js文件導入。一是分離開,方便修改。二是可以js代碼復用。
你想啊,只寫在一個jsp里,如果我另一個要用怎麼便????你復制過去嗎???這個和java里的封裝方法一個思想
所以建議通過外部 js導入
像樓主提供的這種簡單的js。一般直接放在頁面中即可。我說的是方法比較多的情況才用外部文件。
這個也不難區別的。
『玖』 jsp中 怎麼引用一個外部 JavaScript 這個外部的JavaScript怎麼寫
jsp中引用外部JS文件<script language="javascript" src="js文件名"></script>,然後就可以直接調用裡面的方法了
js文件編寫:直接編回寫就可以了,只是不需要<script>標簽答了,記得後綴名為.js