日期:2014-05-17  浏览次数:20641 次

使用struts2后,AJAX的服务端处理用什么代替HttpServlet?
据说使用struts2后可以不使用HttpServlet来处理所有事情,那么AJAX的异步处理是用什么代替HttpServlet?处理的信息如何返回给xmlHttp?struts2好像都是不断跳转,但AJAX不需要跳转的啊。

------解决方案--------------------
ajax的url就是"name_of_action?method_you_want_to_invoke[color=#FF0000][/color].action?param1=value1&param2=value2..."
------解决方案--------------------
是的可以不用跳转。你的action方法可以定义返回为空,即void。
然后response.getWriter().print(returnvalue);

举个例子,页面中ajax调用了下面action的returnajax方法,惯例是根据action方法的返回值决定
跳转到那个页面或下一个处理action,但注意这里为空。
public void returnajax(){
HttpServletResponse response = ServletActionContext.getResponse();
//设置字符集
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
returnvalue = 根据页面传来的参数进行业务处理得到返回结果。

//直接输出响应的内容
out.println(param);
 
out.flush();
out.close();
}

经过上面的方法,页面的ajax方法会得到returnvalue字符串,然后按照自己的定义格式去解析它得到想要的数据。
struts2有一个json返回结果,就是专门处理ajax的,你可以百度一下。这样省去了你自己封装传输格式。
当然,如果你的返回结果非常简单,不是复杂的对象,则上面的方法完全胜任。
------解决方案--------------------
Action 呗,最好使用 Struts 2 JSON 插件

http://struts.apache.org/2.2.3/docs/json-plugin.html
------解决方案--------------------
Action