在线用户和访问记录管理项目(需求部分)
2017-04-24 13:53
162 查看
涉及到的技术有:j2se,html,css,js,jq,ajax,jsp,serlvet,listener,mysql等技术
开始项目之前需要准备好的东西:
Visitor数据库
1.用户表(users)
序号(id),用户名(username),密码(pwd)
2.到访用户表(visitors)
序号(id),用户ID(userid),到访时间(visittime),离开时间(lefttime),IP地址(ip),来自的页面(comefrom)
3.访问记录表(history)
序号(ID),到访ID(visitid),访问时间(visittime),访问页面(url)
下面介绍需求:
在线用户网站监控开发项目实战开发01
下载好mysql驱动程序以及jquery的库文件
1.新建一个web项目Test4
2.将mysql的驱动程序放在Test4项目的web-inf的lib项目(因为我要使用数据库)
3.使用dw新建一个站点,目录就是Test4的webContent的根目录,在其根目录下新建一个jilib的文件夹,用来存放jquery的库文件
4.新建一个server配置,准备在这个server配置中来配置数据源
新建server配置在:windows->Preferrences->server->add->添加server即可(选择自己电脑带有的服务器版本),配置数据源就是在servers中的contex.xml中把以前经常用的连接数据库的代码写进去,类似于这样
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name = "mytest" //取得名字,名字可以随便取,但是在在DbLib中连接数据库的时候连接池的名字要与其相同
type = "javax.sql.DataSource"
maxActive = "100"
maxIdle = "30"
maxWait = "5000"
username = "root"
password = "621366"
driveClassName = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://127.0.0.1:3306"
/>
</Context>
5.建立一个类为DbLib,用来返回一个已经设置好的数据连接
新建一个getConnection的函数用来返回一个一级设置好的数据连接
在线用户网站监控开发项目实战开发02
/*1.创建数据库*/
drop database if exists Visitor;
create database Visitor;
/*2.创建表 users*/
use Visitor;
create table users
(
`ID` int(4) not null auto_increment,
`UserName` varchar(100),
`Pwd` varchar(50),
primary key(ID)
);
/*3.创建编vistor*/
create table visitors
(
`ID` int(4) not null auto_increment,
`UserID` int(4),
`VisitTime` datetime,
`leftTime` datetime,
`ip` varchar(50),
`comefrom` varchar(100),
primary key(ID)
);
create table history
(
`ID` int(4) not null auto_increment,
`VisitID` int(4),
`VisitTime` datetime,
`Url` varchar(200),
primary key(ID)
);
/*4.为users表添加3个初始用户*/
insert into users(username,pwd) values("张三","12345678");
insert into users(username,pwd) values("李四","87654321");
insert into users(username,pwd) values("王五","abcdefg");
注意:DATETIME 类型可用于需要同时包含日期和时间信息的值,DATE类型
可用于需要一个日期值而不需要时间部分时.
timestamp:意思为系统自动的更新
f99b
时间戳!
在线用户网站监控开发项目实战开发03
这次我们要做的是:
1 创建一个初始化数据库的类(InitDB),这个类中有一个初始化数据的方法即为initialize()的这个方法,这个方法会调用到之前的DbLib这个类中的getConnection()的这个方法,是来实现数据库的链接的,而类(InitDB)中的这个initialize()方法也是用来接受脚本文件init.sql来作为参数的,因为脚本文件init.sql有初始化数据库的代码!
脚本文件即为(scriptFile),在这个项目中是init.sql,到时候再servlet中把init.sql传过去即可!
2.
因为一个类中的一个方法不可能直接在页面上来调用,所以我们需要创建一个jsp或者servlet来调用数据库初始化类中的方法,在本项目中,做一个serlvet来调用。servlet和jsp最大的区别,就是servlet是没有用户界面的!
3.编写一个页面(InitIt.jsp),来调用servlet(InitIt.java)
总体的思路:在InitDB里面创建一个initialize(),用来初始化数据库,然后新建一个servlet和jsp,servlet调用InitDB中的initialize()方法,然后新建的这个jsp通过dopost的方法与servlet取得联系,通过回调函数将打印信息放到info这个id上,然后用html()的方法显示出来即可!
在这里注意:设置编码格式的时候我们打印信息就用response来设置编码格式,如果是提取信息的haunted,那就用request来提取信息!
在线用户网站监控开发项目实战开发04
这次我们要做的是:
显示在线用户的信息和访客
在线用户的信息从application(SerlvetContext)中来提取
在这个项目中即为:application.getAttribute("online");
访客的信息:包含了在线用户和不在线用户.
做一个页面online.jsp来显示在线用户
做一个页面visitor.jsp来显示历史访客
在线用户网站监控开发项目实战开发05
我们这次的主要目的是来实现online.jsp和visitor.jsp的功能
注意:url 离开时间没有的话,那么就设置为空的,不要显示null
记录用户在网站上的访问轨迹
访问记录表(history)
做一个history.java的javaBean和historyDAO 和之前的visitor.java visitorDAO 是差不多的
序号(ID) 到访ID(visitID) 访问时间(visitime) 访问的页面(url)
下面讲解一下三大监听器:
ServletRequestListener 监听访问网页的情况(什么时候开始请求一个网页,什么时候请求结束,中间的时间间隔是服务器处理请求的时间)
HttpSessionListener 监听访客什么时候来,什么时候走
ServletContextListener 监听服务器什么时候启动,什么时候停止
在线用户网站监控开发项目实战开发06
记录用户在网站上的访问轨迹
访问记录表(history)
做一个history.java的javaBean和historyDAO 和之前的visitor.java visitorDAO 是差不多的
序号(ID) 到访ID(visitID) 访问时间(visitime) 访问的页面(url)
下面讲解一下三大监听器:
ServletRequestListener 监听访问网页的情况(什么时候开始请求一个网页,什么时候请求结束,中间的时间间隔是服务器处理请求的时间)
HttpSessionListener 监听访客什么时候来,什么时候走
ServletContextListener 监听服务器什么时候启动,什么时候停止
在线用户网站监控开发项目实战开发07
接下来我们要做用户的登陆功能:
1.建立一个User的JavaBean,建一个UserDAO,提供验证用户名密码的方法
2.建一个login.jsp页面,提供用户输入用户名的密码,在main.jsp页面上添加用户登陆按钮,链接到login.jsp页面
3.点击登陆,调用一个servlet,serlvet判断用户名和密码是否正确
如果不正确,返回login.jsp页面,让用户继续登录
如果正确,需要修改在线用户和历史访客表,把已登录的用户的信息记录进去
注意事项:
1.启动时报空指针错误,停止服务器,重启就好了!
2.时间显示保存或显示不对的问题,需要用到timestamp相关的函数
3.将session过期的时间设置成10秒钟,切记不要操作页面,等待过期时间
4.还有一种报空指针错误,那就是服务器启动的时候没有生成request就调用了request,那么我们不用request,用arg0去获取相应的对象就可以了
5.(重点)读取数据库卡死的问题(也就是点击按钮点几下就会出现缓冲的现象,而且加载不出来)
这是因为链接自动回收的时间太长,需要手动关闭链接
我们这么来做:
if(conn.isClosed())
{
conn = DbLib.getConnection();
}
在一个方法return 之前再写上conn.close();即可
在线用户网站监控开发项目实战开发08
这次我们要处理的是登录的serlvet
在此之前引入一个非常重要的东西:
引用:理解成地址信息,可以对程序进行优化
例如:map的一个属性变换了的话,那么不需要重新再把改变的Map写入user(例子)中,因为其实已经改变了,这样就可以来优化代码!
这个引用发常重要,可以优化代码!
下面就来处理登录的serlvet:
步骤:
1.从jsp接受用户名和密码
2.调用UserDAO中的isUserValid方法,判断用户的合法性
3.如果用户名密码不正确,转向login.jsp
4.如果用户名和密码正确
(***)先不处理重复登录的问题,后面再来修改
a.修改在线用户表中的当前用户,将当前用户的userid写入;
b.修改历史访客表中的当前用户,将当前用户的userid写入
5.在这里特别需要注意到的是:
if (v.getLeftTime() == null) {
ps.setTimestamp(1, null);
} else {
ps.setTimestamp(1, new Timestamp(v.getLeftTime().getTime()));
}
要判断是否离开时间为空,不判断的话,那么直接用v.getLeftTime.getTime()就会报错!
在线用户网站监控开发项目实战开发09
1.处理用户的重复登录现象:
我们通过判断用户的用户名来得到是否为重复登录
细节方面:我们通过用的用户名去得到用户的id,然后通过即将输入的用户的id和当前的用户去比较,看是否相同
这里面的处理需要一个:Serlvet
2.实现用户访问记录分页处理
分页的实现方式和数据库有关
sql语句:
在mysql用limit(我们采用的就是这种,mysql隶属于oralce公司)
在sql server用top(微软开发的)
在oralce用rownum
下面讲解一些limit在mysql中语法:
select *from mytable limit 0,10;///从0开始提取10条数据
select *from mytable limit 10,10;//从10开始提取10条数据
eg:sql = "select *from history limit "+(pageNo-1)*pageSize+","+pageSize;
分页工作内容分两部分:
1.分页导航的显示
2.根据当前页码提取数据
在这里:我们也需要用到一个serlvet来处理上一页和下一页的逻辑运算
注意到:访问记录每运行一次就会访问一次,所以总的页数会随之增加
好了这些就是我做项目的笔记!下面的一篇博客将提供每一块的具体代码!
开始项目之前需要准备好的东西:
Visitor数据库
1.用户表(users)
序号(id),用户名(username),密码(pwd)
2.到访用户表(visitors)
序号(id),用户ID(userid),到访时间(visittime),离开时间(lefttime),IP地址(ip),来自的页面(comefrom)
3.访问记录表(history)
序号(ID),到访ID(visitid),访问时间(visittime),访问页面(url)
下面介绍需求:
在线用户网站监控开发项目实战开发01
下载好mysql驱动程序以及jquery的库文件
1.新建一个web项目Test4
2.将mysql的驱动程序放在Test4项目的web-inf的lib项目(因为我要使用数据库)
3.使用dw新建一个站点,目录就是Test4的webContent的根目录,在其根目录下新建一个jilib的文件夹,用来存放jquery的库文件
4.新建一个server配置,准备在这个server配置中来配置数据源
新建server配置在:windows->Preferrences->server->add->添加server即可(选择自己电脑带有的服务器版本),配置数据源就是在servers中的contex.xml中把以前经常用的连接数据库的代码写进去,类似于这样
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name = "mytest" //取得名字,名字可以随便取,但是在在DbLib中连接数据库的时候连接池的名字要与其相同
type = "javax.sql.DataSource"
maxActive = "100"
maxIdle = "30"
maxWait = "5000"
username = "root"
password = "621366"
driveClassName = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://127.0.0.1:3306"
/>
</Context>
5.建立一个类为DbLib,用来返回一个已经设置好的数据连接
新建一个getConnection的函数用来返回一个一级设置好的数据连接
在线用户网站监控开发项目实战开发02
/*1.创建数据库*/
drop database if exists Visitor;
create database Visitor;
/*2.创建表 users*/
use Visitor;
create table users
(
`ID` int(4) not null auto_increment,
`UserName` varchar(100),
`Pwd` varchar(50),
primary key(ID)
);
/*3.创建编vistor*/
create table visitors
(
`ID` int(4) not null auto_increment,
`UserID` int(4),
`VisitTime` datetime,
`leftTime` datetime,
`ip` varchar(50),
`comefrom` varchar(100),
primary key(ID)
);
create table history
(
`ID` int(4) not null auto_increment,
`VisitID` int(4),
`VisitTime` datetime,
`Url` varchar(200),
primary key(ID)
);
/*4.为users表添加3个初始用户*/
insert into users(username,pwd) values("张三","12345678");
insert into users(username,pwd) values("李四","87654321");
insert into users(username,pwd) values("王五","abcdefg");
注意:DATETIME 类型可用于需要同时包含日期和时间信息的值,DATE类型
可用于需要一个日期值而不需要时间部分时.
timestamp:意思为系统自动的更新
f99b
时间戳!
在线用户网站监控开发项目实战开发03
这次我们要做的是:
1 创建一个初始化数据库的类(InitDB),这个类中有一个初始化数据的方法即为initialize()的这个方法,这个方法会调用到之前的DbLib这个类中的getConnection()的这个方法,是来实现数据库的链接的,而类(InitDB)中的这个initialize()方法也是用来接受脚本文件init.sql来作为参数的,因为脚本文件init.sql有初始化数据库的代码!
脚本文件即为(scriptFile),在这个项目中是init.sql,到时候再servlet中把init.sql传过去即可!
2.
因为一个类中的一个方法不可能直接在页面上来调用,所以我们需要创建一个jsp或者servlet来调用数据库初始化类中的方法,在本项目中,做一个serlvet来调用。servlet和jsp最大的区别,就是servlet是没有用户界面的!
3.编写一个页面(InitIt.jsp),来调用servlet(InitIt.java)
总体的思路:在InitDB里面创建一个initialize(),用来初始化数据库,然后新建一个servlet和jsp,servlet调用InitDB中的initialize()方法,然后新建的这个jsp通过dopost的方法与servlet取得联系,通过回调函数将打印信息放到info这个id上,然后用html()的方法显示出来即可!
在这里注意:设置编码格式的时候我们打印信息就用response来设置编码格式,如果是提取信息的haunted,那就用request来提取信息!
在线用户网站监控开发项目实战开发04
这次我们要做的是:
显示在线用户的信息和访客
在线用户的信息从application(SerlvetContext)中来提取
在这个项目中即为:application.getAttribute("online");
访客的信息:包含了在线用户和不在线用户.
做一个页面online.jsp来显示在线用户
做一个页面visitor.jsp来显示历史访客
在线用户网站监控开发项目实战开发05
我们这次的主要目的是来实现online.jsp和visitor.jsp的功能
注意:url 离开时间没有的话,那么就设置为空的,不要显示null
记录用户在网站上的访问轨迹
访问记录表(history)
做一个history.java的javaBean和historyDAO 和之前的visitor.java visitorDAO 是差不多的
序号(ID) 到访ID(visitID) 访问时间(visitime) 访问的页面(url)
下面讲解一下三大监听器:
ServletRequestListener 监听访问网页的情况(什么时候开始请求一个网页,什么时候请求结束,中间的时间间隔是服务器处理请求的时间)
HttpSessionListener 监听访客什么时候来,什么时候走
ServletContextListener 监听服务器什么时候启动,什么时候停止
在线用户网站监控开发项目实战开发06
记录用户在网站上的访问轨迹
访问记录表(history)
做一个history.java的javaBean和historyDAO 和之前的visitor.java visitorDAO 是差不多的
序号(ID) 到访ID(visitID) 访问时间(visitime) 访问的页面(url)
下面讲解一下三大监听器:
ServletRequestListener 监听访问网页的情况(什么时候开始请求一个网页,什么时候请求结束,中间的时间间隔是服务器处理请求的时间)
HttpSessionListener 监听访客什么时候来,什么时候走
ServletContextListener 监听服务器什么时候启动,什么时候停止
在线用户网站监控开发项目实战开发07
接下来我们要做用户的登陆功能:
1.建立一个User的JavaBean,建一个UserDAO,提供验证用户名密码的方法
2.建一个login.jsp页面,提供用户输入用户名的密码,在main.jsp页面上添加用户登陆按钮,链接到login.jsp页面
3.点击登陆,调用一个servlet,serlvet判断用户名和密码是否正确
如果不正确,返回login.jsp页面,让用户继续登录
如果正确,需要修改在线用户和历史访客表,把已登录的用户的信息记录进去
注意事项:
1.启动时报空指针错误,停止服务器,重启就好了!
2.时间显示保存或显示不对的问题,需要用到timestamp相关的函数
3.将session过期的时间设置成10秒钟,切记不要操作页面,等待过期时间
4.还有一种报空指针错误,那就是服务器启动的时候没有生成request就调用了request,那么我们不用request,用arg0去获取相应的对象就可以了
5.(重点)读取数据库卡死的问题(也就是点击按钮点几下就会出现缓冲的现象,而且加载不出来)
这是因为链接自动回收的时间太长,需要手动关闭链接
我们这么来做:
if(conn.isClosed())
{
conn = DbLib.getConnection();
}
在一个方法return 之前再写上conn.close();即可
在线用户网站监控开发项目实战开发08
这次我们要处理的是登录的serlvet
在此之前引入一个非常重要的东西:
引用:理解成地址信息,可以对程序进行优化
例如:map的一个属性变换了的话,那么不需要重新再把改变的Map写入user(例子)中,因为其实已经改变了,这样就可以来优化代码!
这个引用发常重要,可以优化代码!
下面就来处理登录的serlvet:
步骤:
1.从jsp接受用户名和密码
2.调用UserDAO中的isUserValid方法,判断用户的合法性
3.如果用户名密码不正确,转向login.jsp
4.如果用户名和密码正确
(***)先不处理重复登录的问题,后面再来修改
a.修改在线用户表中的当前用户,将当前用户的userid写入;
b.修改历史访客表中的当前用户,将当前用户的userid写入
5.在这里特别需要注意到的是:
if (v.getLeftTime() == null) {
ps.setTimestamp(1, null);
} else {
ps.setTimestamp(1, new Timestamp(v.getLeftTime().getTime()));
}
要判断是否离开时间为空,不判断的话,那么直接用v.getLeftTime.getTime()就会报错!
在线用户网站监控开发项目实战开发09
1.处理用户的重复登录现象:
我们通过判断用户的用户名来得到是否为重复登录
细节方面:我们通过用的用户名去得到用户的id,然后通过即将输入的用户的id和当前的用户去比较,看是否相同
这里面的处理需要一个:Serlvet
2.实现用户访问记录分页处理
分页的实现方式和数据库有关
sql语句:
在mysql用limit(我们采用的就是这种,mysql隶属于oralce公司)
在sql server用top(微软开发的)
在oralce用rownum
下面讲解一些limit在mysql中语法:
select *from mytable limit 0,10;///从0开始提取10条数据
select *from mytable limit 10,10;//从10开始提取10条数据
eg:sql = "select *from history limit "+(pageNo-1)*pageSize+","+pageSize;
分页工作内容分两部分:
1.分页导航的显示
2.根据当前页码提取数据
在这里:我们也需要用到一个serlvet来处理上一页和下一页的逻辑运算
注意到:访问记录每运行一次就会访问一次,所以总的页数会随之增加
好了这些就是我做项目的笔记!下面的一篇博客将提供每一块的具体代码!
相关文章推荐
- 在线用户和访问记录管理项目(代码部分)
- 在线用户和访问记录管理
- 【项目记录】山东大学场馆管理系统之——用户部分
- 敏捷开发与项目管理实战之敏捷需求分析(装载记录有用的文章)
- IT项目管理之用户需求
- 项目管理中的(用户)需求变更控制分析
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 项目管理中的(用户)需求变更控制分析
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 【SSH项目实战】国税协同平台-4.用户管理需求分析&CRUD方法2
- 项目管理中的(用户)需求变更控制分析
- 项目管理中的(用户)需求变更控制分析
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- Java web项目 个人资金项目管理系统用户部分代码
- 项目管理中的(用户)需求变更控制分析
- 项目管理中的(用户)需求变更控制分析
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】