【问题标题】:Using JSON data to set parameters inside servlet使用 JSON 数据在 servlet 中设置参数
【发布时间】:2017-09-30 07:51:55
【问题描述】:

我找不到任何涵盖我的确切问题的教程,所以我在这里发布我的问题

我有一个poll.json 文件

{
    "poll": {
        "title": "About your preferences",
        "questions": [
            "Which color do you like best?",
            "What is your lucky number?",
            "Why?"
        ]
    }
}

我想从表格中获取“标题”内容并将其设置为正文中 h1 标记内的值,如下所示:

out.println("<h1>Servlet NewServlet at " + title + "</h1>");

这是我的尝试。我知道我很可能离题了,但我什至不知道从哪里开始解决这个问题

这里是PollServlet.java

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title></title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>" + title here + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        getClass().getResourceAsStream("poll.json");
            String jsonString = "" ;
            JsonReader reader = Json.createReader(new StringReader(jsonString));
            JsonObject jsonObject = reader.readObject();
            String title = jsonObject.getJsonArray("poll").getJsonObject(1).toString();

    }

【问题讨论】:

  • 我可以在代码中看到您正在打印请求,而不是打印标题?
  • 你有没有调试看看jsonObject里面有什么?
  • @henriqueromao 不,老实说,我什至不知道我是否应该在 doGet() 方法中插入代码
  • JsonReader reader = Json.createReader(new StringReader(jsonString)); 当前读取一个空字符串
  • @Ishnark 是的,我明白了,设置阅读器的正确方法是什么?

标签: java json servlets jakarta-ee


【解决方案1】:

从我做的请求中读取 json 对象:

StringBuffer jb = new StringBuffer();
String line = null;
AjaxActionRequestMessage actionReqMessage= null;
        try {
            BufferedReader reader = request.getReader();

            while ((line = reader.readLine()) != null){
              jb.append(line);
            }
            actionReqMessage = new Gson().fromJson(jb.toString(), AjaxActionRequestMessage.class);
        } catch (Exception e){
              e.printStackTrace();
        }

AjaxActionRequestMessage 是一个反映您接收到的 json 的类,可以使用 gson 进行实例化。

【讨论】:

  • 感谢您的回答。您能否在我的代码中实现您的答案,因为我什至不确定在哪里插入此代码
  • 如果您使用 POST 发送 json,它将进入 doPost(),否则进入 doGET();
  • 你在哪里指定文件的路径
  • 就在这里我getClass().getResourceAsStream("poll.json");
  • 这里是文件路径:C:\Users\user\Documents\NetBeansProjects\assignments\poll\poll.json
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2016-10-23
  • 2018-01-06
  • 1970-01-01
相关资源
最近更新 更多