精华内容
下载资源
问答
  • 需要解决问题:前端JavaScript对象 传递到 Java后端 前端代码如下: var fac= new Object(); facilities.facCode = "fac9527"; facilities.facType = "社会设施"; facilities.regionCode = "320106"; facilities...

    需要解决问题:前端JavaScript对象 传递到 Java后端

    前端代码如下:

    var fac= new Object();
    
    facilities.facCode = "fac9527";
    facilities.facType = "社会设施";
    facilities.regionCode = "320106";
    facilities.facName = "玄武湖";
    facilities.facType = "重要建筑";
    
    console.log(typeof facilities);//object类型
    
    var a = JSON.stringify(facilities)
    console.log(typeof a)//string类型
    
    var fac = $.toJSON(facilities);//需要添加jquery.json.js
    console.log(typeof fac)//string类型 
    
    $.ajax({
       url : $("#cfx").val() + "/admin/testController/testAdd",
       type : "POST",
       dataType : "JSON",
       contentType : "application/json",
       data : a,
       success: function (data) {
          console.log(data)
          console.log(data.status)
       },
       error : function (data) {
          console.log(data)
          console.log(data.status)
       }
    })

    后端代码如下:

        @CrossOrigin(origins = "*",maxAge = 3600)
        @ResponseBody
        @RequestMapping(value="/facilitiesAdd", method = RequestMethod.POST)
        @SystemControllerLog(operationType= WebConstant.TYPE_GOPAGE, operationName="设施管理新增")
        public OperateResult<Boolean> facilitiesAdd(HttpServletRequest request,@RequestBody Facilities facilitiesInfo){
    
            logger.info("facilitiesInfo的值:"+facilitiesInfo);
            logger.info("getFacilitiesType的值:"+facilitiesInfo.getFacilitiesType());
            OperateResult<Boolean> result = null;
    
            try {
                logger.info("进入设施管理新增");
                
                result = facService.facilitiesAdd(facilitiesInfo);
                
                logger.info("result:"+result);
                logger.info("设施管理新增成功");
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("设施管理新增失败");
            }
    
            return result;
        }

    遇到问题报错清楚如下:

    问题1

    后端报错信息:Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

    前端报错信息:415

    解决:Ajax中添加    contentType : "application/json",

    ps:注意大小写,由于contentType  写成 ContentType,也报错

    问题2

    后端报错信息:Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'facilitiesInfo': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'facilitiesInfo': was expecting 'null', 'true', 'false' or NaN
     at [Source: java.io.PushbackInputStream@2cce1290; line: 1, column: 16]

    前端报错信息:400

    解决:把

    data : {facilitiesInfo:a}

    改成

    data : a,// var a = JSON.stringify(facilities)

    查询链接:https://blog.csdn.net/qq_36802726/article/details/88419297

    https://www.cnblogs.com/ilinuxer/p/6869933.html

    问题3 

    后端接受问题:刚开始使用

    ObjectMapper om = new ObjectMapper();
        
    String facilitiesInfo = request.getParameter("facilities");
    
    Facilities facilities = om.readValue(facilitiesInfo,Facilities.class);

    这样使用前端要这么写

    $.ajax({
                url : $("#cfx").val() + "/admin/testController/testAdd",
                type: "POST",
                data: {
                    'facilities': JSON.stringify(facilities)
                },
                dataType: "json",
                success: function (ret) {
                    if (ret && ret.Code == "1") {
                        reaffirm("新增成功");
                        window.location.href = "../content/index?mid=4"
                    } else {
                        reaffirm("新增失败,请刷新页面重试!")
                        return false
                    }
                }
            })

    使用情况未添加:contentType : "application/json",

     

    以上情况是通过Ajax和Java后端测试交互。

    由于实行前后端分离,故vue和Java后端交互情况未知。

    续1:(未使用过vue前端框架,表述可能存在问题)2019-08-19

    vue和Java后端数据解决方案:

    (1)显示的在post请求中定义contentType : "application/json",

    (2)传递的参数对象转换成json字符串格式

    (3)后端通过@RequestBody获取数据

    不明白为什么通过postman或者通过JSP页面去传递参数的时候不需要设置这些,后端也不需要通过@RequestBody去获取数据就能传递参数过去,这种contentType应该是application/x-www-form-urlencoded这样的。

    总感觉有点怪怪的,不知道是不是因为接触的太少,准备周末再看看这方面的知识点。

    待续.......

    感谢查阅过的博客信息。

     

     

     

     

     

     

     

     

    展开全文
  • Spring MVC 学习笔记11 —— 后端返回json格式数据 Spring MVC 学习笔记11 —— 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是...

    Spring MVC 学习笔记11 —— 后端返回json格式数据

     我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点:

       1. JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法.
       2. 它是一种基于文本,独立于语言的轻量级数据交换格式.
       3. json的两种结构:对象{key:value,key:value,...}  和  数组 [value, value2, ... ]
       4. json字符串:普通字符串、json字符串、json对象的区别
       5. 不同编程工具使用json的方法

     参考:http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html


    Spring MVC 返回json数据,用show来实现:

    UserController.java:

    保持两套请求,一套是传统的请求返回数据;一套是请求json格式返回数据。

    	//6. 查一个用户 show.jsp
    	@RequestMapping(value="/{username}", method=RequestMethod.GET)
    	public String show(@PathVariable String username, Model model){
    		model.addAttribute("user1",users.get(username));	//user1参数属性名,到了视图,就是user1
    		return "user/show";
    	}
    	
    	//6. 查一个用户 show.jsp
    	@RequestMapping(value="/{username}", method=RequestMethod.GET, params="jsoon")
    	@ResponseBody	//这里要加一行
    	public User show(@PathVariable String username){      //声明中没有了Model
    		//model.addAttribute("user1",users.get(username));
    		return users.get(username);            //不返回String了,返回user对象
    	}

    说明,以上代码中:

      1. 增加@ResponseBody, 
      2. no return String, but User Object
      3. no Model
      4. directly return users.get(username)//注意返回的是一个User对象
      5. 可以在RequestMapping行增加一个请求值:Params="jsoon"//这是规定如要进这个方法返回json,需要带个参数jsoon

    此时可测试,返回406错误如图:(通过url加入?jsoon访问了,但没有头文件为它进行解释)


    所以我们需要加入一个jar包:jackson-all-1.x.x.jar

    从这个网址可以下载到:http://jarfiles.pandaidea.com/jackson.all.html

    把jar包复制到项目文件夹/lib文件夹下,重新debug,链接进入:http://localhost:8080/myhello/user/sdy?jsoon

    此时,有的浏览器Chrome,firefox等能显示如下,其他浏览器如360等,会提示下载sdy.json文件,notepad++打开以后也是如下内容。


    Enjoy ;)









    posted on 2014-11-25 11:21 sonictl 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/sonictl/p/6735584.html

    展开全文
  • 由于Java后端学习者通常对于前端的技术不太熟练,,,本篇文章旨在针对Java后端学习者快速掌握简单的ajax请求和json数据使用而写。 如有不当,轻喷。 介绍: JSONJSON(JavaScript Object Notation, JS对象...

    前言:

    由于Java后端学习者通常对于前端的技术不太熟练,,,本篇文章旨在针对Java后端学习者快速掌握简单的ajax请求和json数据使用而写。

    如有不当,轻喷。

     

    介绍:

    JSON:JSON(JavaScript Object Notation, JS对象标记)是-种轻量级的数据交换格式,用于存储和表示数据。在JS语言中,一切都是对象。因此,任何JS支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。

    Ajax:Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    JSON使用

    看看他的要求和语法格式:

    ●对象表示为键值对
    ●数据由逗号分隔
    ●花括号保存对象
    ●方括号保存数组

    JSON键值对是用来保存JS对象的一种方式,和JS对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号"包裹,使用冒号:分隔,然后紧接着值。

    {"name": "QinJiang"}
    {"age": "3"}
    {"sex": "男"}
    

    JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。

    var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
    var json = '{"a": "Hello", "b": "World"}'; //这是一个JSON字符串,本质是一个字符串

    JSON和JS对象互转
    要实现从JSON字符串转换为JS对象,使用JSON.parse()方法:

    var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是{a: 'Hello', b: 'World'}

    要实现从JS对象转换为JSON字符串,使用JSON.stringify()方法:

    var json = JSON. stringify({a: 'Hello', b: 'World'}); //结果是' {"a": "Hello", "b": "World"}'

    ssm项目中使用json需要导包,通常用jackson,jar包为 jackson-annotations.jar,jackson-core.jar,jackson-databind.jar。

    通常json也被用于前后端的数据传递,Java后台将返回的数据转换为json的代码如下。更多的使用请看Ajax。

    	@RequestMapping("/ajaxTest")
    	@ResponseBody    //使用@ResponseBody注解,spring会自动将返回的值转换为json格式的数据,需导入jackson jar包
    	public List<User> ajaxTest() {
    		
            //伪造数据
    		List<User> list = new ArrayList<User>();
    		User user = new User();
    		User user1 = new User();
    		
    		user.setUsername("kk");
    		user.setPassword("123");
    		user1.setUsername("康康");
    		user1.setPassword("456");
    		
    		list.add(user);
    		list.add(user1);
    		
    		//由于加了@ResponseBody注解,默认返回一个json格式的字符串
    		return list;
    	}

    AJAX使用:

    这里使用的是jquery提供的方法,jquery是前端的一个框架,就是一个JavaScript库,里面有许多封装好的方法,直接调用即可。

    使用jquery需要下载jquery文件,百度jquery官网即可下载,jquery官网,选择这两个中的一个下载即可。

     

     然后只需导入项目中即可使用,

    jsp文件需要导入

    jquery ajax的方法有get,post和ajax。get方法就是以get方式提交,post方法就是以post方式提交,ajax默认以get方式提交,这个方法比较通用,一般使用ajax方法。

    jquery.get(...)
    
        所有参数:
    
        url:待载入页面的url地址
    
        data:待发送的key/value参数
    
        success:载入成功时的回调函数
    
        dataType:返回的内容格式,xml,json,script,text,html
    
    jquery.post(...)
    
        所有参数:
    
        url:待载入页面的url地址
    
        data:待发送的key/value参数
    
        success:载入成功时的回调函数
    
        dataType:返回的内容格式,xml,json,script,text,html
    
    jquery.ajax(...)
    
        主要参数:
    
        url:待载入页面的url地址
    
        data:待发送的key/value参数
    
        success:载入成功时的回调函数
    
        dataType:返回的内容格式,xml,json,script,text,html

    了解了方法,就可以开始编写ajax请求了,代码如下

    index.jsp

    <html>
    <head>
    <!-- 使用jquery,需要导入 -->
    <script src="js/jquery-2.1.4.min.js"></script>
    </head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>test</title>
    <body>
        <!-- name的值可以通过ajax传给后台 -->
    	name:<input type="text" id="name" ><br/>
        <!-- 这里设置一个按钮来触发ajax请求 -->
    	ajax请求:<input type="button" id="btn" value="发送请求"><br/>
        <!-- 构造一个表格,tbody动态显示后台传递的数据,此时网页并不会刷新,但是却能够通过ajax请求获取数据 -->
    	<table width="50%" align="center">
    		<tr>
    			<td>username</td>
    			<td>password</td>
    		</tr>
    		<tbody id="context">
    		</tbody>
    	</table>
    
    <script type="text/javascript">
    	$(function (){
            //通过按钮点击触发事件,进入ajax请求
    		$("#btn").click(function () {
    			 // url:待载入页面的url地址
    			 // data:待发送的key/value参数,json格式,非必需
    			 // success:载入成功时的回调函数
    			 //		data: 封装了服务器返回的数据
    			$.ajax({
    				url:'${pageContext.request.contextPath}/ajaxTest',
    				data:{"name":$("#name").val()},
    				success:function (data){
    					var html = "";    //将后台传来的数据拼接入HTML代码
    					for(var i=0;i<data.length;i++){
    						html += "<tr>"
    							 + "<td>" + data[i].username + "</td>"
    							 + "<td>" + data[i].password + "</td>"
    							 + "</tr>";
    					}
    					$("#context").html(html);    //加入到tbody中
    				}
    			});
    		})
    	})
    </script>
    </body>
    </html>

    controller层代码

    	@RequestMapping("/ajaxTest")
    	@ResponseBody
    	public List<User> ajaxTest(String name) {
    		
    		//输出从前端传来的值name
    		System.out.println(name);
    		
            //伪造数据
    		List<User> list = new ArrayList<User>();
    		User user = new User();
    		User user1 = new User();
    		
    		user.setUsername("kk");
    		user.setPassword("123");
    		user1.setUsername("康康");
    		user1.setPassword("456");
    		
    		list.add(user);
    		list.add(user1);
    		
    		//由于加了@ResponseBody注解,默认返回一个json格式的字符串
    		return list;
    	}

    运行结果

    indes.jsp

     点击发送请求,传递name的值并获取后台数据,后台数据被动态加载到前端,并且页面不会进行刷新。

    name的值被后台获取并输出

     

    Ajax总结 

    使用jQuery需要导入jQuery文件,也可以原生实现。
    1.编写对应处理的Controller ,返回消息或者字符串或者json格式的数据;
    2.编写ajax请求;
       url : Controller请求
       data :键值对
       success:回调函数(使用回调函数必须返回数据,如不需要可返回"")
    3.给Ajax绑定事件,点击.click, 失去焦点onblur, 键盘弹起keyup。

     

     

    展开全文
  • 在使用springboot框架的前提下,前端layui,在控制器中使用@ResponseBody,将json字符串数据突然转换成了document文本类型,导致json数据直接打印在了前端页面,table表格渲染失败,请问各位大神,要想table渲染成功...
  • 通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。   Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。...

    Spring简介:

    Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。

    图 1. Spring 框架的 7 个模块

    在这里插入图片描述

    Spring 框架图示

      组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

    核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
    Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring
    AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
    Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
    Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
    Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
    Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
      Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。

    Servlet简介:

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

    使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

    Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

    性能明显更好。
    Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
    Servlet 是独立于平台的,因为它们是用 Java 编写的。
    服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
    Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

    下图显示了 Servlet 在 Web 应用程序中的位置。
    在这里插入图片描述

    一、Spring JDBC 读取数据库示例

    Spring JDBC 示例
    想要理解带有 jdbc 模板类的 Spring JDBC 框架的相关概念,让我们编写一个简单的示例,来实现下述 Student 表的所有 CRUD 操作。

    CREATE TABLE Student(
       ID   INT NOT NULL AUTO_INCREMENT,
       NAME VARCHAR(20) NOT NULL,
       AGE  INT NOT NULL,
       PRIMARY KEY (ID)
    );
    

    在继续之前,让我们适当地使用 Eclipse IDE 并按照如下所示的步骤创建一个 Spring 应用程序:

    步骤描述
    1创建一个名为 dbtest的项目,并在创建的项目中的 src 文件夹下创建包 com.tutorialspoint。
    2使用 Add External JARs 选项添加必需的 Spring 库,解释见 Spring Hello World Example 章节。
    3在项目中添加 Spring JDBC 指定的最新的库 mysql-connector-java.jar,org.springframework.jdbc.jar 和 org.springframework.transaction.jar。如果这些库不存在,你可以下载它们。
    4创建 DAO 接口 StudentDAO 并列出所有必需的方法。尽管这一步不是必需的而且你可以直接编写 StudentJDBCTemplate 类,但是作为一个好的实践,我们最好还是做这一步。
    5在 com.tutorialspoint 包下创建其他的必需的 Java 类 Student,StudentMapper,StudentJDBCTemplate 和 MainApp 。
    6确保你已经在 TEST 数据库中创建了 Student 表。并确保你的 MySQL 服务器运行正常,且你可以使用给出的用户名和密码读/写访问数据库。
    7在 src 文件夹下创建 Beans 配置文件 Beans.xml。
    8最后一步是创建所有的 Java 文件和 Bean 配置文件的内容并按照如下所示的方法运行应用程序。

    以下是数据访问对象接口文件 StudentDAO.java 的内容:

    package com.tutorialspoint;
    import java.util.List;
    import javax.sql.DataSource;
    public interface StudentDAO {
       /** 
        * This is the method to be used to initialize
        * database resources ie. connection.
        */
       public void setDataSource(DataSource ds);
       /** 
        * This is the method to be used to create
        * a record in the Student table.
        */
       public void create(String name, Integer age);
       /** 
        * This is the method to be used to list down
        * a record from the Student table corresponding
        * to a passed student id.
        */
       public Student getStudent(Integer id);
       /** 
        * This is the method to be used to list down
        * all the records from the Student table.
        */
       public List<Student> listStudents();
       /** 
        * This is the method to be used to delete
        * a record from the Student table corresponding
        * to a passed student id.
        */
       public void delete(Integer id);
       /** 
        * This is the method to be used to update
        * a record into the Student table.
        */
       public void update(Integer id, Integer age);
    }
    

    下面是 Student.java 文件的内容:

    package com.tutorialspoint;
    public class Student {
       private Integer age;
       private String name;
       private Integer id;
       public void setAge(Integer age) {
          this.age = age;
       }
       public Integer getAge() {
          return age;
       }
       public void setName(String name) {
          this.name = name;
       }
       public String getName() {
          return name;
       }
       public void setId(Integer id) {
          this.id = id;
       }
       public Integer getId() {
          return id;
       }
    }
    
    

    以下是 StudentMapper.java 文件的内容:

    package com.tutorialspoint;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import org.springframework.jdbc.core.RowMapper;
    public class StudentMapper implements RowMapper<Student> {
       public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
          Student student = new Student();
          student.setId(rs.getInt("id"));
          student.setName(rs.getString("name"));
          student.setAge(rs.getInt("age"));
          return student;
       }
    }
    

    下面是为定义的 DAO 接口 StudentDAO 的实现类文件 StudentJDBCTemplate.java:

    
    package com.tutorialspoint;
    import java.util.List;
    import javax.sql.DataSource;
    import org.springframework.jdbc.core.JdbcTemplate;
    public class StudentJDBCTemplate implements StudentDAO {
       private DataSource dataSource;
       private JdbcTemplate jdbcTemplateObject; 
       public void setDataSource(DataSource dataSource) {
          this.dataSource = dataSource;
          this.jdbcTemplateObject = new JdbcTemplate(dataSource);
       }
       public void create(String name, Integer age) {
          String SQL = "insert into Student (name, age) values (?, ?)";     
          jdbcTemplateObject.update( SQL, name, age);
          System.out.println("Created Record Name = " + name + " Age = " + age);
          return;
       }
       public Student getStudent(Integer id) {
          String SQL = "select * from Student where id = ?";
          Student student = jdbcTemplateObject.queryForObject(SQL, 
                            new Object[]{id}, new StudentMapper());
          return student;
       }
       public List<Student> listStudents() {
          String SQL = "select * from Student";
          List <Student> students = jdbcTemplateObject.query(SQL, 
                                    new StudentMapper());
          return students;
       }
       public void delete(Integer id){
          String SQL = "delete from Student where id = ?";
          jdbcTemplateObject.update(SQL, id);
          System.out.println("Deleted Record with ID = " + id );
          return;
       }
       public void update(Integer id, Integer age){
          String SQL = "update Student set age = ? where id = ?";
          jdbcTemplateObject.update(SQL, age, id);
          System.out.println("Updated Record with ID = " + id );
          return;
       }
    }
    

    以下是 MainApp.java 文件的内容:

    
    package com.tutorialspoint;
    import java.util.List;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.tutorialspoint.StudentJDBCTemplate;
    public class MainApp {
       public static void main(String[] args) {
          ApplicationContext context = 
                 new ClassPathXmlApplicationContext("Beans.xml");
          StudentJDBCTemplate studentJDBCTemplate = 
          (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");    
          System.out.println("------Records Creation--------" );
          studentJDBCTemplate.create("Zara", 11);
          studentJDBCTemplate.create("Nuha", 2);
          studentJDBCTemplate.create("Ayan", 15);
          System.out.println("------Listing Multiple Records--------" );
          List<Student> students = studentJDBCTemplate.listStudents();
          for (Student record : students) {
             System.out.print("ID : " + record.getId() );
             System.out.print(", Name : " + record.getName() );
             System.out.println(", Age : " + record.getAge());
          }
          System.out.println("----Updating Record with ID = 2 -----" );
          studentJDBCTemplate.update(2, 20);
          System.out.println("----Listing Record with ID = 2 -----" );
          Student student = studentJDBCTemplate.getStudent(2);
          System.out.print("ID : " + student.getId() );
          System.out.print(", Name : " + student.getName() );
          System.out.println(", Age : " + student.getAge());      
       }
    }
    

    下述是配置文件 Beans.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" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
    
       <!-- Initialization for data source -->
       <bean id="dataSource" 
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
          <property name="username" value="root"/>
          <property name="password" value="password"/>
       </bean>
    
       <!-- Definition for studentJDBCTemplate bean -->
       <bean id="studentJDBCTemplate" 
          class="com.tutorialspoint.StudentJDBCTemplate">
          <property name="dataSource"  ref="dataSource" />    
       </bean>
    
    </beans>
    

    当你完成创建源和 bean 配置文件后,运行应用程序。右键点击MainApp.java–>运行方式–>java应用程序(如下图所示):
    在这里插入图片描述
    如果你的应用程序一切运行顺利的话,将会输出如下所示的消息:

    ------Records Creation--------
    Created Record Name = Zara Age = 11
    Created Record Name = Nuha Age = 2
    Created Record Name = Ayan Age = 15
    ------Listing Multiple Records--------
    ID : 1, Name : Zara, Age : 11
    ID : 2, Name : Nuha, Age : 2
    ID : 3, Name : Ayan, Age : 15
    ----Updating Record with ID = 2 -----
    Updated Record with ID = 2
    ----Listing Record with ID = 2 -----
    ID : 2, Name : Nuha, Age : 20
    

    二、 Spring JDBC+Servlet 返回json数据

    在上面Spring JDBC的基础上加入servlet程序,提供web前端的访问接口(返回json数据)。
    导入以下json依赖包(到WebContent\WEB-INF\lib目录下):

    commons-logging-1.0.4.jar  
    commons-lang-2.3.jar  
    commons-collections-3.2.jar  
    commons-beanutils-1.7.0.jar  
    json-lib-2.2.1-jdk15.jar  
    

    1、在src目录下创建com.yfw包,在该包下创建DatabaseAccess类。
    在这里插入图片描述
    DatabaseAccess类程序如下:

    package com.yfw;
    
    import java.io.PrintWriter;
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.tutorialspoint.Student;
    import com.tutorialspoint.StudentJDBCTemplate;
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    /**
     * Servlet implementation class DatabaseAccess
     */
    @WebServlet("/DatabaseAccess")
    public class DatabaseAccess extends HttpServlet {
        private static final long serialVersionUID = 1L;
        /**
         * @see HttpServlet#HttpServlet()
         */
        public DatabaseAccess() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        	ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
        	StudentJDBCTemplate studentJDBCTemplate =  (StudentJDBCTemplate)context.getBean("studentJDBCTemplate");    
    
            response.setContentType("text/json; charset=utf-8");
             PrintWriter out = response.getWriter();	
        	JSONArray jsonarray = new JSONArray();  
            JSONObject jsonobj = new JSONObject(); 
             List<Student> students = studentJDBCTemplate.listStudents();
             for (Student record : students) {
    
                 jsonobj.put("ID", record.getId());  
                 jsonobj.put("Name",  record.getName());  
                 jsonobj.put("Age", record.getAge());                           
                                      
                 jsonarray.add(jsonobj);             
                
             }
             out = response.getWriter();                  
             out.println(jsonarray);
             
    
           
            }
           
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    }
    
    

    2、用Tomcat启动程序,浏览器访问http://localhost/dbtest/DatabaseAccess,会看到如下界面:
    在这里插入图片描述

    对比数据库内容:
    在这里插入图片描述

    可以看到数据库中的数据,全部被转成了json格式发送给了,并输出到前端显示。

    下载源码

    展开全文
  • 问题:java后端访问另外一个后端的接口后得到一个json字符串,如何提取出这个json字符串中的value 值,第一个value值“ok”忽略,其余的三个value值分别代表 湿度,继电器状态,温度。 {"errno":0,"data":{"count":4...
  • angularJs 从前端到后端 json 串传参

    千次阅读 2018-10-18 14:56:02
    java" pageEncoding="UTF-8"%&gt; &lt;% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":&...
  • KH后端 :globe_showing_Americas: Java后端 리포지토리요약 Java后端测试和测试。 주요기능들 MVC패턴,JSP,Ajax,jSON,GSON,Naver SmartEditor,Commons FileUpload
  • Java后端学习路线

    2021-07-31 17:12:57
    Java后端学习路线?朗沃小刘小编来谈谈java后端学习路线,java一般学习时间在半年一年不等,每个人情况不一样,时间长短也会不一样,像零基础入门到可以找到工作的程度,大约准备五个月到六个月左右的时间;科班出身...
  • Java后端学习路线?最近有些网友问我如何学习 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从...
  • java后端学习计划

    2020-06-08 14:33:01
    java后端开发学习计划 01编程基础 (1)java 基础语法 面向对象 接口 容器 异常 范型 反射 注解 I/O JVM虚拟机 类加载机制 字节码执行机制 JVM内存模型 GC垃圾回收 JVM性能监控与故障定位 JVM调优 多线程/并发 ...
  • 2019java后端面试集合篇最值得收藏的(一)

    万次阅读 多人点赞 2018-10-31 11:06:13
    2019java后端面试集合篇最值得收藏的(一) 2019java后端面试集合篇最值得收藏的(二) 2019java后端面试集合篇最值得收藏的(三) 2019java后端面试集合篇最值得收藏的(四) 目录 介绍下dubbo和zookeeper: 5 dubbo+...
  • Java后端学习流程

    2017-12-29 17:18:38
    Java后端学习流程 2017-12-07 Java团长  Java团长 微信号 javatuanzhang 功能介绍 分享Java学习方法,提供Java免费学习资源! 首先,我个人比较推崇的学习方法是:先学java前端,也就是...
  • java后端学习流程

    千次阅读 多人点赞 2017-06-09 11:37:46
    java后端学习流程  首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!  其中J2SE是...
  • 通过AJAX与Java后端交互,显示数据库的数据前言前端部分(HTML)Java后端部分(Servlet)最后看显示的效果总结 前言 今天学习了AJAX将Mysql数据库的数据显示到前端页面,以前会通过后端将数据集合传递给前端(jsp),...
  • Java后端学习方向

    千次阅读 多人点赞 2020-05-05 21:12:48
    Web后端学习方向 https://18229809790.github.io/ 书籍 主要书籍 《Java从入门到精通》 《大话数据结构》 《数据库系统》 《Java EE互联网轻量级框架整合开发》 《JavaScript入门经典》 《鸟哥的Linux私房菜 :基础...
  • 前台用ajax请求java后台,后台返回一个Map类型的集合,以json格式返回的, ``` Map,List<String>> m=new HashMap,List<String>>() out.print(JSON.parse(JSON.toJSONString(m,true))); ``` ``` ``` 我想...
  • java后端的几种实现方式 最近没事在做一些小题目,遇到需要提供http restful接口,通过接口操作zookeeper实现增删改查。虽然之前看过java后端的内容,但是基本忘的差不多了,这次梳理了一下,都是入门的东西。 首先...
  • 参考自: https://blog.csdn.net/piantoutongyang/article/details/45470473 学习路线 :可以参考慕课网 ...偏头痛杨总结的java后端工程师的主流技术学习路径: 1.java基础阶段 类、对象、变量、接...
  • java后端未来学习之路

    2018-11-10 14:52:06
    首先,我个人比较推崇的学习方法是:先学java前端,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关键,如果学好了java se 部分,...
  • 2019java后端面试看这篇就够了(二)

    千次阅读 多人点赞 2018-10-31 11:13:55
    2019java后端面试集合篇最值得收藏的(一) 2019java后端面试集合篇最值得收藏的(二) 2019java后端面试集合篇最值得收藏的(三) 2019java后端面试集合篇最值得收藏的(四) Junit单元测试: 我在编写完自己的功能...
  • 例如:前端域名test.manager.cn调用后端域名testapi.manager.cn或者本地localhost调用后端域名testapi.manager.cn都会出现跨域的问题。 2.请求传参时,传参错误,也是跨域问题最常见的原因。 3.http请求错写成https...
  • Java后端逻辑总结

    2020-12-11 13:53:47
    2.1 前后端不分离类 如JSP 我们通过引入JSTL的fmt标签格式化展示数据 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <input type="text" placeholder="出生年月" class="fo..
  • java后端技术栈

    千次阅读 多人点赞 2018-07-12 23:10:21
    jsp/servlet cookie/session 框架 spring ioc aop spring mvc mybatis 分页插件 服务器 tomcat nginx java注解 数据 mysql sql优化 事务隔离级别 锁 分库分表 cobar ...
  • java后端开发面试

    千次阅读 2019-04-26 22:38:45
    <p>java程序启动一个新线程时,没有足够的空间为改线程分配java栈,一个线程java栈的大小由-Xss设置决定;JVM则抛出OutOfMemoryError异常。 <p>2.2、堆内存溢出 <p>java堆用于存放对象的实例,当需要为对象的实例...
  • 这次复习 分为四大章 分别是JAVA基础部分内容 WEB网页设计 进阶部分 拓展 java基础部分 java环境的搭建 基础语法 循环结构 数组,函数 面向对象开发 23种设计模式详解 接口 内部类 idea环境搭建 字符串 可变字符串 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,181
精华内容 5,272
关键字:

java后端json格式jsp返回

java 订阅