首先有以下几个包:

1.controller

控制层,对用户的请求进行响应

2.dao

数据层接口标准

3.daoimpl

数据层实现层

4.model

实体类层

5.service

业务层接口标准

6.serviceimpl

业务实现层

7.util

工具层

-------------------------------------------------------------------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------

首先我们封装JDBC

package Util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; import org.junit.jupiter.api.Test; public class DbUtil {
public static Connection con=null;
public static PreparedStatement stmt=null;
public static ResultSet res=null;
//加载驱动
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("数据库驱动加载成功");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
Properties p=new Properties();
ClassLoader classLoader=Thread.currentThread().getContextClassLoader();
InputStream in=classLoader.getResourceAsStream("db.properties");
String username=null;
String password=null;
String url=null;
try {
p.load(in);
username=p.getProperty("username");
password=p.getProperty("password");
url=p.getProperty("url");
System.out.println("外部文件加载成功");
}catch(IOException e1) {
e1.printStackTrace();
}
try {
if(con==null) { con=DriverManager.getConnection(url, username, password);
System.out.println("数据库链接成功");
}
}catch(SQLException e) {
e.printStackTrace();
}
return con;
}
public static void CloseConnection(Connection con) {
try {
if(res!=null) {
res.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
}

  里面有两个方法一个方法返回con对象供数据层使用,一个方法关闭数据库连接

然后我们编写数据层接口标准

public interface UserDao {
public List<User> getAllUser();//列出全部用户
}

  然后编写数据层

package daoimpl;//数据层接口实现类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import Util.DbUtil;
import dao.UserDao;
import model.User; public class UserDaoImpl implements UserDao{
//JDBC的三个接口
Connection con=null;
PreparedStatement stmt=null;
ResultSet res=null;
//按照数据层开发标准实现接口方法
@Override
//返回一个list集合
public List<User> getAllUser() {
//实例化一个list集合
List<User> list=new ArrayList<User>();
//将要执行的sql语句
String sql="select * from user";
//执行数据库连接
try {
//由数据库工具连接类返回一个数据库连接
con=DbUtil.getConnection();
stmt=con.prepareStatement(sql);
res= stmt.executeQuery();
while(res.next()) {
User u=new User();
u.setId(res.getString("id"));
u.setUsername(res.getString("username"));
u.setPassword(res.getString("password"));
list.add(u);
}
}catch(SQLException e) {
e.printStackTrace();
}
return list;
}
}

  使用工具类包里面返回的数据库连接对象,然后使用预处理的sql,读取到数据库里面的信息,然后把读取到的数据利用实体类的setter和getter方法来存到实体类里然后存在集合里面。

然后编写业务层开发标准

import java.util.List;

import model.User;

public interface UserService {
public List<User> getAllUser();//列出全部用户
}

  然后编写业务层实现类

public class UserServiceImpl implements UserService {
//取到数据层类
private UserDao userDao;
@Override
public List<User> getAllUser() {
List<User> list=userDao.getAllUser();
return list;
} }

 调用数据层接口的getAllUser()方法来获取到集合 

然后编写控制层

package controller;//控制层

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List; import javax.servlet.RequestDispatcher;
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 daoimpl.UserDaoImpl;
import model.User;
@WebServlet("/servlet01")
public class ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
UserDaoImpl userDao=new UserDaoImpl();//访问数据层
public ListServlet() {
super();
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath()); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过数据层得到数据库里的数据并存到集合里
List<User> list=userDao.getAllUser();
if(list!=null) {
System.out.println("数据读取成功!");
}
//把数据存起来
request.setAttribute("users", list);
//重定向到数据展示页
request.getRequestDispatcher("list.jsp").forward(request, response);
}
}

  然后把集合存到request里面,并且重定向到list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>列表</title>
</head>
<body>
<form >
<table border="1" cellpadding="0" cellspacing="0">
<tr style="width:500px;">
<td>用户编号</td>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<c:forEach items="${users}" varStatus="userStatus" var="user">
<tr>
<td>${user.id }</td>
<td>${user.username }</td>
<td>${user.password }</td>
<td><a href="/del">删除</a>|<a href="">修改</a>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>

  使用jsp的jstl标签来循环读取request里的数据

MVC+Servlet+mysql+jsp读取数据库信息的更多相关文章

  1. 通过JDBC连接数据库(MySql为例)并读取数据库信息--JSP基础

    1.先建数据库,数据库名为:employee_DB;然后在数据库employee_DB下建表,表名为employee;最后插入数据. create database employee_DB; use ...

  2. MySQL学习——查看数据库信息

    MySQL学习——查看数据库信息 摘要:本文主要学习了查看数据库信息的方法. 查询指定表的索引 语法 show index from 表名; 示例 mysql> show index from ...

  3. itext poi 学习之旅 (3)读取数据库信息并由excel展现出来

    DBConnection.java 连接数据库操作 package com.zkbj.poi; import java.sql.Connection; import java.sql.DriverMa ...

  4. 读取数据库信息并生成表设计文档Word版本

    1.参考C#代码 using Help.DBAccessLayer.Business; using Help.DBAccessLayer.Model.SqlGenerator; using Newto ...

  5. JSP读取数据库二进制图片并显示

    用JSP从数据库中读取二进制图片并显示在网页上 环境mysql+tomcat: 先在mysql下建立如下的表. 并存储了二进制图像(二进制格式存储图片可以参考我的另一篇博客:https://www.c ...

  6. C#语句从MySQL中简单的读取数据库信息

    protected void Page_Load(object sender, EventArgs e) { //数据库+Json MyJson.JsonNode_Object json = new ...

  7. app开发中读取数据库信息的vue页面

    <template> <!-- 容器 --> <div class="container"> <!-- 标头 --> <div ...

  8. UEditor如何读取数据库信息?

    你用的什么语言,服务器端生成的时候,直接写在里面就可以了啊,比如 <textarea name="content" cols="800" rows=&qu ...

  9. hibernate 结合servlet及 jsp 的使用

    Hibernate结合JSP使用 前面几章详细的介绍了Hibernate的相关知识,这一章介绍Hibernate结合JSP和Servlet的使用,通过这一章的学习,可以加深对Hibernate的理解. ...

随机推荐

  1. kafka删除topic中的数据,适用于比较高的版本

    server.properties中增加选项 delete.topic.enable=true 修改之后重启kafka 进入kafka目录,输入命令 bin/kafka-topics.sh --zoo ...

  2. 在dotnet6发布之际,FastNat内网穿透,给开发人员送的硬货福利

    一.FastNat可为您解决的问题 1.没有公网服务器,但是想发布共享本地的站点或网络程序到公网上,以供他人访问: 此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行. 2.需要远程到在其 ...

  3. Part 35 AngularJS caseInsensitiveMatch and Inline Templates

    In this video we will discuss 2 simple but useful features in Angular caseInsensitiveMatch Inline Te ...

  4. 一个开源的C#和cefsharp项目:逐浪字体大师pc版上线(附源码开源)

    z01逐浪字体大师,是一款基于C#和web引擎开发的字体设计软件,可以打开直接写字,也可以链接官方资源 ,附Github开源库,欢迎大家下载.客户端技术是基于wpf设计的,整个界面精美,与逐浪CMS技 ...

  5. XMLHttpRequest—>Promise

    XMLHttpRequest.open() 初始化 HTTP 请求参数 语法open(method, url, async, username, password) method 参数是用于请求的 H ...

  6. 第十五章---JSON

    目录: (一)介绍 (二)Python 编码为 JSON 类型转换对应表 (三)JSON 解码为 Python 类型转换对应表 (四)实例 正文: (一)介绍 JSON (JavaScript Obj ...

  7. springboot和springcloud版本上的选择

    现在的springboot项目和cloud版本都是更新很快,但我们开发不是版本越新越好,我们要把版本对应起来,那么我们怎么去关联呢? springboot和springcloud不是越新越好,clou ...

  8. 浅谈Java和JavaScript中变量和数据类型的区别

    对于一门编程语言的学习,如果第一步是安装环境,那么第二步一定是学习这门语言的基本规则,变量和数据类型则首当其冲 JavaScipt作为一个蹭Java热度而命名的语言,在很多方面和Java也有一定的相似 ...

  9. vue项目中使用 SheetJS / js-xlsx 导入文件

    原表格样式; 导入效果: 1.  安装 npm install xlsx 2. 在App.vue 中引入xlsx import * as XLSX from 'xlsx'; // 数据导出导入所需要的 ...

  10. AtCoder Beginner Contest 204

    身败名裂了,\(AK\)场转掉分场. 都是水题不说了. 这篇文鸽了.