spring mvc 入门系列之五--结合Jackson和jquery实现的Ajax

来源:互联网 发布:什么是关键词优化 编辑:程序博客网 时间:2024/05/21 11:23

除了在导入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" /><!-- 配置视图解析器 --><beanclass="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;@Controllerpublic 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;

最后进行测试,项目发布后,在浏览器中访问

 

点击按钮后:


测试成功!



0 0
原创粉丝点击