【问题标题】:Send JS object to JSP page [duplicate]将JS对象发送到JSP页面[重复]
【发布时间】:2009-04-30 13:15:27
【问题描述】:

我在一个 JavaScript 文件中有一个 JS 对象。我必须将此对象传递给 JSP 页面。页面拾取该对象并对其进行处理。我该怎么做?

【问题讨论】:

    标签: javascript string json jsp object


    【解决方案1】:

    与从 Web 浏览器获取任何其他数据到 HTTP 服务器的方式相同。

    通过提交表单/设置窗口位置/使用 XMLHttpRequest 等将其编码到 HTTP 请求中。

    【讨论】:

      【解决方案2】:

      您需要首先解决几个问题,您是否以 AJAX 样式的请求执行此操作?这是表单提交吗?在客户端/服务器之间来回传递 JSON 对象的页面会话中是否会有持续的交互?

      让我们来处理表单提交的简单案例,一旦您知道了,您应该能够让其余案例继续进行,因为它们只是此基本案例的“扩展”。假设您有一些表单可以在某个字段中提交数据:

      <form name='my_form' id='my_ford_id'>
        <input type='hidden' name='my_input_field' />
      </form>
      

      然后在某个时间点你有一段代码可以执行并且你有你的 JSON 对象

      function myFunction() {
        var json_data = getJsonData();
        document.forms['my_form']['my_input_field'].value = json_data;
        document.forms['my_form'].submit();
      }
      

      然后,您将在 JSP 端接收这些数据作为表单字段内的 JSON 字符串,此时您需要处理它,假设您有某种可用的 JSON 库,代码可能看起来像这样:

      <%
        String myInputField = request.getParameter("my_input_field");
        if(myInputField != null) {
          try {
            JSONObject myObject = new JSONObject(myInputField);
          }
          catch(JSONException e) {
      
          }
        }
      %>
      

      如果您需要“AJAX”风格的交互,您将在页面中发出许多此类请求,但从根本上讲,它会退回到提交数据的原始问题。由于您在此示例中使用了表单和 JSP,因此您不必担心任何编码问题,浏览器/服务器会为您处理这些事情。

      【讨论】:

      【解决方案3】:

      当您发送 json 对象时,servlet 以与接收提交表单发送的数据相同的方式接收它,例如,如果您发送带有 value="getCountries" 的变量“action”

      var option = {
        "action": "getCountries"
      };
      $.getJSON('YourServlet', option, function() {
        //hadle the result returned by servlet
      });
      

      默认方法是 GET,在 servlet 中处理请求就像处理普通请求一样

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
        String action = request.getParameter("action");
        if (action != null) {
          if (action.equals("getCountries")) {
      
            List coutries = getAllICountries(request); //get the countries
            String json = new Gson().toJson(coutries);
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
      
            response.getWriter().write(json);
            return;
          }
        }
      }
      

      注意我们如何将结果从 servlet 返回到 javascript,我们返回一个 json 对象。

      【讨论】:

        【解决方案4】:

        "JSON"Site 帮助您管理 JSp/java 中的 Json 对象。 您必须将从javascript获取的字符串转换为json对象。然后轻松管理它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-21
          • 2017-07-27
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          • 1970-01-01
          • 2014-04-18
          相关资源
          最近更新 更多