spring mvc整合ajax

dimcutter 2009-03-13 09:44:50
我想用spring mvc整合ajax,ajax的服务器端代码应该放在哪里呀?
貌似不能用controller吧,直接写在servlet里面?
只想实现一些简单的ajax,不要用框架啥的
...全文
4063 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小滨滨1421 2012-06-21
  • 打赏
  • 举报
回复
楼主,可不可以将你的例题打个包,挂上来看看啊?小弟遇到了和你一样的问题了
「已注销」 2012-03-07
  • 打赏
  • 举报
回复
这样的问题,还不简单,还需要怎么解释呢?
直接在客户端发起ajax请求,在服务器的spring controller里面处理。
例如:
public class SimpleConlleter extends BaseController{

private String charset = "UTF-8";
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)
throws Exception {
if(request.getCharacterEncoding() == null && charset != null){
request.setCharacterEncoding(charset);
}
if(charset != null)
response.setCharacterEncoding(charset);
Integer start = getIntRequestParam("start");
Integer limit = getIntRequestParam("limit");
PageData<BudgetSetting> pdata = SingleObjectFactory.getObject(BudgetSettingDao.class).findFullProperties(start,limit);
GridDataModel<BudgetSetting> gdm = new GridDataModel<BudgetSetting>();
gdm.setTotal(pdata.getTotal());
gdm.setRows(pdata.getPageData());
String json = convertToJSON(gdm);
log.log(Level.INFO,json);
renderJSONResult(json);
}



/**
* 输出JSON 响应结果
*/
public void renderJSONResult(String json){
try {
PrintWriter w = response.getWriter();
w.write(json);
} catch (IOException e) {
log.log(Level.SEVERE,e.getMessage(),e);
}
}

}
/**
* 转换配置
* @return
*/
protected JsonConfig getJSONConfig(){
JsonConfig jc = new JsonConfig();
jc.registerDefaultValueProcessor(int.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(Integer.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(Long.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(long.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(Double.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(double.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(Float.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(float.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(Short.class, DefaultValueProcessors.NULL);
jc.registerDefaultValueProcessor(short.class, DefaultValueProcessors.NULL);

jc.registerJsonValueProcessor(long.class,new LongJsonValueProcessorImpl());
jc.registerJsonValueProcessor(Long.class,new LongJsonValueProcessorImpl());
jc.registerJsonValueProcessor(short.class,new ShortJsonValueProcessorImpl());
jc.registerJsonValueProcessor(Short.class,new ShortJsonValueProcessorImpl());
jc.registerJsonValueProcessor(int.class,new IntegerJsonValueProcessorImpl());
jc.registerJsonValueProcessor(Integer.class,new IntegerJsonValueProcessorImpl());
jc.registerJsonValueProcessor(float.class,new FloatJsonValueProcessorImpl());
jc.registerJsonValueProcessor(Float.class,new FloatJsonValueProcessorImpl());
jc.registerJsonValueProcessor(double.class,new DoubleJsonValueProcessorImpl());
jc.registerJsonValueProcessor(Double.class,new DoubleJsonValueProcessorImpl());

jc.registerJsonValueProcessor(Date.class, new DateJsonValueProcessorImpl("yyyy-MM-dd"));
return jc;
}
/**
* 将数据转成JSON格式
* @param data 数据
* @return
*/
public String convertToJSON(Object data){
return JSONObject.fromObject(data,getJSONConfig()).toString();
}
}
gambler4511 2012-02-07
  • 打赏
  • 举报
回复
同样求解,这个问题简直太重要了。
老木 2011-12-21
  • 打赏
  • 举报
回复
我也遇到同样的问题,期待正解.....
若鱼1919 2011-10-21
  • 打赏
  • 举报
回复

public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.println("this is the content");
return null;
}
苏瑾年 2011-05-18
  • 打赏
  • 举报
回复
我也不懂啊
liaodongnian 2010-09-16
  • 打赏
  • 举报
回复
spring 默认返回的是视图的渲染名称 ,一般是jsp文件..而你采用ajax请求,需要的仅仅是数据 所以,建议用JSON数据返回..在客户端即进行JSON解析即可
疯飞 2010-06-01
  • 打赏
  • 举报
回复
同样的问题,纠结很久了,又没时间去好好学习一下AJAX。
cariya123 2009-10-26
  • 打赏
  • 举报
回复
我也在做这方面的,不知道楼上结果怎么样,我是没有返回值,比如alert(data)没有反应
chaoyi2010 2009-07-28
  • 打赏
  • 举报
回复
奶奶的,原理谁都知道,问题是怎么做
daisycool 2009-03-13
  • 打赏
  • 举报
回复
LZ的问题不明确。首先,Ajax是客户端的Javascript,Spring是框架,它和Ajax一点关系都扯不上。

想实现的Ajax其实非常简单,就像正常的网页一样,网页发送请求到服务器,服务器回应,然后网页显示出来。和普通网页显示过程不同的地方在于网页的请求是通过Ajax发出的。最简单的一段Ajax代码:


function getBusinessUnits(myDiv) {
new Ajax.Request('servlets/AjaxHandlerServlet', {
method:'get',
onSuccess: function(transport){
var resp = transport.responseText;
myDiv.innerHTML = resp;
},
onFailure:function(){alert('Some thing went wrong ...');}
});
}


具体Servlet, PHP, ASP ..... 这些东西需要什么参数,返回什么,这都是服务器的事,和Ajax没关系,Ajax要做的就是:发送请求,处理结果。

如果LZ没有Ajax经验的话,建议看看prototype的基础东西,google 一下 prototype,第一个就是。
Sou2012 2009-03-13
  • 打赏
  • 举报
回复
prototype
dimcutter 2009-03-13
  • 打赏
  • 举报
回复
哦~~我明白了
servlet也可以当做普通bean放在ioc容器里面

dimcutter 2009-03-13
  • 打赏
  • 举报
回复
我是想在一个项目中同时使用spring和ajax。

我知道ajax本身和spring没有关系,但是在具体项目的时候,ajax肯定要使用到一些业务类来读数据,而这些业务类肯定是spring容器管理的。

那么给ajax返回结果的服务器端代码放在哪里?Spring MVC的controller返回一个ModelAndView,貌似不行。

难道要直接使用servlet?servlet怎么通过ioc注入业务类呢~~~






81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧