如何从Servlet传递数组到JavaScript?含JSP替代方案问询
方案一:前端通过AJAX获取Servlet的JSON响应
你的Servlet已正确返回JSON格式的排序数组,前端可使用Fetch API(现代浏览器支持)请求Servlet并获取数组,再生成有序列表。修改后的JavaScript代码如下:
// 替换原var str=...部分,发起请求获取Servlet数据 fetch('/你的Servlet映射路径') // 需替换为实际Servlet访问路径,如"/SortedNames" .then(response => response.json()) // 将响应解析为JSON数组 .then(str => { var list = document.createElement("ol"); for (let i of str) { let item = document.createElement("li"); item.textContent = i; // 用textContent更安全,避免XSS风险 list.appendChild(item); } document.getElementById("demoA").appendChild(list); }) .catch(error => console.error('请求出错:', error));
兼容旧浏览器的替代方案(XMLHttpRequest)
var xhr = new XMLHttpRequest(); xhr.open('GET', '/你的Servlet映射路径', true); xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { var str = JSON.parse(xhr.responseText); var list = document.createElement("ol"); for (let i of str) { let item = document.createElement("li"); item.textContent = i; list.appendChild(item); } document.getElementById("demoA").appendChild(list); } }; xhr.send();
方案二:用RequestDispatcher转发到JSP生成列表
若想通过RequestDispatcher将Servlet中的数组传递到JSP,直接在JSP端生成有序列表,可按以下步骤修改:
1. 修改Servlet代码,存储数组到请求域并转发
String[] myarray = new String[] {nameOne, nameTwo, nameThree, nameFour, nameFive}; Arrays.sort(myarray, String.CASE_INSENSITIVE_ORDER); // 将排序后的数组存入请求属性 request.setAttribute("sortedNames", myarray); // 转发到目标JSP页面(示例路径为"/sorted-list.jsp") RequestDispatcher dispatcher = request.getRequestDispatcher("/sorted-list.jsp"); dispatcher.forward(request, response);
2. 创建JSP文件(如sorted-list.jsp)渲染列表
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>排序后的名称列表</title> </head> <body> <div id="demoA"> <ol> <% String[] sortedNames = (String[]) request.getAttribute("sortedNames"); if (sortedNames != null) { for (String name : sortedNames) { %> <li><%= name %></li> <% } } %> </ol> </div> </body> </html>
说明
这种方式无需前端JS处理,直接由JSP在服务器端渲染列表,适合不需要异步加载的场景,需确保Servlet与JSP的路径配置正确。
内容的提问来源于stack exchange,提问作者Abhinay up
相关产品推荐
相关产品推荐

