java - 使用 PrintWriter 对象将 List 对象从 Java Servlet 发送到 JSP?

标签 java json jsp servlets

在继续之前,我意识到几年前有一个类似的问题( Passing a List from Servlet to JSP )。我意识到可以设置我尝试作为 session 属性传递的列表,但出于好奇,我想知道是否可以使用 PrintWriter 对象将数据发送回 JSP 页面。

JSP

<script type="text/javascript">
        function getEngineSchemes(engineID) {
            $.get('SchemeTypeServlet', {
                action: "getSchemes",
                engineID: engineID
            },
            function(data, status){

            }).fail(function() {
                alert("Error obtaining schemes for engine with engine id: " + engineID);
            });
        }
    </script>
</body> 

Servlet

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //Set type of response
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    //get parameters that may be passed from client to determine which methods should be called
    String action = request.getParameter("action");

    if(action.equalsIgnoreCase("getSchemesForEngine")) { 
        Integer engineID = Integer.parseInt(request.getParameter("engineID"));
        List<String> schemeNames = getSchemeNamesForEngine(engineID);

        response.getWriter(). //insert code to send object back to JSP
        response.getWriter().flush();
    }       

选项

我认为可能合理的一个解决方案是创建一个 JSONObject 并拥有类似于

的内容
response.setContentType("application/json");
JSONObject json = new JSONObject();
     for(String name : schemeNames) {
            json.put(engineID, name);
         }
    response.getWriter().write(json.toJSONString());
    response.getWriter().flush();

我还没有测试过上面的代码,但我只是想知道这是否是解决我的问题的最佳解决方案,或者我是否使其过于复杂?也许我的问题有一个更简单的解决方案。

最佳答案

我认为你的脑子里有些乱七八糟的东西。首先,您不能将文本或任何类型的数据从 servlet 发送到 jsp。执行此操作的正确方法是使用 session 并使用 response.sendRedirectRequestDispatcher.forward方法。但这将忽略之前对 servlet 的 Writer 对象进行的任何调用。

关于java - 使用 PrintWriter 对象将 List 对象从 Java Servlet 发送到 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919400/

相关文章:

java - 如何在java中的同一行上一次打印字符串 war 游戏风格的一个字母

java - Jackson 构建器模式从父级获取值(value)

java - 如何在文件上传时为文件名添加时间戳

java - 无法使用 Maven 编译简单的 Java 10/Java 11 项目

java - 循环遍历 div 中的页面链接,然后单击 Selenium (java) 中包含特定值的每个链接

python - 使用 python pandas 读取 json 文件并更新现有的 excel

javascript - 交换 JSON 键和值

java - 如何使用 HTML 标签将以字节为单位的图像显示到 JSP 页面?

jsp 中的 Javascript setTimeOut 函数

eclipse - 从 POSTMAN 向我的 java api POST 时出现 405 响应代码