使用servlet返回json对象
我有一个servlet。它的工作方式是-我发送动作名称,servlet创建动作对象,执行某些任务,然后将字符串view
作为结果返回-
我应该发送给用户的页面。Servlet doGET
和for的工作原理相同doPost
。
String name = getActionName(req); Action action = (Action) pico.getComponentInstance(name);
String view = action.exec(req, resp);
// router
if (view.startsWith("redirect:")) {
resp.sendRedirect(view.substring("redirect:".length(),
view.length()));
} else {
getServletContext().getRequestDispatcher(
"/" + view + ".jsp").forward(req, resp);
}
我有AjaxAction,我从请求中获取值,从数据库中获取对象,将其转换为json字符串。但是如何从行动中恢复呢?操作返回字符串,表示应该将用户发送到的下一页。我将他发送到main
页面。
String requestId = req.getParameter("requestId"); Long id = Long.valueOf(requestId);
Request item = requestDao.read(id);
String json = "";
json = new Gson().toJson(item);
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
try {
resp.getWriter().write(json);
} catch (IOException e) {
e.printStackTrace();
}
return "main";
每当更改<select>
(中的id = "re"
)值时,我都会发送JSON对象的请求。
$("#re").change(function() { var $id = $('#re').val();
$.get('AjaxAction.do', {
requestId : $id
}, function(respJSON) {
alert(respJSON);
$.each(respJson, function(key, value) {
$('#' + key).val(value);
});
});
});
但是alert
在#+键更改中既不出现也不显示值。因此,似乎功能无法正常工作。那么如何正确地从Action返回JSON对象呢?我调试器AjaxAction
创建对象和return
"main";。
回答:
- 更改
return "main";
为return null;
- 之后,您将能够在同一页面上获得ajax响应和alert();
- 如果需要,您可以立即将用户重定向到另一个页面,而不是发出警报
document.location="anotherpage";
以上是 使用servlet返回json对象 的全部内容, 来源链接: utcz.com/qa/430268.html