栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2-6 jdbc查询数据库返回 json结果到浏览器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2-6 jdbc查询数据库返回 json结果到浏览器

文章目录
  • 1、业务背景
  • 2、准备 jar 包
  • 3、数据库表添加数据
  • 4、搭建后台
    • 1)编写 User 对象类
    • 2)controller 层
    • 3)service 层
    • 4)dao 层
    • 5)配置 web.xml
  • 5、启动 tomcat 验证测试

上篇文章简单介绍了 SQL 常用增删改查例子,这篇文章,将介绍后台代码基于 servlet 使用 jdbc 最基本的方式查询 mysql 的数据,并返回 json 形式的字符串到前端浏览器。

1、业务背景

现在,我们在浏览器中输入 url ,后台使用 jdbc 的方式查询 mysql 中 用户信息(user_info表)的数据,然后将结果以 json 形式输出到浏览器中。

这里代码粘贴的是最终所有的,看不到开发的过程,读者可关注文章末尾提供的公众号,学习同期文章配套的技能演示视频。

2、准备 jar 包

1)jdbc 操作 mysql 需要 jar 包
百度网盘永久下载链接:

链接:https://pan.baidu.com/s/1Bqy-dAgyxxuX_ckg8f4Nxw 
提取码:3b1g

2)使用阿里的 fastjson
百度网盘链接:

链接:https://pan.baidu.com/s/1TV3mEa2TunOi_HsqicSC6Q 
提取码:23v5

3)添加到 path
下载后,将 jar 包拷贝到项目中 WebContent/WEB-INF/lib 目录下,然后选中 jar 包,右键 build path 将 jar 包引进来,两个都需要:

3、数据库表添加数据

这里我直接用上篇文章中的数据库数据。
关于如何创建表或者插入数据,可参考上篇:
《mysql常用增删改查》
现 mysql 中有 3 条数据:

4、搭建后台

实际开发中后台项目通常有这么 3 层:
①、controller 层(处理前端请求)
②、service 层(专门写一些业务逻辑,由 controller 层调用)
③、dao 层(专门操作数据库的一层,由 srvice 层调用)

1)编写 User 对象类

从表 user_info 查询出来的数据要用对象来接收,所以,我们创建一个拥有表中所有字段的对象类:

package dao;

public class User {
	private int id;
	private String username;
	private String password;
	//为了节约篇幅,这里省略了setters()/getters()方法
}
2)controller 层

注意类上面的 @WebServlet 注解

package controller;

import java.io.IOException;
import java.io.PrintWriter;
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 com.alibaba.fastjson.JSON;

import dao.User;
import service.UserService;
import service.UserServiceImpl;


@WebServlet("/user")
public class UserController extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	private UserService userService = new UserServiceImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		List users = userService.findAll();
		out.write(JSON.toJSONString(users));
	}
}
3)service 层

①、接口定义

package service;

import java.util.List;
import dao.User;

//服务接口类
public interface UserService {
	List findAll();	//查询所有用户
}

②、实现类

package service;

import java.util.List;

import dao.User;
import dao.UserDao;


public class UserServiceImpl implements UserService {

	private UserDao userDao = new UserDao();
	
	@Override
	public List findAll() {
		return userDao.findAll();
	}
}
4)dao 层
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class UserDao {
	//3306是 mysql 常用端口,learn 是我要连接的数据库名称
	private static final String URL = "jdbc:mysql://localhost:3306/learn?serverTimezone=Asia/Shanghai&useTimezone=true";
	//数据库用户名
	private static final String USERNAME = "root";
	//数据库密码
	private static final String PASSWORD = "123456";
	

	public List findAll() {
		List users = new ArrayList<>();
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet resultSet = null;
		try {
			//1、加载驱动 ,老版本是com.mysql.jdbc.Driver
			Class.forName("com.mysql.cj.jdbc.Driver");
			//2、获取连接
			con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
			//3、预编译 sql
			String sql = "select * from user_info;";
			pstmt = con.prepareStatement(sql);
			//4、执行sql,获取结果集
			resultSet = pstmt.executeQuery();
			while(resultSet.next()) {
				User user = new User();
				//这里的序号1,2,3对应数据库中的id,username,password
				user.setId(resultSet.getInt(1));
				user.setUsername(resultSet.getString(2));
				user.setPassword(resultSet.getString(3));
				users.add(user);
			}
			
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			try {
				resultSet.close();
				pstmt.close();
				con.close();
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
		return users;
	}
}
5)配置 web.xml

我们需要在 web.xml 配置 servlet 标签,以配置访问的 url 和指定我们的 UserContoller 类,但这里我使用了注解的形式,一个注解就搞定了,注解比 xml 的优点就是简洁。
注意:UserController 类中的 @WebServlet(“/user”),将这个注解配置在此类的同时,已经产生了映射关系,里面的参数就是要访问的 url 后缀

5、启动 tomcat 验证测试

把项目部署到 tomat 并启动后,浏览器输入地址:

http://localhost:8080/helloweb/user

浏览器输出内容效果图如下:

下篇文章,我们将演示如何从前台,访问后台,获取数据后并展示到前端列表。

欢迎读者搜索并添加 “taishangcode” 公众号同步学习同期技能演示视频。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号