`

基于java web的博客平台(二)

 
阅读更多

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页面。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics