在Java后台与前台的数据交互中,传值是实现动态页面的核心环节,本文将系统介绍几种主流的传值方式,涵盖不同场景下的技术实现与最佳实践。

传统表单提交与请求参数传值
对于简单的数据传递场景,可通过HTTP请求参数实现,后台通过HttpServletRequest对象获取前端表单数据,示例代码如下:
request.getParameter("username"); // 获取单个参数
Map<String, String[]> paramMap = request.getParameterMap(); // 获取所有参数
前台可通过<form>标签的method="post/get"提交数据,后台处理完成后使用request.getRequestDispatcher()转发到JSP页面,通过EL表达式${param.username}获取值,这种方式适用于表单提交场景,但存在URL长度限制且数据暴露在浏览器地址栏。
AJAX异步传值与JSON数据交互
现代Web应用普遍采用AJAX实现前后端异步通信,后台可通过HttpServletResponse直接输出JSON数据:
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write("{\"name\":\"张三\",\"age\":25}");
前台使用XMLHttpRequest或jQuery的$.ajax()方法接收数据:
$.ajax({
url: "/user/getInfo",
type: "GET",
dataType: "json",
success: function(data) {
console.log(data.name);
}
});
对于Spring Boot框架,可使用@ResponseBody注解简化开发:
@GetMapping("/user")
@ResponseBody
public User getUser() {
return new User("李四", 30);
}
模板引擎渲染传值
使用Thymeleaf、Freemarker等模板引擎时,可通过Model/ModelMap对象向前台传递数据:

@Controller
public class UserController {
@GetMapping("/user")
public String getUser(Model model) {
model.addAttribute("user", new User("王五", 28));
return "userDetail"; // 返回视图名
}
}
前台页面通过Thymeleaf表达式绑定数据:
<div th:text="${user.name}"></div>
<div th:text="${user.age}"></div>
这种方式支持复杂对象传递,且模板引擎能自动处理XSS防护。
RESTful API传值
在前后端分离架构中,RESTful API是主流传值方式,后台通过@PathVariable获取路径参数,@RequestBody接收JSON格式的请求体:
@RestController
@RequestMapping("/api/users")
public class UserApiController {
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
前台使用fetch API或Axios发送请求:
// 获取用户信息
fetch('/api/users/1')
.then(response => response.json())
.then(data => console.log(data));
// 创建用户
fetch('/api/users', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: '赵六', age: 35})
});
Session与Cookie传值
需要跨请求保持数据时,可使用Session或Cookie,后台操作Session:
request.getSession().setAttribute("user", currentUser);
前台通过EL表达式${sessionScope.user}获取,Cookie操作:

Cookie cookie = new Cookie("token", UUID.randomUUID().toString());
cookie.setMaxAge(3600);
response.addCookie(cookie);
需注意Session存储在服务器端,Cookie存储在客户端,敏感数据建议加密传输。
WebSocket实时传值
对于需要实时更新的场景,WebSocket是理想选择,后台通过@ServerEndpoint注解创建WebSocket端点:
@ServerEndpoint("/websocket")
public class WebSocketEndpoint {
@OnOpen
public void onOpen(Session session) {
// 连接建立逻辑
}
@OnMessage
public void onMessage(String message, Session session) {
// 消息处理逻辑
}
}
前台使用WebSocket API建立连接:
const socket = new WebSocket("ws://localhost:8080/websocket");
socket.onmessage = function(event) {
console.log("收到消息:" + event.data);
};
Java后台传值方式需根据业务场景选择:表单提交适合简单交互,AJAX/JSON适合异步数据交换,模板引擎适合传统页面渲染,RESTful API适合前后端分离,Session/Cookie适合状态保持,WebSocket适合实时通信,实际开发中常需多种方式组合使用,并注意数据安全性与性能优化。


















