servlet jsp mysql数据库数据库_MVC+Servlet+mysql+jsp读取数据库信息

首先有以下几个包:

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 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 getAllUser() {

//实例化一个list集合

List list=new ArrayList();

//将要执行的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 getAllUser();//列出全部用户

}

然后编写业务层实现类

public class UserServiceImpl implements UserService {

//取到数据层类

private UserDao userDao;

@Override

public List getAllUser() {

List 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 list=userDao.getAllUser();

if(list!=null) {

System.out.println("数据读取成功!");

}

//把数据存起来

request.setAttribute("users", list);

//重定向到数据展示页

request.getRequestDispatcher("list.jsp").forward(request, response);

}

}

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

pageEncoding="UTF-8"%>

列表
用户编号用户名密码操作
${user.id }${user.username }${user.password }删除|修改

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值