java 端写的list 前端页面获取方法

本文介绍如何在Struts2框架中通过Session传递数据到前端页面,并展示了两种实现方式的具体代码实例。

第一种方法:

java:


前端页面

<!-- 添加tag -->

<%@ taglib uri="/struts-tags" prefix="s"%>  

<s:iterator var="c" value="cList">
        <li>  <s:property value="#c.cname" /></li>
</s:iterator>



第二张方法:

前端页面:

<s:iterator var="c" value="#session.cList">
    <li> <s:property value="#c.cname"/></li>
</s:iterator>


java:

@Action(value = "classify", results = {@org.apache.struts2.convention.annotation.Result(name = "classify", location = "/WEB-INF/classify.jsp")})
public String toClassify() {
CategoryBusiness categorybussiness = new CategoryBusiness();
ActionContext.getContext().getSession().put("cList",  categorybussiness.findCategory());
//session.setAttribute("cList", categorybussiness.findCategory());
return "classify";
}

要明确一点:**Java 本身不能直接获取前端(浏览器)的摄像头状态**,因为浏览器出于安全考虑,不允许后(如 Java)直接访问用户的摄像头设备。前端摄像头访问必须通过浏览器的 `getUserMedia` API 来实现,然后将状态上报给 Java。 --- ### ✅ 你真正需要的结构是: ``` [浏览器] --(上报状态)--> [Java] --(存储/查询)--> [数据库/内存] ``` ### 所以我们分两部分来: --- ## ✅ 第一部分:前端JavaScript)检测摄像头状态并上报给 Java ```html <!DOCTYPE html> <html> <head> <title>摄像头状态检测</title> </head> <body> <h2>摄像头状态检测并上报</h2> <button onclick="checkAndReport()">检测并上报</button> <p id="result"></p> <script> async function checkAndReport() { const cameraId = "cam001"; const name = "主入口摄像头"; let status = "offline"; try { const stream = await navigator.mediaDevices.getUserMedia({ video: true }); status = "online"; stream.getTracks().forEach(track => track.stop()); // 释放摄像头 } catch (err) { status = "offline"; } const response = await fetch('http://localhost:8080/api/cameras/report', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cameraId, name, status }) }); const result = await response.text(); document.getElementById("result").innerText = result; } </script> </body> </html> ``` --- ## ✅ 第二部分:Java接收摄像头状态(Spring Boot) 这是一个完整的 Spring Boot 示例,用于接收前端上报的摄像头状态。 ### 1. Maven 依赖 (`pom.xml`) ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> ``` --- ### 2. 实体类 `CameraStatus.java` ```java public class CameraStatus { private String cameraId; private String name; private String status; private long timestamp; // Constructors, Getters and Setters public CameraStatus() {} public CameraStatus(String cameraId, String name, String status) { this.cameraId = cameraId; this.name = name; this.status = status; this.timestamp = System.currentTimeMillis(); } public String getCameraId() { return cameraId; } public void setCameraId(String cameraId) { this.cameraId = cameraId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public long getTimestamp() { return timestamp; } public void setTimestamp(long timestamp) { this.timestamp = timestamp; } } ``` --- ### 3. 服务类 `CameraStatusService.java` ```java import org.springframework.stereotype.Service; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @Service public class CameraStatusService { private final Map<String, CameraStatus> cameraStatusMap = new ConcurrentHashMap<>(); public void updateStatus(CameraStatus status) { cameraStatusMap.put(status.getCameraId(), status); } public List<CameraStatus> getAllStatuses() { return new ArrayList<>(cameraStatusMap.values()); } } ``` --- ### 4. 控制器类 `CameraStatusController.java` ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/cameras") public class CameraStatusController { @Autowired private CameraStatusService cameraStatusService; // 接收前端上报的摄像头状态 @PostMapping("/report") public String receiveCameraStatus(@RequestBody CameraStatus cameraStatus) { cameraStatusService.updateStatus(cameraStatus); return "收到摄像头 [" + cameraStatus.getName() + "] 状态: " + cameraStatus.getStatus(); } // 查询所有摄像头状态 @GetMapping public List<CameraStatus> getAllCameras() { return cameraStatusService.getAllStatuses(); } } ``` --- ### 5. 配置文件 `application.properties` ```properties server.port=8080 spring.application.name=camera-status-service ``` --- ### 6. 主类 `CameraStatusApplication.java` ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class CameraStatusApplication { public static void main(String[] args) { SpringApplication.run(CameraStatusApplication.class, args); } } ``` --- ### ✅ 使用说明 1. 启动 Spring Boot 应用(Java)。 2. 在浏览器中打开上面的 HTML 页面。 3. 点击“检测并上报”按钮,前端会检测摄像头是否可用,并将状态上报给 Java。 4. Java接收并保存摄像头状态。 5. 可通过访问 `GET http://localhost:8080/api/cameras` 查看所有摄像头状态。 --- ### ✅ 总结 | 角色 | 技术 | |------|------| | 前端检测摄像头 | JavaScript + `navigator.mediaDevices.getUserMedia` | | 上报摄像头状态 | HTTP POST 请求 | | Java接收状态 | Spring Boot REST API | | 存储或转发 | 可以保存到内存、数据库、或通过 WebSocket 推送 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值