在javascript中嵌入java脚本代码

aipb2008 2008-10-12 12:47:22
在jsp中

如:

<script>
function f(){
<%
//java脚本
int i = 0;
++i;
System.out.println(i);
%>
}
</script>

请问在这个jsp页面上调用多次f,f中的java脚本执行了多次还是一次?输出的i总是1还是递增的?
最后请解释下这个文件被翻译为java文件时,这种嵌入代码是怎样的!
...全文
1328 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanjingchi 2009-09-04
  • 打赏
  • 举报
回复
10楼是对的,然后再看看这句话,请记住一点,在jsp中,无论怎样,都优先执行java代码,在客户端是不会执行java代码的,就可以了
aipb2008 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ace112212 的回复:]
int i=0 写在 外面啊 不然你每次进来每次 的i 都是0 当然打印1 了
[/Quote]

这就是问题所在啊,他们说js代码在前台执行,跟后台编译的java代码是分离的,但是js又确实控制了java代码的执行。
aipb2008 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ace112212 的回复:]
int i=0 写在 外面啊 不然你每次进来每次 的i 都是0 当然打印1 了
[/Quote]

这就是问题所在啊,他们说js代码在前台执行,跟后台编译的java代码是分离的,但是js又确实控制了java代码的执行。
aipb2008 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ace112212 的回复:]
int i=0 写在 外面啊 不然你每次进来每次 的i 都是0 当然打印1 了
[/Quote]

这就是问题所在啊,他们说js代码在前台执行,跟后台编译的java代码是分离的,但是js又确实控制了java代码的执行。
ace112212 2008-10-17
  • 打赏
  • 举报
回复


<script>
function f(){
<%
//java脚本
int i = 0;(写到 function外面 不然每次执行的是否 i 都被初始化为0)
++i;
System.out.println(i);
%>
}
</script>



<script>
]<% int i=0%>

function f(){
<%
//java脚本
++i;
System.out.println(i);
%>
}
</script>


ace112212 2008-10-17
  • 打赏
  • 举报
回复
int i=0 写在 外面啊 不然你每次进来每次 的i 都是0 当然打印1 了
cd2001zxm 2008-10-17
  • 打赏
  • 举报
回复
我不知道各位大侠是如何测试的

<html>
<head>
<title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>
<script language="JavaScript">
function f (id){
<%
for (int i = 0;i <10;++i){
%>
if (id == <%=i %>){

<%
System.out.println(i);
%>
}
<%
}
%>
}
</script>
</head>
<body>
<select name="sl" onchange="f(this.value)">
<option value ="1">11111</option>
<option value ="2">22222</option>
<option value="3">33333</option>
<option value="4">44444</option>
<option value="5">55555</option>
</select>
</body>
</html>


我测试时就是刚进页面的时候,相当于
<%
for (int i = 0;i <10;++i){
%>
if (id == <%=i %>){

<%
System.out.println(i);
%> 所以控制台输出0-9,

然后select的onchage时候我没看到控制台再有数据输出。不知哪位如何测试的,可否把jsp代码贴出来
qiandongbo 2008-10-16
  • 打赏
  • 举报
回复
完了,LZ,你把我给带入了一个疑惑,却无人解之,天啊~
aipb2008 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tangcaolao 的回复:]
function f (id){
<%
for (int i = 0;i <10;++i){
%>
if (id == <%=i %>){
<%
System.out.println(i);
%>
}
<%
}
%>
}

这个在for循环是在后台执行的,首先这个是JAVA代码,那么WEB服务器肯定是要执行这个循环,没啥特别,循环10次的
[/Quote]

你说循环几次和js的条件无关?你区试试就知道了!
sellcoffe 2008-10-14
  • 打赏
  • 举报
回复
你越想越偏了
qiandongbo 2008-10-14
  • 打赏
  • 举报
回复
如果我把这个函数注册给一个submit,按照原本的思想,因为
scriptlet是转为_jspXX()方法中的语句,而被doGet或者doPost方法所调用
,并不会传递到客户端,那么现在这个函数应该为10楼那个样子,也就是
按下submit,什么都不会执行,现在的问题是按下后,控制台输出了数据~
fz04003 2008-10-14
  • 打赏
  • 举报
回复
唉,类似问题直接做个jsp然后放在tomcat下,启动tomcat执行以下一下,在work中就有对应解析好后的selvert文件啊,一看就知道哦。
sellcoffe 2008-10-14
  • 打赏
  • 举报
回复
你还没搞明白,JAVA代码在服务器端是执行循环10次,在客户端是啥也不做,还不理解?并不是因为有if (id == <%=i %>)这个判断,才会阻后台执行的,前台是前台,后台是后台,后台JAVA代码优化级是大于前台JS的,明白不?
qiandongbo 2008-10-14
  • 打赏
  • 举报
回复
楼上的哥们,别空口说话啦,自己去执行下就知道结果了
sellcoffe 2008-10-14
  • 打赏
  • 举报
回复
function f (id){
<%
for (int i = 0;i <10;++i){
%>
if (id == <%=i %>){
<%
System.out.println(i);
%>
}
<%
}
%>
}

这个在for循环是在后台执行的,首先这个是JAVA代码,那么WEB服务器肯定是要执行这个循环,没啥特别,循环10次的
sellcoffe 2008-10-14
  • 打赏
  • 举报
回复
肯定是1啊,JS是在客户端执行的,你这个JAVA代码,在后台只会执行一次
qiandongbo 2008-10-14
  • 打赏
  • 举报
回复
好玩,明明在JSP页面上查看代码是

<script language="JavaScript">
function f (id){

if (id == 0){

}

if (id == 1){

}

if (id == 2){

}

if (id == 3){

}

if (id == 4){

}

if (id == 5){

}

if (id == 6){

}

if (id == 7){

}

if (id == 8){

}

if (id == 9){

}

}
</script>

却在控制台又能输出,mark下,一会回来看
aipb2008 2008-10-14
  • 打赏
  • 举报
回复
哪位翻译下6楼的代码。

楼上,你说的我知道,你能解析下6楼的代码不?
aipb2008 2008-10-14
  • 打赏
  • 举报
回复
哪位翻译下6楼的代码。

楼上,你说的我知道,你能解析下6楼的代码不?
suhaibolove 2008-10-13
  • 打赏
  • 举报
回复
请记住一点,在jsp中,无论怎样,都优先执行java代码,在客户端是不会执行java代码的,
加载更多回复(6)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧