这篇文章在前边项目的基础上来整合json,最新项目资料见:http://download.csdn.net/detail/u012116457/8436187

首先需要的jar包:jackson-core-asl-1.7.2.jar  jackson-mapper-asl-1.7.2.jar

然后是配置文件json-servlet.xml,该文件得在web.xml中配置使其在tomcat启动时调用:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- 配置对Json的支持 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<!-- 为了处理返回的JSON数据的编码,默认是ISO-88859-1的,这里把它设置为UTF-8,解决有乱码的情况 -->
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean> </beans>

控制类如下:

package module.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import module.entity.User;
import module.service.LoginService; import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
@RequestMapping("/login")
public class LoginController { private static String LOGINSUCCESS="module/jsp/index"; //@Autowired() @Qualifier("loginServiceImpl2")
@Resource(name="loginServiceImpl2")
private LoginService loginService; @RequestMapping(value = "/login.do", method = RequestMethod.POST)
@ResponseBody //此注解表明返回值跳过视图处理部分,直接写入 http response body中
public User login(User user) {
System.out.println("用户:"+user.getName()+" 请求登陆");
User u = loginService.findByName(user.getName());
if(u==null){
u=new User();
u.setName("");
}
return u;
} @RequestMapping("/loginSuccess.do")
public String start(HttpServletRequest request){
return LOGINSUCCESS;
}
}

在spring中,如果使用了@RequestMapping注解,会根据该方法的返回值映射到实际的url,如果同时还使用了@ResponseBody注解,则会跳过视图处理部分,将返回值直接写入http response body中,将其返回到客户端页面。如上边的代码,会将User格式的数据自动转换为json格式返回到客户端。

简单来说,如果需要返回json数据,则用@ResponseBody来注解该方法,返回类型为实体类即可。

下面是jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML >
<html>
<head> <title>登陆</title>
<script type="text/javascript" src="<%=path %>/js/common/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8"> function login(){ $.ajax({
url:'login/login.do',
data:{
name:document.getElementById("name").value,
password:document.getElementById("password").value
},
type:'POST',
dataType:'json',
success:function(data){
alert(data.name);
if(data.name!="")
window.location.href ='http://localhost:8080/springMVC/login/loginSuccess.do';
else
alert("用户名或密码错误");
},
error:function(){
alert("error");
}
});
} </script>
</head>
<body>
<center>
<form>
姓名:<input type="text" name="name" id="name"><br/>
密码:<input type="password" name="password" id="password"></br>
<button type="button" onclick="login()">登陆</button>
</form>
</center>
</body>
</html>

版权声明:本文为博主原创文章,未经博主允许不得转载。

玩转spring MVC(八)----spring MVC整合json的更多相关文章

  1. spring入门(八) spring mvc设置默认首页

    1.web.xml配置如下 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3// ...

  2. Spring学习(八)-----Spring注入值到集合类型的例子

    下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties). 支持4个主要的集合类型: List – <list/> Set – &l ...

  3. 玩转单元测试之Testing Spring MVC Controllers

    玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spri ...

  4. SpringMVC系列(十五)Spring MVC与Spring整合时实例被创建两次的解决方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系

    一.Spring MVC与Spring整合时实例被创建两次的解决方案 1.问题产生的原因 Spring MVC的配置文件和Spring的配置文件里面都使用了扫描注解<context:compon ...

  5. 2017.3.31 spring mvc教程(八) <mvc:annotation-driven />所做的工作

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  6. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSM(Spring+Spring MVC+MyBatis)框架整合搭建详细步骤

    因为 Spring MVC 是 Spring 框架中的一个子模块,所以 Spring 与 SpringMVC 之间不存在整合的问题.实际上,SSM 框架的整合只涉及 Spring 与 MyBatis ...

  7. springboot学习笔记:5.spring mvc(含FreeMarker+layui整合)

    Spring Web MVC框架(通常简称为"Spring MVC")是一个富"模型,视图,控制器"的web框架. Spring MVC允许你创建特定的@Con ...

  8. Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例

    效果图 一共3个页面:注册页,欢迎页,用户列表页 很简单的例子,主要是为了把流程走通,没有各种验证. 注册页: 欢迎页: 用户列表页: 源码地址 https://github.com/lemonbar ...

  9. Spring MVC 和 Spring 总结

    1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...

随机推荐

  1. android studio比较长用的几款插件

    不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/details/46372447 1.Butt ...

  2. 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现

    归并排序的概念及定义 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序是建立 ...

  3. rails项目如何改变已建立的model结构

    有时候第一次用rails g model或者scaffold建立数据模型的时候难免会出错,比如字段类型错误或者字段名称错误,甚至少添加或多添加了几个字段哦.这种情况下手动去修改数据结构是比较头疼的,官 ...

  4. 一个简单的ruby生成器例子(用连续体Continuation实现)

    ruby中有很多经典的驱动器结构,比如枚举器和生成器等.这次简单介绍下生成器的概念.生成器是按照功能要求,一次产生一个对象,或称之为生成一个对象的方法.ruby中的连续体正好可以用来完成生成器的功能. ...

  5. canvas元素

    一.canvas元素的基础知识 canvas元素是html5中新增的一个重要的元素,专门用来绘制图形.在页面上放置了一个canvas元素,就相当于在页面上放置了一块"画布",可以在 ...

  6. Demo1

    <!DOCTYPE html> <html lang="zh"> <header> <meta charset="utf-8&q ...

  7. Django(一)入门基础——hello world

    环境配置 windows7 python3.6 Django 2.0 PyCharm 2018.1 专业版(PS:不建议社区版,因为被"阉割"了很多功能,比如cmd的Termina ...

  8. OSGI介绍

    OSGI介绍 OSGI简介 OSGI (Open Service Gateway Initiative)联盟成立于1999 年,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提 ...

  9. Day6_内置函数

    定义完一个有名函数,可以直接利用函数名+括号来执行,例如:func() 有名函数: def func(x,y,z=1): return x+y+z 匿名函数: lambda x,y,z=1:x+y+z ...

  10. Drupal7.8的安装注意的问题

    首先推荐在安装之前,首先阅读一下官方的Installation guide ,说实话话,这玩意安装没有Joomla安装那么平滑,大多数问题,guide都会提到.我是先安装后看的这个guide,比较折腾 ...