(2)删除文章
<a href="<%=URL%>/ArticleAction.action?action=adminSelectList&typeID=">修改文章</a>要删除文章,我们首先要显示一个文章列表,这样我们就可以知道选择哪一篇文章来删除了。
所以这次给ArticleAction的action是adminSelectList,即获取当前用户的所有文章。我们先看看ArticleAction的excute方法里面对action是adminSelectList的调用哪一个方法的。
public String adminSelectList(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得目前登录的博主对象
HttpSession session=request.getSession();
MasterBean masterBean=(MasterBean)session.getAttribute("masterBean");
//获得博主的id
int masterID=masterBean.getId();
ArticleDao articleDao=new ArticleDao();
//从页面上面获得需要操作的查找的类型
String strID=request.getParameter("typeID");
if(strID==null || strID.equals("")){
strID="-1";
}
//把页面获得的string类型的id转换成int型
int typeID=Common.strToint(strID);
List articleList=articleDao.queryArticle(typeID,"all");
request.setAttribute("articleList", articleList);
String url="/admin/article/ArticleList.jsp";
return url;
}
大致过程如下:
A、我们首先通过session,获取这个当前用户的所有信息,然后得到当前用户id。
B、然后通过articleDao类的queryArticle方法查询出该用户的所写的所有文章。
C、然后把结果存放的request里面,通过setAttribute方法添加”articleList”的属性,request.setAttribute("articleList", articleList);
D、最后跳转到"/admin/article/ArticleList.jsp",显示文章列表。
然后到ArticleList.jsp文件:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS,com.MyBlog.entity.ArticleBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <%String URL=session.getAttribute("url").toString(); //获取页面传过来的articleList对象 List<ArticleBean> articleList=(List<ArticleBean>)request.getAttribute("articleList");%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>博客管理——显示所有文章</title> </head> <body> <!-- 显示所有文章表单设置 --> <form action="<%=URL%>/ArticleAction.action" method="post"> <input type="hidden" name="action" value="adminSelectList"> <table id="table_form"> <tr> <td> <label for="typeID">文章类型ID</label><input id="typeID" type="text" name="typeID"> </td> </tr> </table> <input type="submit" value="确定"> <input type="reset" value="重置"> </form> <!-- 显示我的文章 --> <table id="table_article"> <tr height="80"> <td> <a href="<%=URL%>/admin/article/ArticleSingle.jsp">【我的文章】</a> </td> <td align="right"> <a href="<%=URL%>/admin/article/ArticleSingle.jsp">更多...</a> </td> </tr> <% if(articleList.size()==0){ %> <tr height="100"> <td align="center"> <li>未查到任何关于该类型的文章!!!</li> </td> </tr> <% } else { for (int i = 0; i < articleList.size(); i++) { ArticleBean articleBean = articleList.get(i); %> <tr> <td colspan="2"> <a href="<%=URL%>/ArticleAction.action?action=read&id=<%=articleBean.getId()%>"> <b><%=articleBean.getArticleTitle()%></b> </a> [<%=articleBean.getArticleFrom()%>] </td> </tr> <tr height="60"> <td colspan="2" valign="top"><%=articleBean.getArticleCount()%> </td> </tr> <tr> <td > <a href="<%=URL%>/ArticleAction.action?action=read&id=<%=articleBean.getId()%> &count=<%=articleBean.getArticleCount()%>">阅读全文 </a> </td> <td align="right"> <a href="<%=URL%>/ArticleAction.action?action=modify&id=<%=articleBean.getId()%>">修改文章 </a> </td> </tr> <tr> <td align="right" colspan="2">发表时间:<%=articleBean.getArticleFrom()%>| 评论:| 阅读:<%=articleBean.getArticleCount()%>次 </td> </tr> <tr> <td align="right" colspan="2"> <a href="<%=URL%>/ArticleAction.action?action=delete&id=<%=articleBean.getId()%>">删除文章 </a> </td> </tr> <tr height="1"> <td background="<%=URL%>/images/front/line.jpg" colspan="2"></td> </tr> <% } } %> </table> </body> </html>
在ArticleList.jsp文件里,我还是通过request获得已经存在request里面的文章。List<ArticleBean> articleList=(List<ArticleBean>)request.getAttribute("articleList");
所有的文章存在一个List里面,我们在ArticleList里面循环显示文章,我们在每个文章后面加一个链接:
<a href="<%=URL%>/ArticleAction.action?action=delete&id=<%=articleBean.getId()%>">删除文章</a>
这个删除文章的操作也是交给ArticleAction,然后传递参数为delete的action,最后再加个这一篇文章的id。我们就把action和id参数传递到ArticleAction,然后删除操作就由ArticleAction处理。
现在我们看ArcitleAction的处理delete的action的函数
public String deleteArticle(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ArticleDao articleDao=new ArticleDao();
ArticleBean articleBean=new ArticleBean();
String messages="";
String href="";
String forward="";
articleBean.setId(Common.strToint(request.getParameter("id")));
boolean flag=articleDao.operationArticle("delete", articleBean);
if(flag){
String typeID=request.getParameter("typeID");
messages+="<li>删除文章成功!!!</li>";
href="<a href='"+this.URL+"/ArticleServlet?action=adminSelectList&typeID="
+typeID+"'>[继续删除其他文章]</a>";
forward="/admin/success.jsp";
}
else{
messages+="<li>删除文章失败!!!</li>";
href="< a href='javascript:window.history.go(-1)'>[返回]</a>";
forward="/admin/error.jsp";
}
request.setAttribute("messages", messages);
request.setAttribute("href", href);
String url=this.adminSelectList(request, response);
return url;
}
A、先创建一个articleBean,给这个articleBean设置传过来的那个id。
B、把这个articleBean传入,由articleDao执行删除操作。
根据articleDao的operationArticle函数返回值,判断是否成功删除,若成功,跳回ArticleList,String url=this.adminSelectList(request, response),我们是先执行一次查询文章列表再返回。