Spring MVC+Ajax创建实例

Java代码 复制代码
  1. @Override  
  2. protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd,   
  3.         BindException ex) {   
  4.     String userId=request.getParamater("userId");   
  5.                  Map userInfoMap=userDao.getUserBaseInfo(userId);   
  6.                  JSONObject object = new JSONObject();   
  7.                  object.put("userInfoMap",userInfoMap);   
  8.     response.setContentType("text/Xml;charset=gbk");   
  9.     PrintWriter out = null;   
  10.     try {   
  11.         out = response.getWriter();   
  12.              out.println(object.toString());   
  13.                 
  14.     }   
  15.     catch (IOException ex1) {   
  16.         ex1.printStackTrace();   
  17.     }finally{   
  18.                            out.close();   
  19.                   }   
  20.     return null;   
  21. }  
	@Override
	protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd,
			BindException ex) {
		String userId=request.getParamater("userId");
                  Map userInfoMap=userDao.getUserBaseInfo(userId);
                  JSONObject object = new JSONObject();
                  object.put("userInfoMap",userInfoMap);
		response.setContentType("text/Xml;charset=gbk");
		PrintWriter out = null;
		try {
			out = response.getWriter();
		         out.println(object.toString());
		         
		}
		catch (IOException ex1) {
			ex1.printStackTrace();
		}finally{
                            out.close();
                   }
		return null;
	}


说明一下我向客户端页面response的是一个JSon对象,选择JSon这种数据格式的两个原因是:

  1. 体积小可降低流量.
  2. Js端解码十分方便,Js对JSon格式数据有原生的支持.


使用Spring Mvc原有的SimpleFormController,从上边的例子上看是可以实现的,但是每次都要写"将JSonObject写入流,关流的代码.很累,很麻纺."
所以,扩展了两个新的Controller,以简化对Ajax请求的处理.
JSONObjectAbstractController 用于简单的从request.getParamater参数的情况.
JSONObjectAbstractController 的原代码:

Java代码 复制代码
  1. package com.javaest.ext.spring.mvc.controller;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8.   
  9. import net.sf.json.JSONObject;   
  10.   
  11. import org.springframework.web.servlet.ModelAndView;   
  12. import org.springframework.web.servlet.mvc.AbstractController;   
  13.   
  14. public abstract class JSONObjectAbstractController extends AbstractController {   
  15.   
  16.     @Override  
  17.     protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)   
  18.             throws Exception {   
  19.         JSONObject jsonObject = handleAjaxRequestInternal(request, response);   
  20.         response.setContentType("text/Xml;charset=gbk");   
  21.         PrintWriter out = null;   
  22.         try {   
  23.             out = response.getWriter();   
  24.             out.println(jsonObject.toString());   
  25.         }   
  26.         catch (IOException ex1) {   
  27.             ex1.printStackTrace();   
  28.         }   
  29.         finally {   
  30.             out.close();   
  31.         }   
  32.   
  33.         return null;   
  34.     }   
  35.   
  36.     protected abstract JSONObject handleAjaxRequestInternal(HttpServletRequest httpServletRequest,   
  37.             HttpServletResponse httpServletResponse) throws Exception;   
  38.   
  39. }  
package com.javaest.ext.spring.mvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public abstract class JSONObjectAbstractController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		JSONObject jsonObject = handleAjaxRequestInternal(request, response);
		response.setContentType("text/Xml;charset=gbk");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.println(jsonObject.toString());
		}
		catch (IOException ex1) {
			ex1.printStackTrace();
		}
		finally {
			out.close();
		}

		return null;
	}

	protected abstract JSONObject handleAjaxRequestInternal(HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception;

}


JSONObjectSimpleFormController 用于自动将请求参数绑定到Command对象的情况.
JSONObjectSimpleFormController 的代码:

Java代码 复制代码
  1. package com.javaest.ext.spring.mvc.controller;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8.   
  9. import net.sf.json.JSONObject;   
  10.   
  11. import org.springframework.validation.BindException;   
  12. import org.springframework.web.servlet.ModelAndView;   
  13. import org.springframework.web.servlet.mvc.SimpleFormController;   
  14.   
  15. public abstract class JSONObjectSimpleFormController extends SimpleFormController {   
  16.   
  17.     @Override  
  18.     protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd,   
  19.             BindException ex) {   
  20.         JSONObject object = onAjaxSubmit(request, response, cmd, ex);   
  21.   
  22.         response.setContentType("text/Xml;charset=gbk");   
  23.         PrintWriter out = null;   
  24.         try {   
  25.             out = response.getWriter();   
  26.             out.println(object.toString());   
  27.         }   
  28.         catch (IOException ex1) {   
  29.             ex1.printStackTrace();   
  30.         }   
  31.         finally {   
  32.             out.close();   
  33.         }   
  34.   
  35.         return null;   
  36.     }   
  37.   
  38.     public abstract JSONObject onAjaxSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd,   
  39.             BindException ex);   
  40.   
  41. }  

注:JSONObject 是json-lib-2.3-jdk15.jar中的,请自己下载导入

    本文是转载http://www.javaeye.com/topic/187504

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值