JavaWeb动态书城项目-mysql-Tomcat-mysql步骤教程
Posted 陕西五花肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb动态书城项目-mysql-Tomcat-mysql步骤教程相关的知识,希望对你有一定的参考价值。
项目结构
web 层 | com.java.web/servlet/controller |
---|---|
service 层 | com.java.service Service 接口包 |
com.java.service.impl Service 接口实现类 | |
dao 持久层 | com.java.dao Dao 接口包 |
com.java.dao.impl Dao 接口实现类 | |
实体 bean 对象 | com.java.pojo/entity/domain/bean JavaBean 类 |
测试包 | com.java.test/junit |
工具类 | com.java.utils |
搭建项目目录:
操作步骤如下:
1.创建书城数据库
CREATE DATABASE book;
USE book;
##创建表t_user
CREATE TABLE t_user(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(32) NOT NULL,
`email` VARCHAR(50)
);
##插入初始数据
INSERT INTO t_user(username,`password`,email) VALUES('admin','admin','admin@java.com');
## 查询表
SELECT * FROM t_user;
2.编写数据库表对应的JavaBean --实体类对象(pojo)
package com.atguigu.pojo;
public class User {
private Integer id;
private String username;
private String password;
private String email;//IEDA快捷键 Alt + Insert 生成构造方法
public User(Integer id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
public User() {
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\\'' +
", password='" + password + '\\'' +
", email='" + email + '\\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
3.编写 工具类JdbcUtils -(Utils)包
3.1首先导入数据库连接包
package com.atguigu.utils;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcUtils {
private static DruidDataSource dataSource;
static {
try {
Properties properties = new Properties();
// 读取 jdbc.properties属性配置文件
InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
// 从流中加载数据
properties.load(inputStream);
// 创建 数据库连接 池
dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接池中的连接
* @return 如果返回null,说明获取连接失败<br/>有值就是获取连接成功
*/
public static Connection getConnection(){
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭连接,放回数据库连接池
* @param conn
*/
public static void close(Connection conn){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3.2在src下添加配置文件jdbc.properties文件 文件内容如下
username=root
password=root
url=jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
3.3 进行测试 查看数据库是否连接成功
idea中没有@Test 需要自己添加测试包
eclipse中有
package com.atguigu.test;
import com.atguigu.utils.JdbcUtils;
import org.junit.Test;
public class JdbcUtilsTest {
@Test
public void tesJdbcUtils(){
System.out.println(JdbcUtils.getConnection());
}
}
4编写baseDao
package com.atguigu.dao.impl;
import com.atguigu.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public abstract class BaseDao {
//使用DbUtils操作数据库
private QueryRunner queryRunner = new QueryRunner();
/**
* update() 方法用来执行:Insert\\Update\\Delete语句
*
* @return 如果返回-1,说明执行失败<br/>返回其他表示影响的行数
*/
public int update(String sql, Object... args) {
Connection connection = JdbcUtils.getConnection();
try {
return queryRunner.update(connection, sql, args);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.close(connection);
}
return -1;
}
/**
* 查询返回一个javaBean的sql语句
*
* @param type 返回的对象类型
* @param sql 执行的sql语句
* @param args sql对应的参数值
* @param <T> 返回的类型的泛型
* @return
*/
public <T> T queryForOne(Class<T> type, String sql, Object... args) {
Connection con = JdbcUtils.getConnection();
try {
return queryRunner.query(con, sql, new BeanHandler<T>(type), args);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.close(con);
}
return null;
}
/**
* 查询返回多个javaBean的sql语句
*
* @param type 返回的对象类型
* @param sql 执行的sql语句
* @param args sql对应的参数值
* @param <T> 返回的类型的泛型
* @return
*/
public <T> List<T> queryForList(Class<T> type, String sql, Object... args) {
Connection con = JdbcUtils.getConnection();
try {
return queryRunner.query(con, sql, new BeanListHandler<T>(type), args);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtils.close(con);
}
return null;
}
/**
* 执行返回一行一列的sql语句
* @param sql 执行的sql语句
* @param args sql对应的参数值
* @return
*/
public Object queryForSingleValue(String sql, Object... args){
Connection conn = JdbcUtils.getConnection();
try {
return queryRunner.query(conn, sql, new ScalarHandler(), args);
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.close(conn);
}
return null;
}
}
5.编写UserDao测试
package com.atguigu.dao;
import com.atguigu.pojo.User;
public interface UserDao {
/**cc
* 根据用户名查询用户信息
* @param username
* @return 如果返回null ,说明没有这个用户,反之则有
*/
public User queryUserByUsername(String username);
/**cc
*根据 用户名和密码查询用户信息
* @param username
* @param password
* @return 如果返回null,说明用户名和密码错误
*/
public User queryUserByUsernameAndPassword(String username ,String password);
/**
* 保存用户信息
* @param user
* @return
*/
public int saveUser(User user);
}
package com.atguigu.test;
import com.atguigu.dao.UserDao;
import com.atguigu.dao.impl.UserDaoImpl;
import com.atguigu.pojo.User;
import org.junit.Test;
import static org.junit.Assert.*;
public class UserDaoTest {
UserDao userDao = new UserDaoImpl();
@Test
public void queryUserByUsername() {
if (userDao.queryUserByUsername("admin1234") == null ){
System.out.println("用户名可用!");
} else {
System.out.println("用户名已存在!");
}
}
@Test
public void queryUserByUsernameAndPassword() {
if ( userDao.queryUserByUsernameAndPassword("admin","admin1234") == null) {
System.out.println("用户名或密码错误,登录失败");
} else {
System.out.println("查询成功");
}
}
@Test
public void saveUser() {
System.out.println( userDao.saveUser(new User(null,"wzg168", "123456", "wzg168@qq.com")) );
}
}
`
6.编写UserService和测试
package com.atguigu.service;
import com.atguigu.pojo.User;
import javax.jws.soap.SOAPBinding;
public interface UserService {
/**cc
* 注册用户 业务
* @param user
*/
public void registUser(User user);
/**cc
*
* @param user
* @return
*/
public User login(User user);
/**cc
*
* @param username
* @return 如果返回true 则表示用户名已存在 false表示用户名可以用
*/
public boolean existUsername(String username);
}
package com.atguigu.test;
import com.atguigu.dao.UserDao;
import com.atguigu.pojo.User;
import com.atguigu.service.UserService;
import com.atguigu.service.impl.UserServiceImpl;
import org.junit.Test;
import static org.junit.Assert.*;
public class UserServiceTest {
UserService userService=new UserServiceImpl();
@Test
public void registUser() {
userService.registUser(new User(null,"xa123456", "xa123456","xa123456@qq.com"));
userService.registUser(new User(null,"js123456","js123456","js123456@qq.com"));
}
@Test
public void login() {
System.out.println( userService.login(new User(null,"js123456","js123456",null)));
//如果返回null ,说明登录失败,返回有值 则说明登陆成功
}
@Test
public void existUsername() {
if(userService.existUsername("js123456")){
System.out.println("用户已存在!");
}else{
System.out.println("用户名可用!");
}
}
}
7.编写web层
根据自己前段web来编写
想要完整代码私信分享
完整代码连接
https://download.csdn.net/download/weixin_45185519/20969696
以上是关于JavaWeb动态书城项目-mysql-Tomcat-mysql步骤教程的主要内容,如果未能解决你的问题,请参考以下文章