You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:40:58