使用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";

回答:

  1. 更改return "main";return null;
  2. 之后,您将能够在同一页面上获得ajax响应和alert();
  3. 如果需要,您可以立即将用户重定向到另一个页面,而不是发出警报 document.location="anotherpage";

以上是 使用servlet返回json对象 的全部内容, 来源链接: utcz.com/qa/430268.html

回到顶部