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 ...
随机推荐
- 数据结构-String、char
String 常用方法: 获取长度:int length = strl.length() 获取第i个字符:char iChar = str.charAt(i) String转成字符数组:char[] ...
- TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免
TCP的拥塞控制 1. 拥塞:即对资源的需求超过了可用的资源.若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降. 拥塞控制:防止过多的数据注入到网络中,这样 ...
- Asp.Net集群中Session共享
今天遇到了这个问题,于是研究了一下.要解决这个问题,首先就要明白一些Session的机理.Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Ses ...
- 14.TCP的坚持定时器和保活定时器
一.坚持定时器 1.坚持定时器的由来 TCP通过让接收方指明希望从发送方接受的窗口大小来进行流量控制.设置窗口大小为0可以组织发送方传送数据,直至窗口变为非0为止. ...
- JAVA中用于处理字符串的“三兄弟”
JAVA中用于处理字符串常用的有三个类:java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder,这三者的共同之处都是final类 ...
- 要重定向 IO 流,Process 对象必须将 UseShellExecute 属性设置为 False。
Process p1= new Process(); p1.StartInfo.UseShellExecute = false;
- Grunt那些事
1.第一步当然是先安装好nodejs里面的npm包管理器咯,若还不知道怎么安装请参考nodejs那些事里面的安装步骤 2.node安装完后,就安装grunt-CLI,如果nodejs直接安装在系统默认 ...
- Swoole:重新定义PHP
Swoole PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异 ...
- 3. 托管对象模型的迁移(Core Data 应用程序实践指南)
本章介绍如何添加模型版本及模型映射,演示几种迁移技术,供在升级模型时使用. 3.1. 修改托管对象模型 3.2. 添加模型版本 3.3. 轻量级迁移方式 3.4. 默认的迁移方式 3.5. 通过迁移管 ...
- MySQL生产库全库备份脚本
创建一个单独的备份用户backup,不要用root 创建备份目录 :mkdir -p /databackup/fullbackup mysql> grant SELECT,RELOAD,SHOW ...