前言:刚开始学习java,这个用户管理模块作为经验积累和知识的巩固。保存在博客也是为了以后可能会查看下,同时或许有人需要的时候可以做为一部分的参考。虽然代码不是写得很好,但至少也有点参考的作用,比如思路和体系层次结构等等。当然,做这个小项目花了不少时间去学习和参考网络资源。这个项目是17年7月初做的,至于现在才也是做为积累,为以后做个铺垫。因为学习期间没有多少时间,所以没有贴到博客。现实点说,作为新手,想到后面出来找工作,自己实力并非很宏厚。不想简历上面空空的,就准备弄个博客,留点东西啦。最起码,面试时候可以说自己有些java经验,也可以作为技术水平评判的一个参考啦。这是第一个项目经验,嘿嘿,废话就不多说了。
首先介绍下模块的层次结构,思路就是这样的:数据库层(就是存储用户数据的数据库表啦)
数据库操作层(Dao,用于连接数据库,实现对数据库表的增删改查操作的)
业务逻辑处理层(BO,通过Dao实现UI层和数据库的对接,处理各种业务逻辑,反馈结果到UI)
用户界面层(UI,实现人机交互的层次,只做输入输出。其实这里就是jsp页面,通过浏览器交互,应该能说是B/S模式吧)
项目概况:
dao包:放数据库操作类UserDao.java;entity包:放实体类User.java;servlet包:放各项功能Servlet;util包:放一些工具类,工具类里有常用的方法。以及dbinfo.properties配置文件以键值对形式存放配置信息,方便后续维护。
数据库设计
users表,因为是练习的,所以这里就简单设计几个字段吧users
列名数据类型备注
user_idintprimary key,unique,
auto_increment
user_namevarchar(50)not null
user_accountvarchar(50)unique,not null
user_passwordvarchar(50)not null
user_displayvarchar(10)用户状态on/off default=on
user_deletetimedate删除时间 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