Java Web(九) 用户管理系统
前面学习了一大堆,什么JSP,Servlet、jstl、el等等等,大多是一些死的东西,只要会其语法,知道怎么用就行了,所以做了一个小小的只有增删改查的小demo,为的就是熟悉这些知识。灵活运用起来。最主要是的开发思想,技术就那么一些,拿到demo需求后,我们该如何下手去做,怎么想,怎么开发的呢?我把我自己写该demo时的思路记录下来。
--WH
一、需求分析
讲过一点,这个非常的简单,就增删改查的运用,
注册、登录、查询所有用户、查询详情、修改、删除
有两个权限,
一个权限是管理员权限,登录进系统后,就能看到所有用户的信息并且能够对所有用户的信息加以修改,删除等操作。
另一个是普通用户权限,登录进系统,只能看到自己的相关信息,并且可以修改自己的信息(密码等)
主页面模块
首先进入的就是主页面模块,会进行判断,看用户是否登录(查看cookie中是否有用户的帐号和密码的信息存在,如果有,则直接用该帐号密码进行登录,如果没有则什么都数据都不显示)
管理员登录进去后看到所有用户信息,能够对其任意用户点击进行详细信息的查看,并且能够修改,删除用户,并且能够有注册功能
普通用户登录进主页面,只能查看自己的相关信息。能进行修改信息操作。但是没有注册和删除用户的功能。
登录模块,
登录会对其进行判断是否是管理员还是普通用户,并且有记住密码的功能,点击了记住密码,那么在下次访问主页面时,就已经登录过了,使用cookie记住帐号密码的功能。
编写帐号密码时会进行校验(校验帐号密码格式是否合格,这个没做了,有兴趣可以去做做)
登录模块做的事情很简单,判断帐号密码是否正确,如果正确,那么将跳转到主页面,并将用户信息保存到session中,判断是否记住了密码,如果记住了密码,那么就应该将帐号密码保存到cookie中。判断是否是管理员还是用户。
注册模块
这个只有管理员才有权限做这个事情,注册模块,很简单,就是增加用户的操作,只是在注册填写信息的时候,需要做数据校验,限制用户输入一些非法数据,我没做,有闲情的人可以去做做。
二、技术分析
三层架构思想
JSP(jstl、el)
Servlet(request、response、session/cookie)
javabean
JDBC
MySql
三、编写思路
1、先将所有的包结构写出来,大体看起来就是三层架构思想。需要导的mysql的jar包也导入进去

2、从dao开始编写,
成功连接mysql数据库
将常用的增删改查方法写出来并测试成功
3、编写service层
由于此demo太过简单,没有什么业务逻辑,所以这service层,其实也就是调用一下dao层的增删改查方法。
4、编写web层,一个模块一个模块编写
主页模块
用户没登陆,显示如图所示。左上角会显示请登录和主页两个超链接,主页是回到主页面,请登录就是跳到登录页面

普通用户登录后,主页显示如图所示,自己本身的信息会用红色字体标识,并且权限只能是查看自己的详细信息和修改一些信息。左上角,会显示自己的名字,还有注销的功能,注销就是将该用户下线,使用别的帐号进行登录的操作,
管理员登录后,主页显示如图所示,管理员能看到所有用户的信息,并且能对他们进行修改,删除操作,而对自己并没有删除操作。而且,管理员会有注册用户的功能。 
注册模块
这个很简单,但是缺陷就是没有数据校验的功能,只能填写正确的信息,比如不填写某项信息,也不出现什么提示信息。这个非常不好。并且后台会报异常。
登录模块
这个其实就一个技术,记住密码这里,使用了cookie技术。将帐号密码保存到了cookie上。登录之后就跳转到了主页面显示信息了。
查询模块
这个就做一个查询用户的详细信息,如果可以的话,自己可以进行扩展,比如通过用户名将该用户名的信息查询出来。使用模糊查询,等等都可以,这里就是最简单的。

修改

删除就直接删除掉了。。

四、总结
这个小的用户管理,花了我一天的时间,完全自己独立写的,其实如果熟悉业务流程,根本花不了那么长的时间,估计只需要2个小时不到就可以写出来了,虽然只有增删改查几个功能,但是对于新手来说,通过这个来让自己更加熟练的掌握学习到知识还是不错的,用到了很多基础的东西。比如前端显示页面中,标签、el的使用,并且将数据放到session域中,通过el表达式去拿到我们想要的数据,比如在后台,使用cookie保存帐号和密码,比如,请求转发和重定向的使用,比如request域传值,比如,request获取请求参数,比如,前端页面的一些css的使用,比如连接数据库的操作,对数据库进行增删改查的操作,原生的,最古老的写法。真的是非常累,全是重复性代码,但是会知道prepareStatement和Statement的区别是什么,为什么使用prepareStatement而不是Statement呢。最重要的收获是,大大小小的流程让我非常乱,在写主页面时,因为有几个页面都会跳转到主页面来,比如登录页面,登陆完就会跳到主页面来,比如我们直接访问,也会到主页面来,那么这两个就不同了,直接访问到主页面,就要进行cookie中是否用信息的判断,而登录完到主页面,要判断帐号密码是否正确,是不是管理员,该显示多少数据,等等一大堆,我全写在一个LoginServlet中了,导致其中的代码量非常庞大,估计也就只有我能看得懂,哈哈~但是功能流程大概是完成了。能跑起来,达到了预期的效果,唯一不足的就是太乱了,对于流程还不是很清楚,到后面我相信会越来越熟练,写一个登录模块,应该需要哪些功能,进行哪些判断,这些都应该是熟能生巧的事。好好加油把。
项目的源码放在下面
http://pan.baidu.com/s/1kVNp4zX 密码: 3ocx
Java Web(九) 用户管理系统的更多相关文章
- java web 项目 图书管理系统的设计与实现
java web 项目 图书管理系统的设计与实现
- Java Web实现用户登录界面
一.学习Java Web需要的技术: Java语言基础:算法基础.常用数据结构.编程规范. 掌握常见的数据结构和实用算法:培养良好的编程习惯. Java面向对象:封装.继承.多态等,面向对象程序设计, ...
- Java Web实现用户登录功能
java web 学习记录一下 mvc结构实现mysql 连接 什么是mvc MVC是模型(model).视图(view).控制(controller)这三个单词上的首字母组成.它是一种应用模型,它的 ...
- 初学Java Web(9)——学生管理系统(简易版)总结
项目开始时间:2018年4月8日14:37:47 项目完成时间:2018年4月9日10:03:30 技术准备 这个项目是自己用于巩固 J2EE 相关知识的练手项目,非常简单,但是相关的功能却非常实用, ...
- java web应用用户上传图片的存储地址
原来工程的上传图片存储地址在web应用的目录下,并且是硬编码到其中的: 每次使用maven tomcat:redeploy以后,这个目录就没有了. 现在想要把上传图片的位置移动到tomcat的weba ...
- Java Web(九) JDBC及数据库连接池及DBCP,c3p0,dbutils的使用
DBCP.C3P0.DBUtils的jar包和配置文件(百度云盘):点我下载 JDBC JDBC(Java 数据库连接,Java Database Connectify)是标准的Java访问数据库的A ...
- 基于JAVA WEB的医药管理系统
学习上可以模仿,但是不可以抄袭! 附加百度链接:http://wenku.baidu.com/link?url=_r44vGCi8pcm6o44YCvkcHGoT_XhB8jURnweao2YVo1j ...
- java web 之客户关系管理系统
这个周末真的是觉得自己学会了一个比较高大上的本领,为什么这么觉得呢?那是因为星期六的时候觉得自己可以看看源码能做出来,可是让我头疼的是花费了一上午的时间还是没有弄出来,还好上天给了我机会,要是没有老师 ...
- 关于java web开发需要哪些技术要求(简单的web界面管理系统)
目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Ja ...
随机推荐
- mysql,mybatis使用中遇到的类型转化的问题
产生原因还没有明白,先记录一下. 使用DATEDIFF函数,计算两个日期的时间差.在mybatis中,resultType 是map.在代码中,根据map的key取值的时候. 在mysql 5.5.3 ...
- UVa 10041 - Vito's Family
题目大意:给出一些点,找到一个位置使这个位置到所有的点的距离的和最短. 很明显,排序,找中位数.关于中位数:有n个从小到大的数,k=(n+1)/2,若n为奇数,k为中位数,若n为偶数,k为中间那两个数 ...
- Linux环境下的GCC编译器与GDB调试工具介绍
假如现在我们有如下代码需要编译运行和调试.文件名为:test.c #include <stdio.h> int main() { int day, month, year, sum, le ...
- PHP新手之学习数组声明
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合称为数组.下面介绍PHP中的数组声明. 一.数组的概述 1.数组的本质:管理 ...
- layer弹窗插件实战用法小结1—— layer.alert()
http://layer.layui.com 第一节:layer.alert()弹窗的用法 1.解压layer-v2.2.zip压缩包 2.拷贝layer文件夹到实战项目目录 3.注意:layer.j ...
- mark笔记
1.[cocos2dx]ccnode跟ccui节点混用时注意touch层级问题,基本不可控
- 字符集 ISO-8859-1(2)
HTML 支持的数学符号 结果 描述 实体名称 实体编号 ∀ for all ∀ ∀ ∂ part ∂ ∂ ∃ exists &exists; ∃ ∅ empty ∅ ∅ ∇ nabla ∇ ...
- thinkphp 3.2 导入第三方类库的两种方式
第一种
- Eclipse 使用说明
2. 使用技巧 2.1. Eclipse 打开文件所在文件夹 2.2. Mac 安装Eclipse 2.3. Eclipse 安装插件 2.4. Eclipse 工具栏不见了 2.5. Eclipse ...
- Java学习之旅基础知识篇:数据类型及流程控制
经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...