除了在导入jackson的jar包时犯了些错误外,基本还是比较简单的,所以就直接写流程了。
项目结构:
一、获取所需要的jackson的jar包,本项目没有结合maven,前段时间刚刚学习了maven,正好复习一下。借助了另一个使用了maven的项目,在其pom.xml中添加依赖:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.7.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.0</version> </dependency>
更新此项目的依赖后,到maven本地库中找到下载好的3个jar备用。
当然,也可以直接下载, 需要注意的是下载地址已经更新了,网上找到的很多都是旧版的,浪费了我不少时间。新的下载地址为:http://mvnrepository.com/artifact/com.fasterxml.jackson.core
根据自己的需要找到相应的版本就行了。本实验使用的是2.70版,就是看用的人还不少所以选用的。
二、创建项目 springmvc-ajax,复制之前的入门例子springmvc002中的web.xml和myspring-servlet.xml到本项目的WEB-INF目录下。
myspring-servlet.xml中的内容并无更改,再贴一次:
<?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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" 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"> <!-- springmvc 注解驱动 --> <mvc:annotation-driven /> <!-- 扫描器 --> <context:component-scan base-package="com.sunny" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/pages/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
三、导入之前下载的3个jackson jar文件,并导入 spring mvc的jar包。
四、在WebRoot目录下创建js目录,并复制一个jQuery.js 到此目录下。
五、在WebRoot的pages目录下创建页面文件 user_list.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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'user_list.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script src="js/jquery-1.11.0.min.js"></script> <script> $().ready(function(){ $('#btnDetail').click(function(){ var userId=$('#userId').val(); $.post("userDetail.do",{userId:userId},function(data){ alert(data.userId+" "+data.username+" "+data.age); },'json'); }); }); </script> </head> <body> <input type="text" id="userId" name="userId" /> <input type="button" value="详情" id="btnDetail"/> </body> </html>
当点击此页面上的详情按钮时,将以ajax方式访问userDetail.do,这个将指向一个Controller,所以下面写一个Controller.
六、编写控制器类UserController以及 实体类 Userinfo
代码:
package com.sunny.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.sunny.po.Userinfo; @Controller public class UserController { @RequestMapping("/userDetail.do") public @ResponseBody Userinfo getDetail(Integer userId){ return new Userinfo(userId,"小鱼儿",20); } }
注意上面这个Controller类,在方法返回值前加上了注解 @ResponseBody ,这个指明Userinfo对象将作为响应内容返回。
据别人的说法,spring 3.1之后,只要在项目 中添加了jackson的jar包后,就已经可以直接使用了,并不需要在配置文件myspring-servlet.xml 中进行配置。这个经过测试确实如此,本实验使用的spring 是4.25版的。
Userinfo类的代码略,该类有3个属性:
public class Userinfo implements Serializable{ private static final long serialVersionUID = -4105734707188223151L; private int userId; private String username; private Integer age;
最后进行测试,项目发布后,在浏览器中访问:
点击按钮后:
测试成功!