0%

Java Web项目实战(二)

Java bean

一开始根本不理解Java bean是个什么鬼,在网上查了一圈发现其实就是个Java类,只不过规范化了,具有一些特点。

  • 所有属性为private
  • 提供默认构造方法
  • 提供getter和setter
  • 实现serializable接口

大概就是为了便于封装重用。在涉及与数据库的操作的时候用Java bean会方便一些(大概是吧

在该项目里,Java bean就用来作为储存用户信息的一个类,在工程src文件夹里新建一个bean包,包里新建User.java

private String id;    //主键,采用UUID
private String username;  //用户名
private String password;  //密码
private String headerPic; //头像

之后可以使用快捷键alt+s,选择generate getters and setters,eclipse就自动帮你写好get方法和set方法啦,这个Java bean就大概完成了。

建立数据库和相应的table

  • create database article;
  • use article;

  • create table t_user(
    id varchar(30) NOT NULL,
    username VARCHAR(20) DEFAULT NULL,
    password VARCHAR(20) DEFAULT NULL,
    hearderPic VARCHAR(60) DEFAULT NULL,
    PRIMARY KEY (id)
    ) DEFAULT CHARSET=utf8;

jdbc.properties

在src所在的目录上新建一个config源文件夹(注意,是源文件夹,不是普通的文件夹,所有的源文件夹不会真的产生一个文件夹,它里面的文件默认在 CLASSPATH 根目录下),再创建一个jdbc.properties文件(便于更改配置信息)
内容:

db.username=root
db.password=mysqladmin
db.dataBaseName=article

读取properties文件

写一个test类来试试能不能读取到properties文件
新建test包,包里新建TestProperties.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class TestProperties {
public static void main(String[] args) {
InputStream inputStream = TestProperties.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties p = new Properties();
try {
p.load(inputStream);
System.out.println(p);
} catch (IOException e) {
e.printStackTrace();
}
}
}

将properties文件变成输入流读取
输出理论上讲应该是数据库名,root(用户名),你的MySQL密码
不过在这一步突然出现了一个谜之“无法加载主类”,testproperties没办法编译运行,好尴尬,先不管他

嗯,经过漫长而又操蛋的排查,发现是之前引入jQuery那个jar包时除了点问题,包没有正确地添加到工程里,右键project – build path – configure build path – libraries – 选中有问题的那个jar包 – remove – 解决,对此我只想说,FxxK

事实证明,不需要那个包也可以正确运行,因为直接读取的网上的jQuery资源

好了言归正传

DataBaseUtils 数据库工具类

此处注意记得先引入MySQL的jar包(比如:mysql-connector-java-x.x.x-bin.jar)不然连不上数据库,报ClassNotFound的异常,之前一时疏忽忘了,被坑了好久。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DataBaseUtils {
private static String username; //用户名
private static String password; //密码
private static String dataBaseName; //数据库名

static {
config("jdbc.properties");
}
/**
* 配置数据库的基本信息
* @return void
*/
public static void config(String path){
InputStream inputStream = DataBaseUtils.class.getClassLoader().getResourceAsStream(path);
Properties p = new Properties();
try {
p.load(inputStream);
username = p.getProperty("db.username");
password = p.getProperty("db.password");
dataBaseName = p.getProperty("db.dataBaseName");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取数据库链接
* @return
*/
public static Connection getConnection(){
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3333/"+dataBaseName+"?useUnicode=true&characterEncoding=utf8",username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}

写一个测试类

1
2
3
4
5
6
7
8
9
10
package test;
import java.sql.Connection;
import util.DataBaseUtils;
public class TestDataBaseUtils {
public static void main(String[] args) {
DataBaseUtils.config("jdbc.properties");
Connection conn = DataBaseUtils.getConnection();
System.out.println(conn);
}
}

出来结果是:com.mysql.jdbc.Connection@3afa6240,即连接成功