【发布时间】:2009-04-30 13:15:27
【问题描述】:
我在一个 JavaScript 文件中有一个 JS 对象。我必须将此对象传递给 JSP 页面。页面拾取该对象并对其进行处理。我该怎么做?
【问题讨论】:
标签: javascript string json jsp object
我在一个 JavaScript 文件中有一个 JS 对象。我必须将此对象传递给 JSP 页面。页面拾取该对象并对其进行处理。我该怎么做?
【问题讨论】:
标签: javascript string json jsp object
与从 Web 浏览器获取任何其他数据到 HTTP 服务器的方式相同。
通过提交表单/设置窗口位置/使用 XMLHttpRequest 等将其编码到 HTTP 请求中。
【讨论】:
您需要首先解决几个问题,您是否以 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,因此您不必担心任何编码问题,浏览器/服务器会为您处理这些事情。
【讨论】:
当您发送 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 对象。
【讨论】:
"JSON"Site 帮助您管理 JSp/java 中的 Json 对象。 您必须将从javascript获取的字符串转换为json对象。然后轻松管理它。
【讨论】: