• 一、准备数据库
  • 二、实现步骤
  • 三、测试效果
  • 代码下载

一、数据库

数据库:web
表:user

字段

类型

id

int

username

varchar

password

varchar

java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表

java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_02

二、新建项目

MVC分层架构
模型(model)-视图(view)-控制器(controller)
src 放后端代码,webcontent放前端代码,lib放第三方jar包



java一张表多个页面显示 一般java项目多少张表_java_03

java一张表多个页面显示 一般java项目多少张表_数据库_04

关键代码说明

Index.jsp



java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_05

LogServlet.java



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_06

servlet起名规则一般是功能+Servlet,单词首字母大写。



java一张表多个页面显示 一般java项目多少张表_java_07

这个@WebServlet()里的是这个servlet的访问路径名。



java一张表多个页面显示 一般java项目多少张表_bc_08

java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_09

@WebServlet() 对应form里的action的值。



java一张表多个页面显示 一般java项目多少张表_数据库_10

java一张表多个页面显示 一般java项目多少张表_数据库_11

servlet里有两个方法,一个是doGet,一个是doPost,对应form里的method。
doGet和doPost有两个参数,request是用户请求,response是服务器响应。



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_12

java一张表多个页面显示 一般java项目多少张表_java_13

表单提交获取值servlet从request里获取,调用request的getParameter()方法。这个request.getParameter()里的参数对应input的name属性。这俩是对应的。



java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_14

java一张表多个页面显示 一般java项目多少张表_bc_15

到这里,servlet就可以获取前端传递的值了。

下一步建实体类bean。

User.java



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_16

java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_02

bean类名一般和表名对应,属性和字段名对应,属性要private修饰,通过public的get和set方法取值赋值,bean体现了java三大特性之一的封装。



java一张表多个页面显示 一般java项目多少张表_bc_18

java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_19

这是生成get、set方法的步骤,eclipse可以帮我们自动生成。

DBUtil.java

util是工具类,比如连接数据库,处理中文乱码,格式化时间日期,调用api等等,DBUtil是比较常用的,一般写好一次,以后直接复制使用,注意修改数据库地址,用户名密码。java连接mysql需要一个jar包,放到lib目录下。DBUtil里一般写个测试方法,先试试能不能连,以免后面写一堆,找不出错来。

package util;

import java.sql.*;

public class DBUtil {
    // 本地数据库地址
    private static final String URL = "jdbc:mysql://localhost:3306/web?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=GMT"; 
    // 本地数据库用户名
    private static final String USERNAME = "root"; 
    // 本地数据库密码
    private static final String PASSWORD = "root"; 
     // 数据库驱动
    private static final String jdbcName = "com.mysql.cj.jdbc.Driver";

    /**
    * 获取数据库连接
    */
    public static Connection getConnection() throws Exception {
        Class.forName(jdbcName);
        Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        return connection;
    }

    /* 测试方法 */
    public static void main(String[] args) throws Exception {
        Connection connection = DBUtil.getConnection();
        if (connection != null) {
            System.out.println("连接成功");
        } else {
            System.out.println("连接失败");
        }
        connection.close();
    }
}



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_20

LogDao

接下来完善Dao层。DAO(Data Access Object) 数据访问对象。dao层里面一般就写增删改查的方法,不干别的。比如现在登录,需要一个查的方法通过用户名查用户信息。



java一张表多个页面显示 一般java项目多少张表_bc_21

下一步写sql语句,要先确保sql语句是可以用的。

select * from user where username = ?



java一张表多个页面显示 一般java项目多少张表_bc_22

java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_23

java一张表多个页面显示 一般java项目多少张表_数据库_24

然后写到java里,需要注意的是参数是问号。



java一张表多个页面显示 一般java项目多少张表_java_25

这个方法的返回值是User对象,所以先实例化一个。



java一张表多个页面显示 一般java项目多少张表_java_26

下一步获取数据库连接。有了数据库工具类,就不用每次都写那么多连数据库的了



java一张表多个页面显示 一般java项目多少张表_java_27

获取数据库连接,报错一般放到横线上就会告诉你怎么改。这说调用这个方法需要抛出异常,点第一个就行。



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_28

下一步是执行sql语句,这里叫预编译处理,优点是传值方便,防止XSS注入。



java一张表多个页面显示 一般java项目多少张表_java_29

java一张表多个页面显示 一般java项目多少张表_bc_30

ResultSet这个类是获取查询结果的,实例化一个结果集对象。这个结果集有个游标,每从里面取一条记录,就往后走一个。



java一张表多个页面显示 一般java项目多少张表_bc_31

java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_32

Resultset有个方法叫next(),调用next方法之后游标就往后走,发现有一条数据,就返回了true。



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_33

然后从rs里获取值,rs.getInt是获取数字类型的数据,括号里的参数是字段名,按照如图所示对应。



java一张表多个页面显示 一般java项目多少张表_java_34

最重要的一步,数据库连接用完后一定要关闭,调用close方法!!!



java一张表多个页面显示 一般java项目多少张表_java_35

到这dao层的一个查询方法就写好了。

LogServlet.java

接下来完善servlet



java一张表多个页面显示 一般java项目多少张表_bc_36

实例化一个Dao层对象。使用try catch捕获异常。



java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_37

在User类中重写toString方法,用来输出对象的值。



java一张表多个页面显示 一般java项目多少张表_javaweb不同用户需要几张表_38

三、测试效果



java一张表多个页面显示 一般java项目多少张表_java一张表多个页面显示_39

java一张表多个页面显示 一般java项目多少张表_数据库_40