a.jsp为什么能调用b.jsp里面的js方法?

在a.jsp里面使用include调用B.JSP,就可以直接调用b.jsp里面的js方法了??? 用的是

 <jsp:include page="b.jsp"/>

我看网上说的是生成了两个servlet,然后编译的时候就会生成两个.class文件,应该不能直接调用另外一个文件中的方法吧?

是因为js是前端的,和Java代码不一样?

想知道具体原因,和原理.....

include 页面嵌入 b.jsp的所以方法A都能继承使用

include进来的文件前端的js代码不会编译原样发送到客户端,所以js方法可以在其他文件中调用,只要你的js函数作用域是window下

js和服务器端没关系,js无法直接访问服务器端变量,服务器端变量可以输出到js脚本中提供给js访问

jsp是servlet,但是servlet中的out.println()生产的什么?生产的还是html,所以,如果你在a.servlet中生产的a.html包含了b.servlet生产的b.html(b.html又引用了js)。a.html肯定可以用b.html的方法。

include 进来后,就拼装成一个js了,然后浏览器就能找到b.jsp里面的js方法,浏览器渲染后就跟后台没关系了,
后台只是把他们拼装起来而已,你疑惑的主要原因我就得就是IDE解析不出方法,为什么浏览器没报错

jsp是先执行的在服务器端;而javascript要到浏览器解释html时才会执行。
先由web服务器执行jsp文件,在此过程中javascript只被当成是普通文本,不会执行的。当web服务器将生成的html文件返回给客户端浏览器时,才会由浏览器执行javascript.
这两者交互,就用jsp控制生成javascript代码。
要注意其顺序的问题。

当你include 一个文件的时候, 这个文件里面的js 都加载进来,自然你就可以试用这个文件里面提供的函数了。

两个jsp 写给浏览器,就是 两个HTML文件, 那两个HTML文件 中的js 方法,当然可以互相调用了。。。

一个是编译时是依赖,一个是运行时的依赖
首先我们知道jsp是不能直接运行在浏览器的,因为它需要服务端编译解析后转换成html格式才能被浏览器展示。
那么我们说的js文件,在上述编译和解析阶段不会被服务器端处理,会被当做静态文件直接被引用。
所以a.jsp中就包含了b.jsp的所有静态文件的引用,并且js是运行在浏览器上的,那么只要引用路径正常,调用就没问题了

1.首先你要清楚js是浏览器解释性脚本语言,它是由浏览器引擎解释执行的,和jsp是否生成servlet无关。
2.无论是html页面也好,jsp页面也好,js就是由浏览器解释执行的,在其他任意端它只是文本。
3.多个页面文件中如果引用除本页面以外的js函数,那就需要引入js的声明文件,像是如果你定义了一个js文件并且声明了函数,
那你在任意html中想使用js函数就需要引入这个js文件到本页面中。
4.那这样,当你include的时候,实际上是将你引入的页面相当于将全部内容复制过来,这样如果js函数是在另一个页面中声明的
或者是在另一个页面中引入的js文件中声明的。这一次复制相当于所有的动作都是传递的。即相当于全部引入到当前页面中,所以可以
直接使用。

如果是jsp指令的include是把两个jsp生成同一个jsp,然后再编译成一个servlet。如果是jsp动作标签的话,两个jsp页面各生成一个servlet,然后再编译。

jsp 中include一个文件的时候,其实就是将这个文件包含进来,自然地在页面进行渲染的时候也就能够应用该页面的js了。

如果是同域可以直接调用,如果是跨域要用跨域的做法。https://blog.csdn.net/qianqianyixiao1/article/details/49992421