如何在servlet中获取JSON格式的表单数据

时间:2017-08-05 12:53:18

标签: javascript java json

我的HTML代码是

<form action="/FirstServlet/Profile" method="post"  class="login">
    UserName: <input type="text"  id="uName" name="name"><p>
    Password: <input type="password"  id="password" name="password"><br>
    <input type="submit" id="button" value="login">
</form>

并且javascript代码是

<script  src="js/jquery-3.2.1.min.js"></script>
<script  src="js/jquery.serializeObject.js"></script>
<script  src="js/Gruntfile.js"></script> 
<script>
   $(document).ready(function(){
            var form=$('form.login').serializeObject();
            alert(form);
            form.submit(function(){
                $.ajax({
                    type:form.attr('method'),
                    url:form.attr('action'),
                    dataType:'json',
                    data:Json.stringify(form),
                    success:function(data){

                    }
                });
            });

        });
</script>

但我仍然以这种格式得到答案

name=zeeshan&password=zeeshan@123

我想以json格式得到答案,如:

{"name":"zeeshan","password":"zeeshan@123"}

获取数据的servlet代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));


    String json = "";
    if(br != null){
        json = br.readLine();
    }
    System.out.println(json);
}

我经常搜索,他们说这段代码的输出都在json中,但实际上我并没有以那种格式得到它。

如何让输出为JSON格式?

3 个答案:

答案 0 :(得分:0)

看起来你在发送之前将其字符串化,这可能是问题

答案 1 :(得分:0)

您可以在javascript中尝试此解决方法:

 data:{'json':JSON.stringify($(form).serializeArray())},

在servlet中:

String json=request.getParameter("json");

<强>编辑:

 data:{'json':JSON.stringify($(form).serializeObject())},

答案 2 :(得分:0)

更改

<input type="submit" id="button" value="login">

<input type="button" id="button" value="login">

点击输入类型提交,直接提交表单并重新加载页面,因此永远不会调用您的脚本。