`
fackyou200
  • 浏览: 301751 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

Spring MVC Ajax 操作

 
阅读更多

 

 

配置文件:

 

<!-- spring mvc ajax 配置SpringMVC @ResponseBody和@RequestBody注解 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="stringHttpMessageConverter" />
				<ref bean="mappingJacksonHttpMessageConverter" />
			</list>
		</property>
	</bean>
	
	<!-- 配置支持返回的数据类型 -->
	<bean id="stringHttpMessageConverter"
		class="com.anysoft.common.util.converter.UTF8StringHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/plain;charset=UTF-8</value>
				<value>text/html;charset=UTF-8</value>
				<value>application/xml;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	<!-- 配置支持提交的数据类型 -->
	<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>application/json;charset=UTF-8</value>
				<value>text/html;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	
	<!-- spring mvc ajax 配置SpringMVC @ResponseBody和@RequestBody注解 -->

 

 

UTF8StringHttpMessageConverter代码:

 

 

package com.framework.common.util.spring.converter;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.util.FileCopyUtils;

/**
 * 解决@responseBody乱码问题
 * UTF8StringHttpMessageConverter
 * @author dongxh
 *
 */
public class UTF8StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {

	public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

	private final Charset defaultCharset;

	private final List<Charset> availableCharsets;

	private boolean writeAcceptCharset = true;


	/**
	 * A default constructor that uses {@code "ISO-8859-1"} as the default charset.
	 * @see #StringHttpMessageConverter(Charset)
	 */
	public UTF8StringHttpMessageConverter() {
		this(DEFAULT_CHARSET);
	}

	/**
	 * A constructor accepting a default charset to use if the requested content
	 * type does not specify one.
	 */
	public UTF8StringHttpMessageConverter(Charset defaultCharset) {
		super(new MediaType("text", "plain", defaultCharset), MediaType.ALL);
		this.defaultCharset = defaultCharset;
		this.availableCharsets = new ArrayList<Charset>(Charset.availableCharsets().values());
	}

	/**
	 * Indicates whether the {@code Accept-Charset} should be written to any outgoing request.
	 * <p>Default is {@code true}.
	 */
	public void setWriteAcceptCharset(boolean writeAcceptCharset) {
		this.writeAcceptCharset = writeAcceptCharset;
	}


	@Override
	public boolean supports(Class<?> clazz) {
		return String.class.equals(clazz);
	}

	@Override
	protected String readInternal(Class clazz, HttpInputMessage inputMessage) throws IOException {
		Charset charset = getContentTypeCharset(inputMessage.getHeaders().getContentType());
		return FileCopyUtils.copyToString(new InputStreamReader(inputMessage.getBody(), charset));
	}

	@Override
	protected Long getContentLength(String s, MediaType contentType) {
		Charset charset = getContentTypeCharset(contentType);
		try {
			return (long) s.getBytes(charset.name()).length;
		}
		catch (UnsupportedEncodingException ex) {
			// should not occur
			throw new IllegalStateException(ex);
		}
	}

	@Override
	protected void writeInternal(String s, HttpOutputMessage outputMessage) throws IOException {
		if (this.writeAcceptCharset) {
			outputMessage.getHeaders().setAcceptCharset(getAcceptedCharsets());
		}
		Charset charset = getContentTypeCharset(outputMessage.getHeaders().getContentType());
		FileCopyUtils.copy(s, new OutputStreamWriter(outputMessage.getBody(), charset));
	}

	/**
	 * Return the list of supported {@link Charset}.
	 * <p>By default, returns {@link Charset#availableCharsets()}. Can be overridden in subclasses.
	 * @return the list of accepted charsets
	 */
	protected List<Charset> getAcceptedCharsets() {
		return this.availableCharsets;
	}

	private Charset getContentTypeCharset(MediaType contentType) {
		if (contentType != null && contentType.getCharSet() != null) {
			return contentType.getCharSet();
		}
		else {
			return this.defaultCharset;
		}
	}
}

 

 

 

 

action代码:

 

 

 

//ajax操作
	@RequestMapping("/ajax")
	@ResponseBody 
	public Map<String, Object> ajaxWebsite(@RequestBody CmsWebsite website){
		System.out.println("==================****************================:"+website.getSiteUrl());
		Map<String, Object> modelMap = new HashMap<String, Object>();
		modelMap.put("d", "d");
		return  modelMap;
	}
	
	
	//ajax操作
	@RequestMapping("/ajax1")
	@ResponseBody 
	public CmsWebsite ajaxWebsite1(@RequestBody CmsWebsite website){
		System.out.println("==================****************================:"+website.getSiteUrl());
		Map<String, Object> modelMap = new HashMap<String, Object>();
		modelMap.put("d", "d董晓黑");
		return  website;
	}
	
	//ajax操作
	@RequestMapping("/ajax2")
	@ResponseBody 
	public Map<String, Object> ajaxWebsite2(@RequestBody CmsWebsite website){
		System.out.println("==================****************================:"+website.getSiteUrl());
		
		Map<String, Object> modelMap1 = new HashMap<String, Object>();
		
		List<CmsWebsite> l = new ArrayList<CmsWebsite>();
		CmsWebsite c = new CmsWebsite();
		c.setSiteUrl("1111111111111");
		c.setSiteIcp("2222222222222");
		l.add(c);
		
		CmsWebsite c1 = new CmsWebsite();
		c1.setSiteUrl("333333333333");
		c1.setSiteIcp("4444444444444");
		l.add(c1);
		
		modelMap1.put("data",l);
		modelMap1.put("zs","200");
		return  modelMap1;
	}
	
	//ajax操作
	@RequestMapping("/ajax3")
	@ResponseBody 
	public String ajaxWebsite4(@RequestBody CmsWebsite website){
		System.out.println("==================****************================:"+website.getSiteUrl());
		return  "chenggong";
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics