package bbs;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;
/**
* 控制器,接受用户的请求,并调用相应的处理方法,返回结果页面
*/
public class TopicServlet
extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
/**
* 判断是哪种操作
* 1,topic_delete:删除贴子
* 2,topic_add:发表新贴
* 3,answer_add:回复贴子
* 4,answer_delete:删除贴子回复
* 5,topic_update:更新贴子
* 6,answer_update:更新贴子回复
* 7,topic_select:获取帖子列表
* 8,topic_view:获取一个帖子以及该帖子的回复
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String method = request.getParameter("method");
//从request对象中获取操作类型,后面代码根据操作类型调用相应的方法进行处理
if (method == null) {
return;
}
else if (method.equalsIgnoreCase("topic_select")) {
topic_select(request, response);
//获取某一讨论区的帖子列表
}
else if (method.equalsIgnoreCase("topic_view")) {
topic_view(request, response);
//获取某一个帖子以及该帖子的回复
}
else if (method.equalsIgnoreCase("topic_delete")) {
topic_delete(request, response);
}
else if (method.equalsIgnoreCase("topic_add")) {
topic_add(request, response);
//创建一个新帖子
}
else if (method.equalsIgnoreCase("answer_add")) {
answer_add(request, response);
//回复一个帖子
}
else if (method.equalsIgnoreCase("answer_delete")) {
answer_delete(request, response);
}
else if (method.equalsIgnoreCase("topic_update")) {
topic_update(request, response);
}
else if (method.equalsIgnoreCase("answer_update")) {
answer_update(request, response);
}
}
/**
* 获取讨论区列表
* 1,获取讨论区编号forum_id
* 2,调用TopicHandle的select方法,获取指定讨论区的帖子列表
* 3,如果出现异常,将异常信息保存到request对象中
* 5,返回topics.jsp页面
*/
private void topic_select(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
//处理成功与否标记
ArrayList array = null;
//用来保存结果集
String forum_id = request.getParameter("forum_id");
//获取讨论区编号forum_id
String start_index = request.getParameter("start_index");
//起始页编号,分页算法中要用到
if (start_index == null) {
start_index = "0";
//起始页编号为空,初始化为“0”,表示第一页
}
Page pageInfo = null;
//分页对象
try {
pageInfo = (Page) request.getAttribute("pageInfo");
//从request中获取分页对象
if (pageInfo == null) {
pageInfo = new Page();
request.setAttribute("pageInfo", pageInfo);
//如果分页对象为空,就创建一个新的分页对象,并保存到request中
}
pageInfo.setIndex(Integer.parseInt(start_index));
//设置分页对象的起始页
pageInfo.setUrl("topicservlet?method=topic_select&forum_id=" +
forum_id);
//设置页面数字对应的URL链接
array = TopicHandle.select(Integer.valueOf(forum_id).intValue(),
pageInfo);
//调用TopicHandle的select方法获取讨论区列表
isSuccess = true;
}
catch (Exception es) {
isSuccess = false;
request.setAttribute("topic_error", es.getMessage());
es.printStackTrace();
array = new ArrayList();
}
if (isSuccess) {
request.removeAttribute("topic_error");
}
request.setAttribute("topics", array);
//将结果集保存到request对象中
String forward = "topics.jsp?forum_id=" + forum_id;
forward(request, response, forward);
}
/**
* 浏览帖子信息
* 1,获得要浏览贴子的讨论区编号forum_id以及贴子号bbs_id
* 2,调用TopicHandle的viewTopic方法,获取编号为bbs_id的贴子以及该贴子的回复
* 3,返回topic_view.jsp页面
*/
private void topic_view(HttpServletRequest request,
HttpServletResponse response) {
String forum_id = request.getParameter("forum_id");
String bbs_id = request.getParameter("bbs_id");
//从request对象中获取贴子的讨论区编号forum_id以及贴子号bbs_id
String start_index = request.getParameter("start_index");
//起始页编号,分页算法中要用到
if (start_index == null) {
start_index = "0";
}
Page pageInfo = null;
ArrayList array = null;
try {
pageInfo = (Page) request.getAttribute("pageInfo");
//从request中获取分页对象
if (pageInfo == null) {
pageInfo = new Page();
request.setAttribute("pageInfo", pageInfo);
//如果分页对象为空,就创建一个新的分页对象,并保存到request中
}
pageInfo.setIndex(Integer.parseInt(start_index));
//设置分页对象的起始页
pageInfo.setUrl("topicservlet?method=topic_view&bbs_id=" + bbs_id +
"&forum_id=" + forum_id);
//设置页面数字对应的URL链接
int id = Integer.parseInt(bbs_id);
array = TopicHandle.viewTopic(id, pageInfo);
//调用业务逻辑层对象,获取帖子以及该帖子的所有回复
}
catch (Exception es) {
es.printStackTrace();
}
request.setAttribute("topic_answer", array);
//将结果保存在request对象中
String forward = "topic_view.jsp?forum_id=" + forum_id + "&bbs_id=" +
bbs_id;
forward(request, response, forward);
}
/**
* 删除贴子以及该贴子的所有回复
* 1,获得要删除的贴子的讨论区编号forum_id以及贴子号bbs_id
* 2,调用TopicHandle的delete方法,删除编号为bbs_id的贴子以及该贴子的回复
* 3,如果出现异常,将异常信息保存到request对象中
* 5,返回forums.jsp页面
*/
private void topic_delete(HttpServletRequest request,
HttpServletResponse response) {
String bbs_id = (String) request.getParameter("bbs_id");
String forum_id = (String) request.getParameter("forum_id");
boolean isSuccess = false;
try {
TopicHandle.delete(Integer.valueOf(bbs_id).intValue());
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("topic_error", es.getMessage());
}
if (isSuccess) {
request.removeAttribute("topic_error");
}
String forward = "topicservlet?method=topic_select&forum_id=" +
forum_id;
// forward += "&b
bbs.rar_BBS java_MVC模式的BBS_bbs_管理系统
版权申诉
134 浏览量
2022-09-23
08:18:28
上传
评论
收藏 473KB RAR 举报
Kinonoyomeo
- 粉丝: 76
- 资源: 1万+
最新资源
- 课设毕设基于SSM的个人交友网站 LW+PPT+源码可运行.zip
- 课设毕设基于SSM的高校信息资源共享平台 LW+PPT+源码可运行.zip
- 课设毕设基于SSM的高校二手交易平台 LW+PPT+源码可运行.zip
- Z`@9ZFCVIJ41EJ2%J$RWI3S.png
- 课设毕设基于SSM的艺诚美业管理系统 LW+PPT+源码可运行.zip
- 基于STM8j003单片机设计MICRO-USB接口 圆环形PCB小板AD设计硬件(原理图+PCB+封装库)文件.zip
- Excel模板个人简历稳重大气单页22.docx
- Excel模板个人简历稳重大气单页24.docx
- Excel模板个人简历稳重大气单页25.docx
- Excel模板个人简历稳重大气单页07.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈