github地址:https://github.com/stubbornA/chatroom
项目功能:
1.全屏/退出全屏
2.登录,退出登录
3.注册
4.选择聊天室
5.查看聊天室记录,查看聊天室成员
6.发布聊天信息
项目完成过程:
1.完成前端界面
技术:html+css+javascript+jquery+bootstrap
描述:其中,背景使用了html5的canvas画布,整个排版布局使用Boorstrap的网格系统,做为响应式设计。再修饰方面,使用css3的扩展属性:border-shaow等。
2.完成数据库设计
技术:mysql
描述:设计了三个表,值得注意的是,表的主键和表与表之间的外键关系关系。
3.完成java后台代码
项目结构图:
项目描述:
数据库用的Mysql,用jdbc进行数据库连接,dao层是用来写sql语句操作数据库的,service层是功能业务层调用dao层,Servlet做核心控制引导。最终用jsp做前端展示页。另外使用了编码过滤器,对编码进行过滤。
4.项目结果图展示
5.项目收获
在开发项目的过程中,遇到了很多问题,比如聊天内容的显示要在7天范围之内,所以我们在进行查询的时候要做日期判断。
public List<ChatContent> queryAllContentByTid(int id) {
String sql="select * from chatcontent where tid=? order by date asc";
ResultSet rs=null;
List<ChatContent> list=new ArrayList<>();
try {
PreparedStatement ps=connection.prepareStatement(sql);
ps.setInt(1,id);
rs=ps.executeQuery();
ChatContent chatContent;
while (rs.next()){
chatContent=new ChatContent(rs.getInt("cid"),rs.getString("content"),rs.getInt("tid"),
rs.getInt("uid"),rs.getString("uname"),rs.getTimestamp("date"));
System.out.println(chatContent.getDate());
Timestamp now=new Timestamp(System.currentTimeMillis());
long t=now.getTime()-chatContent.getDate().getTime();
if(t/1000<=(long)3600*24*7) {
list.add(chatContent);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
还有在存储数据库日期的时候,日期显示不全,解决的方案是:
在数据库中插入带时分秒的时间需要用Timestamp。
1.数据库字段设置为timestamp类型
CREATE TABLE `chatcontent` (
`cid` INT(11) NOT NULL AUTO_INCREMENT,
`content` VARCHAR(200) NOT NULL COLLATE 'utf8_bin',
`tid` INT(11) NOT NULL,
`uid` INT(11) NOT NULL,
`uname` VARCHAR(20) NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`cid`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=51
;
2.vo层字段映射到java对象的属性,类型对应为Timestamp
private Timestamp date;
3.controll控制层设置时间,采用如下方法
chatContent.setDate(new Timestamp(System.currentTimeMillis()));
4.表现层,如果用jstl取值,方法如下:
<%@taglib prefix="df" uri="http://java.sun.com/jsp/jstl/fmt" %>
<df:formatDate value="${content.getDate()}" pattern="yyyy-MM-dd hh:mm:ss"></df:formatDate>