【问题标题】:how to get view data in JSON format from database using jsp如何使用jsp从数据库中获取JSON格式的视图数据
【发布时间】:2025-12-31 07:15:06
【问题描述】:

我想将视图从 HTML 列表更改为 JSON 数据。

这是我在控制器中的代码:-

private void listFeedback(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException, ServletException {
        Feedback p = new Feedback();
        int seller_id = Integer.parseInt(request.getParameter("seller_id"));
        List<Feedback> feedbacks = p.all(seller_id);
        String format = request.getParameter("format");
        if(format == "json"){
            String json = new Gson().toJson(feedbacks);

            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);
            RequestDispatcher dispatcher = request.getRequestDispatcher("feedbacks/demo.jsp");
            dispatcher.forward(request, response);
        }
        request.setAttribute("feedbacks", feedbacks);
        RequestDispatcher dispatcher = request.getRequestDispatcher("feedbacks/list.jsp");
        dispatcher.forward(request, response);
    }

但是,它仍然可以像以前一样查看,根本不需要改变。我希望它被重定向到 demo.jsp 以便它可以有一个 JSON 视图。有人会帮我做同样的事情吗?

更新

我只是忘记在里面放其他东西 所以,这是正确的代码

else{
    request.setAttribute("feedbacks", feedbacks);
            RequestDispatcher dispatcher = request.getRequestDispatcher("feedbacks/list.jsp");
            dispatcher.forward(request, response);
}

非常感谢您回答我的问题。

【问题讨论】:

标签: java json jsp


【解决方案1】:

看起来format 的值为空或不是json。如果 if 中的代码被执行,你最终会出错(下一行代码,你正在转发到另一个 jsp)。

“提交响应后无法转发”

进行以下更改以使其正常工作:

当您想要返回 JSON 时,您不需要转发。只需在 if 中添加以下代码

if("json".equals(format)){
                String json = new Gson().toJson(feedbacks);
                response.setContentType("application/json");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().write(json);
                return; // return from here or change to if-else
}

整个代码:

    private void listFeedback(HttpServletRequest request, HttpServletResponse response)
                throws SQLException, IOException, ServletException {
            Feedback p = new Feedback();
            int seller_id = Integer.parseInt(request.getParameter("seller_id"));
            List<Feedback> feedbacks = p.all(seller_id);


      String format = request.getParameter("format");
        if("json".equals(format)){
            String json = new Gson().toJson(feedbacks);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);
            return;// return from here or change to if-else
        }
        request.setAttribute("feedbacks", feedbacks);
        RequestDispatcher dispatcher = request.getRequestDispatcher("feedbacks/list.jsp");
        dispatcher.forward(request, response);
    }

【讨论】: