配置文件:
<!-- 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"; }
相关推荐
将Spring MVC与Ajax结合使用,可以实现页面的异步更新,提升用户体验,同时保持服务器负载均衡。 首先,我们需要理解Spring MVC的基本工作流程。当用户发起请求时,Spring MVC的DispatcherServlet会拦截这个请求,...
基于spring mvc注解开发的ajax项目实例,通过对注解@ResponseBody的应用,实现ajax局部刷新功能,java代码端返回Map,Integer,User,List等对象,在jsp页面通过$.each(data,function(index,entity) { });...
这个项目可能是为了演示如何在一个简单的添加删除操作中使用这些技术,通过整合Spring、Hibernate、Spring MVC和Ajax,实现一个高效、用户友好的后台管理系统。开发者可以通过学习这个示例,掌握如何在实际项目中...
**Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...
在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...
十五、Spring MVC处理ajax请求:讲解了如何在Spring MVC中处理异步JavaScript和XML(AJAX)请求,包括配置和控制器中的代码实现。 十六、Spring MVC关于写几个配置文件的说明:介绍了在Spring MVC项目中需要配置...
例如,当用户在前端进行某些操作,如提交表单,我们可以使用Ajax发送POST请求到Spring MVC的Controller,Controller处理业务逻辑后,将结果以JSON或其他格式返回。JavaScript接收到响应后,可以在前端动态更新页面,...
本示例探讨的是如何利用Spring MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有无刷新、用户体验更佳的优势。以下是关于这个主题的详细讲解。 首先,我们需要理解Spring...
综上所述,这个项目可能是一个使用Maven构建的Java Web应用,采用Spring MVC作为MVC架构,利用Hibernate进行数据库操作,通过Validation进行数据验证,并且使用DWR来增强前端的交互性。这样的组合提供了一个强大、...
在Spring MVC项目中,jQuery 可以用于前端页面的动态操作,如表单验证、异步数据加载、DOM元素操作等。通过Ajax,jQuery可以与后台Spring MVC控制器进行无刷新的数据交互,提升用户体验。 **Twitter Bootstrap 的...
**Spring MVC + Ajax 用户登录增删改查功能详解** 在Web开发中,Spring MVC和Ajax是两种非常重要的技术。Spring MVC作为Spring框架的一部分,提供了一种模型-视图-控制器的架构模式,使得开发者能够更好地组织和...
十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、...
在Spring MVC框架中,Ajax(Asynchronous JavaScript and XML)是一种常用的技术,用于在不刷新整个页面的情况下与服务器进行异步通信。本章将探讨如何在Spring MVC中集成和使用Ajax,以及涉及的上传和下载功能,...
15. **AJAX集成**:Spring MVC与jQuery、AngularJS等前端库配合,可以实现异步数据交互。 这个"spring mvc 整合包"可能包含了Spring MVC的jar文件、配置示例、启动脚本或者示例代码,帮助开发者快速启动基于Spring ...
十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作
同时,还讨论了Spring MVC如何与Ajax技术结合,实现页面的无刷新更新,提高用户体验。 对于RESTful Web服务的支持,Spring MVC提供了一套强大的工具,允许开发者创建符合REST原则的API。书中详细介绍了如何定义...
《Spring MVC Cookbook》是由PACKT Publishing在2016年出版的一本专著,主要针对Spring MVC框架提供了实用的解决方案和技巧。Spring MVC是Spring框架的一部分,它为构建基于Java的Web应用程序提供了一个模型-视图-...
在本示例中,“mvc-ajax.rar_spring mvc”是一个包含使用Ajax技术与Spring MVC集成实现账号添加功能的项目。让我们深入探讨这个主题。 首先,Spring MVC是Spring框架的一个组件,专门用于处理Web应用程序的请求和...