博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC+Servlet+mysql+jsp读取数据库信息
阅读量:5071 次
发布时间:2019-06-12

本文共 5398 字,大约阅读时间需要 17 分钟。

首先有以下几个包:

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

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
列表
用户编号 用户名 密码 操作
${user.id } ${user.username } ${user.password } 删除|修改

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

转载于:https://www.cnblogs.com/cainame/p/10314878.html

你可能感兴趣的文章
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>