您现在的位置是:首页 > 编程语言学习 > 后端编程语言 > 文章正文 后端编程语言
基于javaweb+JSP+Servlet实现聊天室功能
2022-04-21 13:52:17 后端编程语言
简介基于javaweb+JSP+Servlet聊天室开发工具:eclipse idea myeclipse sts等均可配置运行适用课程设计,大作业,毕业设计,项目练习,学习演示
基于javaweb+JSP+Servlet聊天室
开发工具:eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
user.setTel(rs.getString("tel"));
user.setPhoto(rs.getString("photo"));
user.setEmail(rs.getString("email"));
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
ConnectDB.closeConnection(conn);
}
return user;
// 根据用户名及密码查询用户信息
String sql = "select * from tb_user where username = ? and password = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 对SQL语句的占位符参数进行动态赋值
ps.setString(1, username);
ps.setString(2, password);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(rs.next()){
// 实例化一个用户对象
user = new User();
// 对用户对象属性赋值
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
function login(form) {
if (form.username.value == "") {
alert("用户不能为空!");
return false;
}
if (form.password.value == "") {
alert("密码不能为空!");
return false;
}
}
</script>
</head>
<body>
<!-- 在外层添加一个div,把行内容居中,添加.row .justify-content-center -->
<div class="row justify-content-center ">
<!-- 下面是我要居中的div,添加.col-center-block -->
<div class="col-center-block col-sm-4 col-xs-4 jumbotron myformdiv ">
<h2 class="text-center">聊天室登录</h2>
<div>
<form class="bs-example bs-example-form" role="form" id=login action="LoginServlet" method="post" onSubmit="return login(this);">
<div class="input-group-lg">
<span class="input-group-addon"><b>用户名</b></span>
<input type="text" class="form-control" placeholder="username" name="username" id="username">
</div>
<br>
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
ConnectDB.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
private String username;// 用户名
private String password;// 密码
private String sex; // 性别
private String tel; // 电话
private String photo; // 头像
private String email; // 电子邮箱
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
String sendTime = new Date().toLocaleString(); //发言时间
ServletContext application = getServletContext();
String sourceMessage = application.getAttribute("message").toString();
try {
//发言时间
sourceMessage += "<font color='blue'><strong>" + from + "</strong></font><font color='#CC0000'>" + face + "</font>对<font color='green'>[" + to + "]</font>说:" + "<font color='" + color + "'>" + content + "</font>(" + sendTime + ")<br>";
application.setAttribute("message", sourceMessage);
request.getRequestDispatcher("Messages?action=getMessages&nocache=" + random.nextInt(10000)).forward(request, response);
} catch (Exception ex) {
Logger.getLogger(Messages.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public String getServletInfo() {
return "Short description";
}
}
package com.demo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.demo.entity.User;
// 转发到result.jsp页面
request.getRequestDispatcher("Messages?action=loginRoom").forward(request, response);
} else {
// 登录失败
request.setAttribute("info", "错误:用户名或密码错误!");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
package com.demo.entity;
/**
* 用户实体类
*/
public class User {
private int id; // 标识
private String username;// 用户名
private String password;// 密码
private String sex; // 性别
private String tel; // 电话
private String photo; // 头像
private String email; // 电子邮箱
<option value="同情的">同情的</option>
<option value="遗憾的">遗憾的</option>
<option value="正义凛然的">正义凛然的</option>
<option value="严肃的">严肃的</option>
<option value="慢条斯理的">慢条斯理的</option>
<option value="无精打采的">无精打采的</option>
</select>
说:
</td>
<td width="189" align="left"> 字体颜色:
<select name="color" size="1" class="wenbenkuang" id="select">
<option selected>默认颜色</option>
<option style="color:#FF0000" value="FF0000">红色热情</option>
// 关闭数据库连接
ConnectDB.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
* @return 布尔值
*/
public boolean userIsExist(String username){
// 获取数据库连接Connection对象
Connection conn = ConnectDB.getConnection();
// 根据指定用户名查询用户信息
String sql = "select * from tb_user where username = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
public class Messages extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String action = request.getParameter("action");
if ("loginRoom".equals(action)) {//登录时,写入系统公告
this.loginRoom(request, response);
} else if ("sendMessage".equals(action)) {//发送聊天信息
this.sendMessages(request, response);
} else if ("getMessages".equals(action)) {//从XML文件中读取聊天信息
this.getMessages(request, response);
}
}
}
//保存用户信息
if(flag){
UserListener ul=new UserListener();
ul.setUser(username);
session.setAttribute("user",ul);
session.setAttribute("username",username);
user.addUser(ul.getUser());
//保存当前登录的用户名
session.setAttribute("loginTime",new Date().toLocaleString()); //保存登录时间
response.sendRedirect("Messages?action=loginRoom");
}
%>
运行环境
Java≥6、Tomcat≥7.0、MySQL≥5.5
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
技术框架
CSS+JavaScript+ajax+jsp Servlet jdbc MySQL
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
登录、注册、退出、聊天