使用servlet返回json对象
我有一个servlet。 它的工作原理是这样的 – 我发送action-name,servlet创建action-object,执行一些任务,然后返回字符串view
作为结果 – 到我应该发送给用户的页面。 Servlet对doGET
和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字符串。 但是如何从行动中归还呢? Action返回string,表示应该发送用户的下一页。 我把他送到主页。
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";
每当我更改值(
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
也没有值。 所以似乎function不起作用。 那么如何从Action中正确返回JSON对象? 我调试器AjaxAction
创建对象并return "main";
。
- 改变
return "main";
return null;
- 之后,您将能够在同一页面上获得ajax响应和alert();
- 如果需要,您可以通过执行
document.location="anotherpage";
而不是警报,现在可以将用户重定向到另一个页面document.location="anotherpage";