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

(3)修改文章

<a href="<%=URL%>/ArticleAction.action?action=adminSelectList&typeID=">删除文章</a>

我们修改文章也是,先显示一个文章列表,然后在选择哪一篇来修改。然后这个文章列表也是和删除文章列表一样的页面。

所有的文章存在一个List里面,我们在ArticleList里面循环显示文章,我们在每个文章后面除了加一个删除的链接还有也给修改的链接:

<a href="<%=URL%>/ArticleAction.action?action=modify&id=<%=articleBean.getId()%>">修改文章</a>

  我们的修改文章也是交给ArticleAction来处理,传递action和id参数,action是modify,表示修改,id就是这一篇要修改的文章的id。

  现在我们看看ArticleAction里面如何处理action为modify的操作。

  以下是ArticleAction里面处理modify操作的函数。

	public String modifyArticle(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		HttpSession session=request.getSession();
		RequestDispatcher rd=null;
		ArticleDao articleDao=new ArticleDao();
		String type=request.getParameter("type");
		if(type==null){
			type="";
		}
		if(!type.equals("doModify")){
			//判断如果不是修改操作,就进行文章查询,通过id查看指定的某一篇文章
			int id=Common.strToint(request.getParameter("id"));
			ArticleBean articleBean=articleDao.queryArticleByID(id);
			request.setAttribute("modifySingle", articleBean);
			String url="/admin/article/ArticleModify.jsp";
			return url;
		}
		else{
			String messages="";
			String forward="";
			String href="";
			ArticleBean articleBean=new ArticleBean();
			articleBean.setId(Common.strToint(request.getParameter("id")));
			articleBean.setArticleTypeID(Integer.parseInt(request.getParameter("typeID")));
			articleBean.setArticleTitle(Common.toChinese(request.getParameter("title")));
			articleBean.setArticleFrom(Common.strToint(request.getParameter("from")));
			articleBean.setArticleInfo(Common.toChinese(request.getParameter("info")));
			articleBean.setArticleContent(Common.toChinese(request.getParameter("content")));
			articleBean.setMasterID(Common.strToint(request.getParameter("masterID")));
			boolean flag=articleDao.operationArticle("modify", articleBean);
			System.out.println("info:"+articleBean.getArticleInfo());
			if(flag){
				messages="<li>修改成功!!!</li>";
				href="<a href='"+this.URL+"/ArticleServlet?action=adminSelectList&typeID="
						+session.getAttribute("showTypeID")+"'>[继续修改其他文章]</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;
		}
	}

  我们看到,它首先是通过request获取参数名师type的值,先判断这个值是否是doModify,如果是,则表示保存修改好的文章,如果不是,那么就是进行修改操作。

  而我们修改操作之前,就必须把这一篇文章的具体信息先找出来,所以我们还会执行一个查询操作,查询结果返回后,并存到request里面,设置其参数名为modifySingle,然后跳转到/admin/article/ArticleModify.jsp页面,进行修改操作。

  我们看一下ArticleModify.jsp页面。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" 
    import="java.util.List,com.MyBlog.common.GLOBALS,com.MyBlog.action_implements.ArticleAction,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();%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>博客管理——修改文章</title>
</head>
<body>
<%
	ArticleBean articleBean=(ArticleBean)request.getAttribute("modifySingle");
	int id=articleBean.getId();
	int typeID=articleBean.getArticleTypeID();
	String title=articleBean.getArticleTitle();
	int from=articleBean.getArticleFrom();
	String info=articleBean.getArticleInfo();
	String content=articleBean.getArticleContent();
	out.print(info);
%>
	<!-- 文章修改后,保存按钮,提交请求的表单设置 -->
	<form action="<%=URL%>/ArticleAction.action" method="post">
		<input type="hidden" name="action" value="modify">
		<input type="hidden" name="type" value="doModify">
		<input type="hidden" name="id" value="<%=id%>">

		<table id="table">
			<tr>
				<td><label for="typeID">类别ID</label></td>
				<td><input id="typeID" type="text" name="typeID" value="<%=typeID%>"></td>
			</tr>

			<tr>
				<td><label for="title">文章标题</label></td>
				<td><input id="title" type="text" name="title" value="<%=title%>"></td>
			</tr>
			
			<tr>
				<td><label for="from">文章来源</label></td>
				<td><input id="from" type="text" name="from" value="<%=from%>"></td>
			</tr>
			
			<tr>
				<td><label for="info">文章描述</label></td>
				<td><input id="info" type="text" name="info" value="<%=info%>"></td>
			</tr>

			<tr>
				<td><label for="content">文章内容</label></td>
				<td><textarea id="content" rows="30" cols="100" name="content"><%=content%></textarea>
				</td>
			</tr>
		</table>
		
		<input type="submit" value="修改">
		<input type="reset" value="清空">

	</form>
</body>
</html>

 我们首先获取request里面参数名为modifySingle的值,即我们之前查询的结果,然后我们设置一个表单,这个表单加了三个type为hidden的隐藏input,分别是:

<input type="hidden" name="action" value="modify">

<input type="hidden" name="type" value="doModify">

<input type="hidden" name="id" value="<%=id%>">

  第一个表示当前是什么操作,即修改操作,第二个是表示修改的type,即使保存修改,第三个就是这一篇文章的id。

  然后我们搞了四个input,分别是类别id,文章标题,文章来源,文章描述的input,还有一个textarea,即文章内容,并把我们之前查询的结果作为这些input或textarea的初始值,然后我们直接修改这个input就达到了修改文章的目的。

  我们修改好之后,就提交这个表单,给了ArticleAction处理,也是用我们处理action为modify的函数modifyArticle,这次我们判断的type的值是doModify,表示保存文章。我们首先把这些值设置到ArticleBean里面,然后由articleDao执行修改操作,即articleDao.operationArticle("modify"articleBean)我们根据这个函数的返回值,判断我们是否修改成功,修改成功,跳转到admin/success.jsp页面,失败跳到admin/error.jsp页面。

 

  以上是我们的文章的增删查改。

  除了文章的增删查改,还有文章类型的增删查改、朋友的增删查、留言的增删查改,相册的增删查。这些的增删查改和我们上面说的文章的增删查改是大同小异的,我们后面只说说它们的与众不同之处。

猜你喜欢

转载自season-jy.iteye.com/blog/2283201