【问题标题】:Sending json object from jsp to servlet [duplicate]将json对象从jsp发送到servlet [重复]
【发布时间】:2017-07-27 23:56:02
【问题描述】:

我想以 json 的形式将名称和密码从 jsp 发送到 servlet,但这不起作用。 可能是什么问题?

这是我的 sn-ps。

function submitForm(thisObj, thisEvent) {
  var name = $('#name').val();
  var password = $('#password').val();

  var myData = {
    "mydata": {
      "name": name,
      "password": password
    }
  };
  $.ajax({
    type: "GET",
    url: "/Aasd",
    data: {
      jsonData: JSON.stringify(myData)
    },
    dataType: "json"
  });
  return false;
}
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js”>
</script>


<body>
  <h2>Login</h2>
  <form enctype='application/json'>
    Name:<input type="text" value="name" id="name"><br> Password:
    <input type="password" id="password"><br>
    <input type="submit" name="submit" onclick=" return submitForm(this,event)">
  </form>
</body>

【问题讨论】:

  • 您的脚本标签错误,您的输入也是 type="submit" 并且您在点击时使用,但使用提交时,点击将被忽略并尝试发送您的表单,但您的表单没有hace 动作、方法...查看一些示例以使其发挥作用

标签: java jquery json jsp servlets


【解决方案1】:

问题是您使用的是 GET 方法。您需要使用 POST 将数据“发布”到服务器。

POST 用于发送数据,GET 用于检索数据

GET 请求只能用于检索数据

https://www.w3schools.com/tags/ref_httpmethods.asp

此外,就安全性而言,通过 GET 参数发送数据是一种不好的做法(尤其是在使用 ajax 登录时已经不是很安全)。

$.ajax({
     type:"POST",
     url:"/Aasd",
     data: myData,
     dataType:"json"
 });

在您的 servlet 中,您将能够在 doPost() 方法中检索请求。

https://stackoverflow.com/a/2349741/5758328

【讨论】:

    【解决方案2】:

    将请求类型从 GET 更正为 POST。

    $.ajax({ 类型:“POST”

    在 servlet 方面,您可以从 doPost() 方法调用 doGet() 方法以使用您可能为 GET 类型调用编写的相同实现。

    【讨论】:

      【解决方案3】:
      $.ajax({
                  type:"GET",
                  url:"/Aasd",
                  data:{jsonData:JSON.stringify(myData)},
                  dataType:"json"
              });
              return false;
      

      改变

      $.ajax({
                  type:"POST",
                  url:"/Aasd",
                  data:{jsonData:JSON.stringify(myData)},
                  dataType:"json"
              });
              return false;
      

      【讨论】:

      • protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/json"); PrintWriter out = response.getWriter(); try{ String action = request.getParameter("action");字符串 json = request.getParameter("json"); JSONObject jsonData = (JSONObject) JSONValue.parse(json);字符串名称 = (String)jsonData.get("name");字符串密码 = (String) jsonData.get("密码"); System.out.println(名称+密码); } }
      • 这是我的 servlet,我需要将 doGet 方法更改为 doPost 吗?
      • 我改成 POST 但没有响应
      • 你的网址正确吗?
      • 是的,没错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2014-09-25
      相关资源
      最近更新 更多