在线聊天系统
大概介绍
- 就是一个在线聊天平台。
功能
- 用户登陆、注册
- 聊天室的创建、查看、加入
- 聊天信息的查询、发布
- 聊天室人数限制
- 聊天上线提示和下线提示
涉及相关技术
- 表单开发
- 内置对象
- jdbc-odbc连接数据库
- servlet
- javabean
- 过滤器
- ajax
- 验证码
- ……有待优化
不足
- 很丑
- 数据库连接部分conn的反复定义可以考虑代码进一步精简化
- 还有很多待发现待改进的地方
部分代码
登陆过滤器
- 登陆保护,未登陆无法进入内部页面,自动跳转到登陆界面
package filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "loginFilter")
public class loginFilter implements Filter {
String[] notneed = new String[]{"/login.jsp","/create.jsp","/login","/create","/validate.jsp"};
public void destroy() {
}
public boolean need(String uri){
for(String that:notneed){
if(that.equals(uri)){
return false;
}
}
return true;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String uri = request.getRequestURI();
boolean need = need(uri);
if(!need){
chain.doFilter(req,resp);
}else{
if(session.getAttribute("nickname")!=null&&session!=null){
chain.doFilter(req,resp);
}else{
String resqtype = request.getHeader("X-Requested-With");
if (resqtype!=null && "XMLHttpRequest".equals(resqtype)){
chain.doFilter(req,resp);
}else{
response.sendRedirect("login.jsp");
}
}
}
}
public void init(FilterConfig config) throws ServletException {
}
}
加入聊天室过滤器
- 进行聊天室人数限制
package filter;
import Dao.ChatroomDao;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "attendFilter")
public class attendFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
ChatroomDao chatroomDao = new ChatroomDao();
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
Integer[] that = new Integer[2];
try{
that = chatroomDao.getroomnumber(session.getAttribute("room").toString());
}catch (Exception e){
e.printStackTrace();
}
if(that[0]>=that[1]+1){
chain.doFilter(req,resp);
}else{
response.sendRedirect("chatrooms.jsp");
}
}
public void init(FilterConfig config) throws ServletException {
}
}
效果展示