JSP+SQL实现留言功能(含留言回复功能),附源码,版本2

一、开发环境

开发软件:Eclipse IDE

开发语言:JSP

数据库:MySQL(用了C3P0连接池连接数据库)

二、思路介绍

开发思路参考上一个版本(博客链接)。

三、数据库结构

同上一个版本。

四、JAVA核心代码展示

核心代码解决的问题还是留言留言回复字符串的拆分问题。这次主要用到的是String类的split(String  regex)方法,不清楚的同学可参考JAVA文档

1.查询留言的代码如下:

/**
 * 查询该用户所有留言记录,并按时间排序
 * 
 * @param gid
 * @return
 */
public ArrayList SelectUserMessage(int gid) {
	ArrayList message = new ArrayList<>();
	Connection conn = null;
	PreparedStatement ps = null;
	ResultSet res = null;
	String sql = "SELECT * FROM usermessage WHERE guid = ? ORDER BY writetime DESC";
	try {
		conn = C3P0Util.getConnection();
		ps = conn.prepareStatement(sql);
		ps.setInt(1, gid);
		res = ps.executeQuery();
		// 数据处理
		while (res.next()) {
			message.add(getMessage(res));
		}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		try {
			if (res != null)
				res.close();
			if (ps != null)
				ps.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	return message;
}

2.核心代码1中调用的getMessage()方法,代码如下:

/**
 * 将查询结果转换为message对象
 * 
 * @param res
 * @return
 */
private Message getMessage(ResultSet res) {
	Message message = new Message();
	User user = null;
	try {
		message.setId(res.getInt("MessageId"));
		message.setWuid(res.getInt("wuid"));
		user = UserService.selectoneuser(message.getWuid());
		message.setWname(user.getName());
		message.setWimg(user.getUserimg());
		message.setGuid(res.getInt("guid"));
		message.setMsgtext(res.getString("MessageText"));
		if(res.getString("ReplyMessage")!=null&&res.getString("ReplyMessage").length()>0)
			message.setReptext(selectUserReplyMessage(res.getString("ReplyMessage")));
		message.setWritetime(res.getString("writetime"));
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return message;
}

3、在核心步骤2中调用的selectUserReplyMessage()方法,即拆分回复字符串的代码

/**
 * 查询留言回复信息
 * 
 * @param content
 * @return Reply回复集合
 */
public ArrayList selectUserReplyMessage(String content) {
	content = content.trim();
	String[] one_msg = content.split(">");
	String[] one_msg_info = null;
	ArrayList replys = new ArrayList<>();
	User user = new User();
	UserDao dao = new UserDao();
	for (String value : one_msg) {
		one_msg_info = value.split("<");
		Reply re = new Reply();
		for (int i = 0; i < one_msg_info.length; i++) {
			if (i == 0) {
				re.setId(Integer.parseInt(one_msg_info[0]));
				user = dao.selectoneuser(re.getId());// 查询用户name和头像路径
				re.setImg(user.getUserimg());
				re.setName(user.getName());
			}
			if (i == 1)
				re.setContent(one_msg_info[1]);
			if (i == 2)
				re.setTime(one_msg_info[2]);
		}
		replys.add(re);
	}
	return replys;
}

五、Servlet和HTMl代码说明

Servlet:这个没啥说的,就(接收数据>检查数据>封装数据>调用DAO层方法>返回数据)

HTML:这次优化了很多的HTML代码,用EL表达式和JSTl真的很方便,不需要再在html页面写很多的逻辑。

六、运行效果截图

1.用户登录(默认账户:账号:minghue,密码:123)

JSP+SQL实现留言功能(含留言回复功能),附源码,版本2_第1张图片

2.首页

JSP+SQL实现留言功能(含留言回复功能),附源码,版本2_第2张图片

 3.留言模板n运行效果

JSP+SQL实现留言功能(含留言回复功能),附源码,版本2_第3张图片

七、项目源码及结语

这个项目还有些功能没有完善,比如还想做管理员身份登录,审核和删除留言,用户自己删除自己的留言等等,有兴趣的朋友可以研究研究。项目源码在CSDN下载和QQ群里。(群号在上个版本博客的末尾,群里禁止一切广告,广告一次送永久套餐)

你可能感兴趣的:(JSP心得)