zoukankan      html  css  js  c++  java
  • SpringMVC从Controller中响应json数据

      在页面上异步获取Controller中响应的json数据。

      页面代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>User List</title>
    
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/script/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#button_getUser").click(function(){
                //异步请求json数据
                $.ajax({
                    type:"POST",
                    url:"${pageContext.request.contextPath}/user/getUserList",
                    success:function(data){
                        //迭代返回的json数据
                        $.each(data,function(i,user){
                            $("#results").append(user.userName+"---"+user.password+"<br>");
                        });
                    },
                    error:function(e) {
                        alert("出错:"+e);
                    }
                });
            });
        });
    </script>
    
    </head>
    <body>
        <input type="button" id="button_getUser" value="获取用户列表"><br>
        用户信息:<br>
        <div id="results">
        
        </div>
    </body>
    </html>

      Controller中的代码

    @RequestMapping("/getUserList")
        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 "/user/userList";
        }
        
        private List<User> getUsers() {
            List<User> users = new ArrayList<User>();
            
            User user1 = new User();
            user1.setUserName("李坏");
            user1.setPassword("LiHuai");
            
            User user2 = new User();
            user2.setUserName("阿飞");
            user2.setPassword("aFei");
            
            User user3 = new User();
            user3.setUserName("陆小凤");
            user3.setPassword("LuXiaoFeng");
            
            users.add(user1);
            users.add(user2);
            users.add(user3);
            
            return users;
        }

      结果如下:

      


      或者使用@ResponseBody,需要用到jackson相关的包。

      页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>User List</title>
    
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/script/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#button_getUser").click(function(){
                //异步请求json数据
                $.ajax({
                    type:"POST",
                    url:"${pageContext.request.contextPath}/user/getUserList",
                    success:function(data){
                        //迭代返回的json数据
                        $.each(data.users,function(i,user){
                            $("#results").append(user.userName+"---"+user.password+"<br>");
                        });
                    },
                    error:function(e) {
                        alert("出错:"+e);
                    }
                });
            });
        });
    </script>
    
    </head>
    <body>
        <input type="button" id="button_getUser" value="获取用户列表"><br>
        用户信息:<br>
        <div id="results">
        
        </div>
    </body>
    </html>

      Controller:

    @RequestMapping("/getUserList")
        @ResponseBody
        public Map<String,Object> getUserList() {
            Map<String,Object> resultMap = new HashMap<String,Object>();
            List<User> userList = getUsers();
            resultMap.put("users", userList);
            return resultMap;
        }
  • 相关阅读:
    RN-Android构建失败:Caused by: org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'AwesomeProject'.
    Android更新包下载成功后不出现安装界面
    真机调试: The application could not be installed: INSTALL_FAILED_TEST_ONLY
    react native 屏幕尺寸转换
    Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
    React Native安卓真机调试
    git提交代码报错Permission denied, please try again
    The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
    命令行设置快捷命令
    Linux 常用指令
  • 原文地址:https://www.cnblogs.com/luxh/p/2960335.html
Copyright © 2011-2022 走看看