『壹』 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