3、我们所有管理文章的操作都在AdminLeft.jsp里面,而AdminLeft.jsp被包含在AdminIndex.jsp,这个AdminLeft.jsp被包含并放在在AdminIndex.jsp的左边。我们现在来看看AdminLeft.jsp的结构。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS"%> <!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();%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="<%=URL%>/css/admin/AdminLeft.css"> <title>Insert title here</title> </head> <body> <!-- 通过div,id=left框住整个左边的导航菜单,细分多个div,id=left_menu进行具体导航列表 --> <div id="left"> <div> <div class="left_menu"> <!-- 文章管理列表 --> <a class="menu" href="#">文章管理</a> <!-- 通过ul,li标签,把每项管理继续细分 --> <ul class="ul_menu"> <li> <a href="<%=URL%>/admin/article/ArticleAdd.jsp">发表文章</a> <a href="<%=URL%>/ArticleAction.action?action=adminSelectList&typeID=">删除文章</a> <a href="<%=URL%>/ArticleAction.action?action=adminSelectList&typeID=">修改文章</a> <a href="<%=URL%>/ArticleAction.action?action=adminSelectList&typeID=">浏览文章</a> </li> </ul> </div> <!-- 文章管理列别列表 --> <div class="left_menu"> <a class="menu" href="#">文章类别管理</a> <ul class="ul_menu"> <li> <a href="<%=URL%>/admin/article/ArticleTypeAdd.jsp">添加类别</a> <a href="<%=URL%>/ArticleTypeAction.action?action=typeSelect">删除类别</a> <a href="<%=URL%>/ArticleTypeAction.action?action=typeSelect">修改类别</a> <a href="<%=URL%>/ArticleTypeAction.action?action=typeSelect">浏览类别</a> </li> </ul> </div> <!-- 相册管理列表 --> <div class="left_menu"> <a class="menu" href="#">相册管理</a> <ul class="ul_menu"> <li> <a href="<%=URL%>/admin/photo/PhotoUpload.jsp">上传照片</a> <a href="<%=URL%>/PhotoAction.action?action=adminList&type=all">删除照片</a> <a href="<%=URL%>/PhotoAction.action?action=adminList&type=all">浏览照片</a> </li> </ul> </div> <!-- 好友管理列表 --> <div class="left_menu"> <a class="menu" href="#">好友管理</a> <ul class="ul_menu"> <li> <a href="<%=URL%>/admin/friend/FriendAdd.jsp">添加好友</a> <a href="<%=URL%>/FriendAction.action?action=adminList&type=all">删除好友</a> <a href="<%=URL%>/FriendAction.action?action=adminList&type=all">修改好友</a> <a href="<%=URL%>/FriendAction.action?action=adminList&type=all">浏览好友</a> </li> </ul> </div> <!-- 留言列表 --> <div class="left_menu"> <a class="menu" href="#">留言管理</a> <ul class="ul_menu"> <li> <a href="<%=URL%>/WordAction.action?action=adminList&type=all">回复留言</a> <a href="<%=URL%>/WordAction.action?action=adminList&type=all">删除留言</a> <a href="<%=URL%>/WordAction.action?action=adminList&type=all">浏览留言</a> </li> </ul> </div> </div> </div> </body> </html>
它分为几块:
(1)文章管理,其包含了发表文章,修改文章,删除文章,浏览文章四个选项。
(2)文章类别管理,其中包含添加类别,删除类别,修改类别,浏览类别。
(3)相册管理,其中包含上传照片,删除照片,浏览照片。
(4)好友管理,其中包含添加好友,删除好友,修改好友,浏览好友。
(5)留言管理,其中包含回复留言,删除留言,浏览留言。
5、现在我们先从文章管理模块开始,文章管理模块的jsp文章都在article文件夹里面。
(1)发表文章:
<a href="<%=URL%>/admin/article/ArticleAdd.jsp">发表文章</a>
这里我们链接到article里面的ArticleAdd.jsp,ArticleAdd.jsp也是一个表单。代码如下:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS"%>
<!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();%>
<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="add">
<table id="table">
<tr>
<td>
<label for="typeID">文章类别</label>
</td>
<td>
<input id="typeID" type="text" name="typeID">
</td>
</tr>
<tr>
<td>
<label for="title">文章标题</label>
</td>
<td>
<input id="title" type="text" name="title">
</td>
</tr>
<tr>
<td>
<label for="content">文章内容</label>
</td>
<td>
<textarea id="content" rows="30" cols="100" name="content"></textarea>
</td>
</tr>
<tr>
<td>
<label for="from">文章来源</label>
</td>
<td>
<input id="from" type="text" name="from">
</td>
</tr>
<tr>
<td>
<label for="info">文章描述</label>
</td>
<td>
<input id="info" type="text" name="info">
</td>
</tr>
</table>
<input type="submit" value="提交">
<input type="reset" value="清空">
</form>
</body>
</html>
这个表单的action是"<%=URL%>/ArticleAction.action",由ArticleAction的对象执行excute方法,处理发表文章事件。
与此同时,这个表单还添加了一个hidden的类型的input,这个input不在页面上显示,其内容我们自己设定好,提交表单时,一并把它也提交给服务器。这个input的name和value如下:
<input type="hidden" name="action" value="add">
我们把名为action,value为add的参数提交给服务器,服务器由名字action获取其value:add,便知道这个是发表文章的操作,这个工作就是有ArticleAction的excute方法来做。
所以我们现在来看ArticleAction类的excute方法
public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.URL=GLOBALS.getPath(request);
String url = "error.jsp";
//获取action参数
// 获取servlet中将执行的操作
String action = request.getParameter("action");
if (action == null) {
action = "";
}
if (action.equals("select")) {
url=this.selectArticle(request, response);
}
// 后台,查看所有文章
if (action.equals("adminSelectList")) {
url=this.adminSelectList(request, response);
}
// 添加文章,后台
if (action.equals("add")) {
url=this.addArticle(request, response);
}
// 修改文章,后台
if (action.equals("modify")) {
url=this.modifyArticle(request, response);
}
// 删除文章,后台
if (action.equals("delete")) {
url=this.deleteArticle(request, response);
}
// 阅读文章,增加文章阅读次数、获取指定文章信息、获取对该文章的所有评论
if (action.equals("read")) {
url=this.readArticle(request, response);
}
return url;
}
我们可以看到,首先我们获取名为action的参数,request.getParameter("action");
然后,添加文章是add,所以我们根据判断,去执行addArticle方法。
AddArticle方法结构如下
public String addArticle(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String messages="";
String forward="";
String href="";
HttpSession session=request.getSession();
MasterBean masterBean=(MasterBean)session.getAttribute("masterBean");
int masterID=masterBean.getId();
System.out.println("masterID:"+masterID);
//对表单输入的数据进行乱码处理
ArticleBean articleBean=new ArticleBean();
articleBean.setArticleTypeID(Common.strToint(request.getParameter("typeID")));
articleBean.setArticleTitle(Common.toChinese(request.getParameter("title")));
articleBean.setArticleContent(Common.changeHTML(Common.toChinese(request.getParameter("content"))));
articleBean.setArticleSdTime(Common.changeTime(new Date()));
articleBean.setArticleFrom(Common.strToint(request.getParameter("from")));
articleBean.setArticleInfo(Common.toChinese(request.getParameter("info")));
articleBean.setArticleCount(0);
articleBean.setMasterID(masterID);
ArticleDao articleDao=new ArticleDao();
boolean flag=articleDao.operationArticle("add", articleBean);
if(flag){
messages="<li>发表文章成功!!!</li>";
href="<a href='"+this.URL+"/admin/article/ArticleAdd.jsp'>[继续发表]</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、第一步,我们首先获取作者的信息,我们登录的时候知道,作者的信息,下面的获取作者信息的一段代码:
HttpSession session=request.getSession();
MasterBean masterBean=(MasterBean)session.getAttribute("masterBean");
int masterID=masterBean.getId();
B、通过request的getParameter方法,或取文章内容,然后我们要创建一个ArticleBean对象,把文章类型id,文章内容,文章题目,文章作者,,等等,都装载在这个对象中。
C、接下来建立articleDao类的对象,执行对文章表的数据库操作,操作类型为add,添加内容是articleBean,如operationArticle("add", articleBean)。
D、最后根据这个operationArticle方法的返回,判断是否添加成功若成功,调大success.jsp页面,若失败,跳到error.jsp页面。