- 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 包引进来,两个都需要:
这里我直接用上篇文章中的数据库数据。
关于如何创建表或者插入数据,可参考上篇:
《mysql常用增删改查》
现 mysql 中有 3 条数据:
实际开发中后台项目通常有这么 3 层:
①、controller 层(处理前端请求)
②、service 层(专门写一些业务逻辑,由 controller 层调用)
③、dao 层(专门操作数据库的一层,由 srvice 层调用)
从表 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 后缀
把项目部署到 tomat 并启动后,浏览器输入地址:
http://localhost:8080/helloweb/user
浏览器输出内容效果图如下:
下篇文章,我们将演示如何从前台,访问后台,获取数据后并展示到前端列表。
欢迎读者搜索并添加 “taishangcode” 公众号同步学习同期技能演示视频。



