簡體   English   中英

如何使用jsp從數據庫獲取JSON格式的視圖數據

[英]how to get view data in JSON format from database using jsp

我想將視圖從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視圖。 有人會幫我做同樣的事情嗎?

UPDATE

我只是忘了把其他東西放在那里,所以這是正確的代碼

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

非常感謝您回答我的問題。

看起來format值為null或不是json 如果所存在的代碼中if執行,則最終會具有錯誤(下一個代碼行,你都轉發到另一個JSP)。

“做出響應后無法轉發”

進行以下更改以使其起作用:

您想返回JSON時就不需要轉發。 只需在下面添加以下代碼

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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM