JS页面中,可以通过Java后端将值传递到前端,例如通过Servlet或Spring MVC的模型属性,然后在JS中使用EL表达式或AJAX获取这些
JS页面中获取或使用Java值,通常涉及到前后端的数据交互,以下是几种常见的方法及其详细实现方式:
通过JSP表达式直接嵌入Java值
在JSP(Java Server Pages)页面中,可以直接使用Java代码来生成JavaScript变量所需的值,这是最简单直接的方法,适用于数据量小且不需要频繁更新的场景。
步骤:
- 定义Java变量: 在JSP页面的
<% %>标签内定义Java变量。 - 输出Java值到JavaScript: 使用
<%= %>表达式将Java变量的值嵌入到JavaScript代码中。
示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
// 定义一个JavaScript变量,其值来自Java变量
var myValue = "<%= myJavaValue %>";
console.log("JavaScript中的myValue:", myValue);
</script>
</head>
<body>
<%
// 定义一个Java变量
String myJavaValue = "这是来自Java的值";
%>
<p>Java变量myJavaValue的值是:"<%= myJavaValue %>"</p>
</body>
</html>
解释:
<%= myJavaValue %>:这是JSP的表达式标签,用于输出myJavaValue变量的值,在页面渲染时,这个表达式会被替换为myJavaValue的实际值。var myValue = "<%= myJavaValue %>";:这行JavaScript代码将Java变量的值赋给了JavaScript变量myValue。
通过AJAX异步请求获取Java值
AJAX(Asynchronous JavaScript and XML)允许在不刷新整个页面的情况下,与服务器进行数据交换,这种方法适用于需要实时获取服务器端数据的场景。
步骤:
- 创建Servlet处理请求: 在Java后端创建一个Servlet,用于处理AJAX请求并返回所需的数据。
- 编写AJAX请求代码: 在JavaScript中使用AJAX发送请求到Servlet,并处理返回的数据。
示例代码:
Servlet代码(MyServlet.java):

@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
String param = request.getParameter("param");
// 处理参数并获取值
String value = processParam(param);
// 设置响应内容类型
response.setContentType("application/json");
// 将值作为JSON返回
response.getWriter().write("{"value":"" + value + ""}");
}
private String processParam(String param) {
// 这里可以根据param进行一些处理,返回相应的值
return "处理后的参数: " + param;
}
}
JavaScript代码(使用jQuery):
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url: "/myApp/myServlet",
type: "post",
data: {param: "value"},
success: function(response){
// 解析JSON响应
var data = JSON.parse(response);
// 将Java返回的值赋给JavaScript变量
var javaValue = data.value;
console.log("通过AJAX获取的Java值:", javaValue);
},
error: function(xhr){
console.error("AJAX请求错误:", xhr);
}
});
});
</script>
</head>
<body>
<h1>通过AJAX获取Java值</h1>
</body>
</html>
解释:
- Servlet部分:
MyServlet接收POST请求,从请求中获取参数param,处理后返回一个JSON格式的响应。 - JavaScript部分: 使用jQuery的
$.ajax方法发送POST请求到/myApp/myServlet,传递参数param,在成功回调函数中,解析JSON响应并将value赋给JavaScript变量javaValue。
通过隐藏表单字段传递Java值
这种方法适用于在表单提交前,需要获取服务器端的一些数据,并将这些数据一同提交的场景。
步骤:
- 在JSP页面中设置隐藏字段: 使用JSP表达式将Java值设置到隐藏字段的
value属性中。 - 在JavaScript中获取隐藏字段的值: 通过DOM操作获取隐藏字段的值,并在需要时使用。
示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function submitForm() {
// 获取隐藏字段的值
var hiddenValue = document.getElementById('hiddenField').value;
console.log("隐藏字段的值:", hiddenValue);
// 可以在此处进行其他操作,如验证或修改隐藏字段的值
// 提交表单
document.getElementById('myForm').submit();
}
</script>
</head>
<body>
<form id="myForm" action="destinationPage.jsp" method="post">
<!-设置隐藏字段,值为Java变量 -->
<input type="hidden" id="hiddenField" name="hiddenField" value="<%= myJavaValue %>">
<input type="button" value="提交" onclick="submitForm()">
</form>
<%
// 定义一个Java变量
String myJavaValue = "这是隐藏字段中的Java值";
%>
<p>隐藏字段的值是:"<%= myJavaValue %>"</p>
</body>
</html>
解释:
<input type="hidden" id="hiddenField" name="hiddenField" value="<%= myJavaValue %>">:这行代码在表单中添加了一个隐藏字段,其值通过JSP表达式设置为myJavaValue的值。document.getElementById('hiddenField').value:在JavaScript中,通过DOM操作获取隐藏字段的值,并赋给JavaScript变量hiddenValue。
通过Cookies和Session传递Java值
Cookies和Session是HTTP协议中用于保存用户状态的机制,通过它们,可以在服务器端保存一些数据,然后在客户端通过JavaScript获取这些数据。

通过Cookies传递值:
步骤:
- 在Java后端设置Cookie: 使用Java代码创建Cookie,并将其添加到响应中。
- 在JavaScript中读取Cookie: 通过JavaScript读取浏览器中的Cookie,并解析出所需的值。
示例代码:
Servlet代码(设置Cookie):
@WebServlet("/setCookieServlet")
public class SetCookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建Cookie
Cookie cookie = new Cookie("myCookie", "这是来自Java的Cookie值");
// 设置Cookie的有效路径
cookie.setPath("/");
// 将Cookie添加到响应中
response.addCookie(cookie);
}
}
JavaScript代码(读取Cookie):
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function getCookieValue() {
// 获取所有Cookie
var cookies = document.cookie.split(';');
// 遍历Cookie数组,查找指定的Cookie
for(var i=0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.startsWith("myCookie=")) {
// 获取Cookie的值
var value = cookie.substring("myCookie=".length);
console.log("通过Cookie获取的Java值:", value);
return value;
}
}
console.log("未找到指定的Cookie");
return null;
}
</script>
</head>
<body>
<h1>通过Cookie获取Java值</h1>
<button onclick="getCookieValue()">获取Cookie值</button>
</body>
</html>
解释:

- Servlet部分:
SetCookieServlet创建了一个名为myCookie的Cookie,其值为"这是来自Java的Cookie值",并将其添加到响应中。 - JavaScript部分:
getCookieValue函数通过document.cookie获取所有Cookie,然后遍历查找名为myCookie的Cookie,并提取其值。
通过Session传递值:
步骤:
- 在Java后端设置Session属性: 使用Java代码将值存储在Session中。
- 在JSP页面中读取Session属性: 使用JSP表达式或EL表达式读取Session中的值,并将其传递给JavaScript。
示例代码:
Servlet代码(设置Session属性):
@WebServlet("/setSessionServlet")
public class SetSessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置Session属性
HttpSession session = request.getSession();
session.setAttribute("mySessionValue", "这是来自Java的Session值");
}
}
JSP页面代码(读取Session属性并传递给JavaScript):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
// 从JSP表达式中获取Session属性的值,并赋给JavaScript变量
var sessionValue = "<%= session.getAttribute("mySessionValue") %>";
console.log("通过Session获取的Java值:", sessionValue);
</script>
</head>
<body>
<h1>通过Session获取Java值</h1>
</body>
</html>
解释:
- Servlet部分:
SetSessionServlet将mySessionValue属性存储在Session中。 - JSP页面部分: 使用
<%= session.getAttribute("mySessionValue") %>读取Session中的mySessionValue属性,并将其值赋给JavaScript变量`
