SpringMVC从Controller中获取json数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010741376/article/details/44680151

web.xml配置文件:

       

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	
	<servlet>
	       <servlet-name>hello</servlet-name>
	        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	          <init-param>
	           <param-name>contextConfigLocation</param-name>
	           <param-value>/WEB-INF/hello-servlet.xml</param-value>
	      </init-param>
	        <!-- 设置启动优先级 -->
	        <load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
	        <servlet-name>hello</servlet-name>
	        <url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<!-- filter用来设置编码 -->
	<filter>
	       <filter-name>CharacterFilter</filter-name>
	       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	        <init-param>
	             <param-name>encoding</param-name>
	             <param-value>utf-8</param-value>
	        </init-param>
	       
	</filter>
	<filter-mapping>
	        <filter-name>CharacterFilter</filter-name>
	        <url-pattern>/</url-pattern>
	</filter-mapping>
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

springMVC配置文件:

 

<?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/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    <context:component-scan base-package="com.spring.json.controller"></context:component-scan>
     
     <!-- 开启注解模式 -->
     <mvc:annotation-driven></mvc:annotation-driven>
     
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <property name="prefix" value="/WEB-INF/pages/"></property>
             <property name="suffix" value=".jsp"></property>
     </bean>
    
    
    
    </beans>

实体类User:

 

package com.spring.json.entity;

public class User {
      private String userName;
      private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}
Controller控制器:

方式一:

  

import javax.servlet.http.HttpServletResponse;

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

import com.google.gson.Gson;
import com.spring.json.entity.User;


@Controller
public class UserController {
    
	@RequestMapping(value="/user.do")
	public String toUser(){
		System.out.println("ok");
		return "userList";
	}
	
	//方式一
	@RequestMapping(value="/getUserList.do")
	public String getUserList(HttpServletResponse response){
		  response.setCharacterEncoding("utf-8");
		  response.setContentType("application/json");
		 List<User> userList=getUsers();
		 Gson gson = new Gson(); 
		String json=gson.toJson(userList);
		 System.out.println("json------"+json);
		 PrintWriter out=null;
		  try {
			out=response.getWriter();
			out.write(json);
			out.flush();
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally{
			if(out!=null){
				out.close();
			}
		}
		  return "userList";
	}
	
	
	private List<User> getUsers(){
		List<User> users=new ArrayList<User>();
		User u1=new User();
		u1.setUserName("张三");
		u1.setPassword("123456");
		
		
		User u2=new User();
		u2.setUserName("李四");
		u2.setPassword("ls123");
		
		User u3=new User();
		u3.setUserName("王五");
		u3.setPassword("ww888");
		users.add(u1);
		users.add(u2);
		users.add(u3);
		
		return users;
		
	}
}

方式二:需要加入jackson-all-1.6.4.jar

  

package com.spring.json.controller;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

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

import com.google.gson.Gson;
import com.spring.json.entity.User;


@Controller
public class UserController {
    
	@RequestMapping(value="/user.do")
	public String toUser(){
		System.out.println("ok");
		return "userList";
	}
	
	//方式二
	
	/**
	 * @responsebody表示该方法的返回结果直接写入HTTP response body中
               一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,   
			加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。
			比如异步获取json数据,加上@responsebody后,会直接返回json数据
	 */
	@RequestMapping("/getUserList.do")
	@ResponseBody
	public Map<String, Object> getUserList(){
		Map<String, Object> result=new HashMap<String, Object>();
	    List<User> userlist=getUsers();
		result.put("users",userlist);
		return result;
	}
	
	private List<User> getUsers(){
		List<User> users=new ArrayList<User>();
		User u1=new User();
		u1.setUserName("张三");
		u1.setPassword("123456");
		
		
		User u2=new User();
		u2.setUserName("李四");
		u2.setPassword("ls123");
		
		User u3=new User();
		u3.setUserName("王五");
		u3.setPassword("ww888");
		users.add(u1);
		users.add(u2);
		users.add(u3);
		
		return users;
		
	}
}

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 'welcome.jsp' starting page</title>
     <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
      <script type="text/javascript">
          $(function(){
               $("#btn").click(function(){
		                 
		          $.ajax({
		              type:'post',
		              url:'${pageContext.request.contextPath}/getUserList.do',
		              success:function(data){
		                  //返回json数据
		                  alert("data:"+data);
		                  $.each(data,function(i,user){
		                      $("#result").append(user.userName+"----"+user.password+"<br>");
		                  })
		                  
		              },
		              error:function(e){
		              alert("error:"+e);
		              }
		          
		
		          }); 
               
               
               
               });
         
          });
         
      
         
      
      </script>
  </head>
   
  <body>
       <input type="button" id="btn" value="获取用户信息"/><br/>
      用户信息:<br/>
      <div id="result"></div>
  </body>
</html>

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 'welcome.jsp' starting page</title>
     <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
      <script type="text/javascript">
          $(function(){
               $("#btn").click(function(){
		                 
		          $.ajax({
		              type:'post',
		              url:'${pageContext.request.contextPath}/getUserList.do',
		              success:function(data){
		                  //返回json数据
		                  alert("data:"+data);
		                  $.each(data.users,function(i,user){
		                      $("#result").append(user.userName+"----"+user.password+"<br>");
		                  })
		                  
		              },
		              error:function(e){
		              alert("error:"+e);
		              }
		          
		
		          }); 
               
               
               
               });
         
          });
         
      
         
      
      </script>
  </head>
   
  <body>
       <input type="button" id="btn" value="获取用户信息"/><br/>
      用户信息:<br/>
      <div id="result"></div>
  </body>
</html>

):

  项目截图:

  SpringMVC从Controller中获取json数据


上一篇:Ask me anything: 深度学习专家 Yoshua Bengio 答 Reddit 网友问


下一篇:ORACLE自定义函数