spring MVC实现Json数据交互及RESTful支持

关于json和restful

Json详见.
RESTful风格详见.

案例实践

项目结构及jar包

jar包
在这里插入图片描述
项目结构图

在这里插入图片描述
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>spirngmvc_01</display-name>
  
  
  <!-- 配置前端过滤器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<!--servlet-class中的值是spring-webmvc包提供的类,即前端控制器,用于控制所有请求 -->
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	
  	<!-- 初始化时加载文件(mvc-json.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  
  		<param-value>classpath:mvc-json.xml</param-value>
  	</init-param>
  	<!--  表示容器在启动时立即加载 Servlet,数值越小,加载越快 -->
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  
  <!-- 配置servlet映射  servlet-name取值与servlet的servlet-name一致-->
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

mvc-json.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.xsd       
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">
        
      <context:component-scan base-package="com.myjson" />
      <!-- 1、配置注解驱动 -->
      <mvc:annotation-driven  />
      
    <!--   2、 <bean>标签配置注解方式的处理器映射器和处理器适配器必须配对使用
			  使用 <bean>标签配置注解方式的处理器映射器 -->
			  
	  <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />  -->
 	  
 	 <!--  使用 <bean>标签配置注解方式的处理器适配器 --> 	  
      <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  -->
     <!--  <property name="messageConverters"> --> 
          <!--  <list> --> 
                   	<!--  在注解适配器中配置 JSON 转换器	 -->
            <!--    <bean  class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
           </list>
           
           </property>
      </bean> -->
                 
      <!-- 定义视图解析器 -->
	<bean class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />	     
	</bean>
</beans>

JsonTest.java

package com.myjson;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.user.User;

@Controller
public class JsonTest {
	
	 public JsonTest() {
		// TODO Auto-generated constructor stub
	}
	
	 //RESTful风格
	@RequestMapping("/jsonTest/{id}")
	
	//用于直接返回对象,标注在方法上
	@ResponseBody       //用于将请求体中的数据绑定到形参上,标注在形参上
	public User Restful(/* @RequestBody User user */
			@PathVariable("id") String id)
	{
		User user = new User();
		System.out.println("Restful风格");
		if(id.equals("1"))
		{
			user.setUserName("tom");
		}
		return user;
	}
	
	//Json
@RequestMapping("/jsonTest")	
	//用于直接返回对象,标注在方法上
	@ResponseBody       //用于将请求体中的数据绑定到形参上,标注在形参上
	public User jsonTest(@RequestBody User user)
	{				
		System.out.println("Json交互");
		return user;
	}
}

jsonTest.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>json</title>

  <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
     
     function jsonTest()
     {
    	 var username = $("#username").val();
    	 var password = $("#password").val();             	
    	
    	 $.ajax({
    		 
    		 url : "jsonTest/"+username, //RESTful风格
    		 //url : "jsonTest",
    	     type : "post",    //请求方式
    	     
    	     //data:请求携带的数据,当使用json格式时,
    	     //{}内是一个对象,userName,passWord为pojo类里的属性
    		 //data : JSON.stringify({userName:username,passWord:password}),
    		 
    		 //contentType:当响应数据为json格式时,值必须为application/json    	
    		 contentType : "application/json;charset=utf-8",
    		 
    		 //可选(自动识别),当响应数据为json时,值必须也是json
    		 dataType : "json",
    		 
    		 //请求成功后
    		 success : function(data)
    		 {
    			 if(data!=null)
    			 {
    				 if(data.userName!=null&&data.passWord!=null)
    				 {
    					 alert(" 您输入的用户名为: "+data.userName+ 
    						"密码为: "+data.passWord);
    				 }
    				 else
    			     {
    					 alert(" 您查找的用户名:"+data.userName);
    			     }
    			 }
    			 else
    		     {    			 
    				 alert(" null");
    			 }
    		 }
    	 });
     }


</script>
</head>
<body>

     <form action="">
     
        <input type="text" id="username" name="username"><br>
       <!--  <input type="password" id="password" name="password"><br> -->
         <input type="button" value="jsontest" onclick="jsonTest()"> 
     
     </form>

</body>
</html>

User类(pojo类)。。。略

这样,一个关于json数据交互的小案例就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值