?? forumservlet.java
字號:
package bbs;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
/**
* 控制器,接受用戶的請求,并調用相應的處理方法,返回結果頁面
*/
public class ForumServlet
extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
/**
* 判斷是哪種操作
* 1,forum_delete:刪除討論區(qū)
* 2,forum_add:新增討論區(qū)
* 3,forum_update:更新討論區(qū)
* 4,forum_select:獲取討論區(qū)列表
* 5,forum_view:獲取某一個討論區(qū)詳細信息
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String method = request.getParameter("method");
//從request對象中獲取操作類型,后面代碼根據(jù)操作類型調用相應的方法進行處理
if (method == null) {
return;
}
else if (method.equalsIgnoreCase("forum_delete")) {
forum_delete(request, response);
//轉到刪除討論區(qū)操作
}
else if (method.equalsIgnoreCase("forum_add")) {
forum_add(request, response);
//轉到新增討論區(qū)操作
}
else if (method.equalsIgnoreCase("forum_update")) {
forum_update(request, response);
//轉到更新討論區(qū)操作
}
else if (method.equalsIgnoreCase("forum_select")) {
forum_select(request, response);
//轉到獲取討論區(qū)列表操作
}
else if (method.equalsIgnoreCase("forum_view")) {
forum_view(request, response);
//轉到獲取某一個討論區(qū)信息操作
}
else if (method.equalsIgnoreCase("forum_edit")) {
forum_edit(request, response);
//轉到獲取某一個討論區(qū)信息輸入到編輯頁面
}
}
/**
* 刪除討論區(qū)
* 1,獲得要刪除的討論區(qū)編號forum_id
* 2,調用ForumHandle的delete方法,刪除編號為forum_id的討論區(qū)
* 3,如果出現(xiàn)異常,將異常信息保存到request對象中
* 4,如果操作成功,返回成功頁面
* 5,如果操作失敗,返回主頁面,并提示出錯信息
*/
private void forum_delete(HttpServletRequest request,
HttpServletResponse response) {
//獲得要刪除的討論區(qū)編號forum_id
String forum_id = (String) request.getParameter("forum_id");
boolean isSuccess = false;
try {
//調用ForumHandle的delete方法,刪除編號為forum_id的討論區(qū)
ForumHandle.delete(Integer.valueOf(forum_id).intValue());
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("forum_error", es.getMessage());
}
String forward = null;
if (isSuccess) {
request.removeAttribute("forum_error");
forward = "forumservlet?method=forum_select";
}
else {
forward = "index.jsp";
}
forward(request, response, forward);
}
/**
* 創(chuàng)建討論區(qū)
* 1,獲得要增加的討論區(qū)的名字、順序號、描述
* 2,判斷是否為重復提交,如果為重復提交,直接返回主頁面;否則繼續(xù)執(zhí)行
* 3,調用ForumHandle的insert方法創(chuàng)建討論區(qū)
* 4,如果出現(xiàn)異常,將異常信息保存到request對象中
* 5,如果操作成功,返回主頁面
* 6,如果操作失敗,返回forum_add.jsp,并提示出錯信息
*/
private void forum_add(HttpServletRequest request,
HttpServletResponse response) {
//獲得要增加的討論區(qū)的名字、順序號、描述
String name = (String) request.getParameter("name");
String sort = (String) request.getParameter("sort");
String description = (String) request.getParameter("description");
boolean isSuccess = false;
String forward = null;
//判斷是否為重復提交,如果為重復提交,直接返回主頁面;否則繼續(xù)執(zhí)行
if (isRedo(request, "forum_add")) {
forward = "index.jsp";
}
else {
try {
//將請求參數(shù)封裝成業(yè)務對象
Forum forum = new Forum();
forum.setName(name);
int seq = Integer.parseInt(sort);
forum.setSort(seq);
forum.setDescription(description);
//調用業(yè)務邏輯創(chuàng)建討論區(qū)
ForumHandle.insert(forum);
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
//將錯誤信息保存在request對象中,界面展示會用到
request.setAttribute("forum_error", es.getMessage());
}
if (isSuccess) {
request.removeAttribute("forum_error");
forward = "forumservlet?method=forum_select";
}
else {
forward = "forum_add.jsp";
}
}
forward(request, response, forward);
}
/**
* 獲取討論區(qū)列表
* 1,調用業(yè)務邏輯獲取討論區(qū)列表
* 2,將討論區(qū)列表保存在request對象中
* 3,如果出現(xiàn)異常,將異常信息保存到request對象中
* 4,返回主頁面
*/
private void forum_select(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
//判斷處理成功與否
String forward = null;
try {
request.setAttribute("forums", ForumHandle.select());
//調用業(yè)務邏輯獲取討論區(qū)列表,并保存到request對象中
isSuccess = true;
//處理成功
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
//處理失敗
request.setAttribute("forum_error", es.getMessage());
//將失敗信息保存到request中
}
if (isSuccess) {
request.removeAttribute("forum_error");
//如果處理成功,從request對象中刪除錯誤信息
}
forward = "forums.jsp";
forward(request, response, forward);
//轉發(fā)請求,流程轉到主頁面
}
/**
* 獲取某一個討論區(qū)的詳細信息
*/
private void forum_view(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
String forward = null;
try {
String id = (String) request.getParameter("forum_id");
int tid = Integer.parseInt(id);
request.setAttribute("forum", ForumHandle.getForumInfo(tid));
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("forum_error", es.getMessage());
}
if (isSuccess) {
request.removeAttribute("forum_error");
}
forward = "forum_view.jsp";
forward(request, response, forward);
}
/**
* 獲取某一個討論區(qū)的詳細信息,并輸出到編輯頁面
*/
private void forum_edit(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
String forward = null;
String id = "";
try {
id = (String) request.getParameter("forum_id");
int tid = Integer.parseInt(id);
request.setAttribute("forum", ForumHandle.getForumInfo(tid));
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("forum_error", es.getMessage());
}
if (isSuccess) {
request.removeAttribute("forum_error");
}
forward = "forum_update.jsp";
forward(request, response, forward);
}
/**
* 修改討論區(qū)信息
* 1,獲得要修改的討論區(qū)編號forum_id以及變更后的討論區(qū)信息:名字、順序號、描述
* 2,判斷是否為重復提交,如果為重復提交,直接返回成功頁面;否則繼續(xù)執(zhí)行
* 3,調用ForumHandle的update方法更新討論區(qū)
* 4,如果出現(xiàn)異常,將異常信息保存到request對象中
* 5,如果操作成功,返回成功頁面
* 6,如果操作失敗,返回forum_update.jsp,并提示出錯信息
*/
private void forum_update(HttpServletRequest request,
HttpServletResponse response) {
//獲得要修改的討論區(qū)編號forum_id
String id = (String) request.getParameter("forum_id");
//獲取變更后的討論區(qū)信息:
String name = (String) request.getParameter("name");
String sort = (String) request.getParameter("sort");
String description = (String) request.getParameter("description");
boolean isSuccess = false;
String forward = null;
//判斷是否為重復提交
if (isRedo(request, "forum_update")) {
forward = "success.jsp";
}
else {
try {
//使用修改后的信息封裝討論區(qū)對象
Forum forum = new Forum();
forum.setName(name);
int seq = Integer.parseInt(sort);
forum.setSort(seq);
forum.setId(Integer.parseInt(id));
forum.setDescription(description);
//調用業(yè)務邏輯修改討論區(qū)信息
ForumHandle.update(forum);
isSuccess = true;
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("forum_error", es.getMessage());
}
if (isSuccess) {
request.removeAttribute("forum_error");
forward = "forumservlet?method=forum_select";
}
else {
forward = "forum_update.jsp?forum_id=" + id;
}
}
forward(request, response, forward);
}
/**
* 將控制流程轉到url所表示的頁面
* @param url String 要轉到的頁面
*/
private void forward(HttpServletRequest request,
HttpServletResponse response, String url) {
try {
request.getRequestDispatcher(response.encodeURL(url)).
forward(request, response);
}
catch (Exception es) {
es.printStackTrace();
}
}
/**
* 判斷是否為重復提交
* 1,檢查Session中是否含有指定名字的屬性
* 2,如果Session中沒有該屬性或者屬性為空,證明已被處理過,判斷為重復提交
* 3,否則,證明是第一次處理,并將屬性從Session中刪除。
* @param key String
*/
private boolean isRedo(HttpServletRequest request, String key) {
String value = (String) request.getSession().getAttribute(key);
if (value == null) {
return true;
}
else {
request.getSession().removeAttribute(key);
return false;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -