前言刚开始学习java,这个用户管理模块作为经验积累和知识的巩固。保存在博客也是为了以后可能会查看下,同时或许有人需要的时候可以做为一部分的参考。虽然代码不是写得很好,但至少也有点参考的作用,比如思路和体系层次结构等等。当然,做这个小项目花了不少时间去学习和参考网络资源。这个项目是17年7月初做的,至于现在才也是做为积累,为以后做个铺垫。因为学习期间没有多少时间,所以没有贴到博客。现实点说,作为新手,想到后面出来找工作,自己实力并非很宏厚。不想简历上面空空的,就准备弄个博客,留点东西啦。最起码,面试时候可以说自己有些java经验,也可以作为技术水平评判的一个参考啦。这是第一个项目经验,嘿嘿,废话就不多说了。

首先介绍下模块的层次结构,思路就是这样的:

  1. 数据库层(就是存储用户数据的数据库表啦)

  2. 数据库操作层(Dao,用于连接数据库,实现对数据库表的增删改查操作的)

  3. 业务逻辑处理层(BO,通过Dao实现UI层和数据库的对接,处理各种业务逻辑,反馈结果到UI)

  4. 用户界面层(UI,实现人机交互的层次,只做输入输出。其实这里就是jsp页面,通过浏览器交互,应该能说是B/S模式吧)

    

    

    

    

    

    

    

项目概况:

  dao包:放数据库操作类UserDao.java;entity包:放实体类User.java;servlet包:放各项功能Servlet;util包:放一些工具类,工具类里有常用的方法。以及dbinfo.properties配置文件以键值对形式存放配置信息,方便后续维护。

数据库设计

   users表,因为是练习的,所以这里就简单设计几个字段吧

users

列名

数据类型

备注

user_id

int

primary key,unique,

auto_increment

user_name

varchar(50)

not null

user_account

varchar(50)

unique,not null

user_password

varchar(50)

not null

user_display

varchar(10)

用户状态on/off  default=on

user_deletetime

date

删除时间 default=null

用户删除,先设置不显示用户,记录删除时间,以便日后管理已删除状态用户

 

解决sql注入问题

 * sql注入问题:

 * Statement stmt = conn.createStatement();

 * ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE NAME='"+name

 * +"' AND PASSWORD='"+pwd+"'");

 *

 * 输入用户密码时,如果输入:123' OR '1'='1

 * 会演变成下面情况:

 * SELECT * FROM users WHERE NAME='name' AND PASSWORD='123' OR '1'='1';

 *

 * PreparedStatement接口已解决该问题,所以执行SQL语句时使用PreparedStatement即可。

配置文件,这里就简单配置:

driverclass=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/userdb

username=root

password=123456

如果使用高版本的驱动包,目前知道5.14开始,在url那里要先指定是否启用ssl连接,否则报warring。

示例:url=jdbc:mysql://localhost:3306/userdb?useSSL=true