JSP实质上就是html混入了Java,或者说是HTML+JavaScript+CSS+Java的混合⽂件,那么就会牵扯到各种语言之间的变量引用问题,既然基础是html,那么就先看看html怎么引用其他内容,以及其他内容间值的互引用。
1、Html获取JavaScript变量值
因为html后缀文件里面是没法直接用java的,如果想在html代码里面引用java的话,需要把后缀改成jsp,那么就是属于前面我们定义的JSP实质了,就是各种混合了。这儿说的是html文件,所以我们这儿就只引入JavaScript。
<scriptlanguage="javascript"type="text/javascript">var df=newDate(); var year= df.getFullYear() ;document.write("<td>"+year+" J2EE开发</td>");
</script>
2、JavaScript输出Java的变量值
<%String name = "James"; %><script type="text/javascript"> document.write('<%=name%>');</script>
上面是在一个页面里面去输出的时候的引用方式,我们前台处理表单提交后,想前台的javascript获取后台的Java传来的值,怎么去调用,这个前面也说了,用req的getparam方法。
1、通过request.getParameter("参数名")获取后台的值。
2、通过<%=变量%>的方式赋给JavaScript变量。
<script><%String p1 = (String)request.getParameter("parameter name");%>var s = '<%=p1%>';</script>
如果不同过servlet来获取的话,还可以在jsp里面直接混入java的类和方法:
A. 创建Java对象 :
// Java代码
public class MyClass {private String javaValue = "Hello, Java!";public String getJavaValue() {return javaValue;}
}
B. 使用Java对象的方法 :
// JavaScript代码
var myClass = new Packages.MyClass();
var javaValue = myClass.getJavaValue();
C. 将Java值传递给JavaScript :
// JavaScript代码
console.log("Java值为:" + javaValue);
既然JavaScript变量有值了,就也可以再通过1中html调用js来显示了。
3、Java获取JavaScript的变量值
java要获取JavaScript的值,这可以通过表单提交、AJAX请求或URL参数等方式实现。前面的文章里面都讲了提交到jsp文件、提交到servlet的方式。
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%String inputValue = request.getParameter("hiddenField");// 在这里对inputValue进行处理
%>
相当于通过req对象直接获取到表单提交的参数了。
我们也可以使用Java和JavaScript之间的互操作性。Java提供了一种机制,称为Java Scripting API,它允许Java代码与不同的脚本语言进行交互,包括JavaScript。我们可以利用这个API在Java中执行JavaScript代码,并从中获取结果值。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;public class JavaScriptExample {public static void main(String[] args) {// 创建一个ScriptEngineManager对象ScriptEngineManager engineManager = new ScriptEngineManager();// 通过ScriptEngineManager获取JavaScript引擎ScriptEngine engine = engineManager.getEngineByName("JavaScript");// 定义JavaScript代码String script = "var x = 10 + 5; x;";try {// 在Java中执行JavaScript代码Object result = engine.eval(script);// 将结果值转换为Java的整数类型int value = (int) result;// 打印结果值System.out.println("Result: " + value);} catch (ScriptException e) {e.printStackTrace();}}
}
通过以上示例代码,我们可以看到Java中执行了JavaScript代码,并成功接收到了结果值。这种方法可以解决我们在开发中需要从前端JavaScript代码中获取值的问题。
状态图如下所示:
参考资料:
https://blog.csdn.net/bangrenzhuce/article/details/52145015
https://www.php.cn/faq/465412.html
https://blog.51cto.com/u_16213300/9746025
https://www.php.cn/faq/282622.html
https://blog.51cto.com/u_16175488/6819187
https://blog.51cto.com/u_16213362/8289951