`

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

 
阅读更多

      (4)文章类型

文章类型应该没什么特殊之处,和文章的增删查改是一样的方法,只不过文章是对于文章的数据库,文章类型是对于文章类型的表,它的操作交给了ArticleTypeAction处理。

(5)留言的增删查改

留言的增删查改,有很多地方要处理,和文章的不一样,这些都写在了留言功能的设计哪一篇博客了,它的操作交给了WordAction处理。

(6)朋友的增删查改

朋友的增删查改的话,也是和文章的处理方法一样,不过,它的数据库的设计就不一样了,我们新加了个朋友表。

当我们添加朋友时,我们有个表单,在这个表单里面好友的姓名、性别、好友的OICQ,主要是好友的姓名。

当我们提交表单的时候交给了FriendAction处理,

(7)相册的增删查

相册的增删查改,这里的话涉及到一个上传文件的功能,这个功能也在其它博客里面说了。我们把图片上传后,数据库里面存的是图片放置的地址。所以我们查询的时候,就是把这些图片的地址查出来,然后用img标签把这些图片显示出来:

<img src="<%=URL%>/<%=photo_addr%>" title="<%=photo_info %>">

这里的photo_addr(这个photo_addr包含了文件名字),即相对于这个博客系统根目录的地址就是图片的地址,这个地址在前面添个这个博客系统网络地址的URL,即可访问到这一张图片了。

且相册的管理的操作也是交给PhotoAction处理的。

然后图片没有修改了,只有删除,我们的删除也是先到的PhotoList,然后这个PhotoList显示图片列表,我们在每个图片后面加一个删除的链接:

<a href="<%=URL%>/PhotoAction.action?action=delete&id=<%=photoBean.getId()%>">删除图片</a>

我们给PhotoAction传递action为delete和id是这张图片的id的参数。

然后我们看PhotoAction里面处理action为delete的函数deletePhoto

	public String deletePhoto(HttpServletRequest request, HttpServletResponse response) {
		int id = Common.strToint(request.getParameter("id"));
		// 获得目前登录的博主的id
		HttpSession session = request.getSession();
		MasterBean master = (MasterBean) session.getAttribute("masterBean");
		int masterID = master.getId();
		PhotoDao photoDao = new PhotoDao();
		PhotoBean photoBean = photoDao.queryPhotoByID(id);
		boolean flag = photoDao.operationPhoto("delete", photoBean);

		// 设置文件存储路径,获取该类PhotoAction.Java在web项目下的路径
		URL url_photoAction = this.getClass().getResource("PhotoAction.class");
		System.out.println(url_photoAction);
		// 将URL类型的路径转换成String类型,方便后面利用indexOf方法对路径进行截取
		String str_url_photoAction = url_photoAction.toString();
		System.out.println(str_url_photoAction);
		// 由于url_photoAction的路径是D:\JavaWeb\tomcat\wtpwebapps\MyBlog\WEB-INF\classes\com\MyBlog\action_implements
		// 自己希望存储的路径为D:\JavaWeb\tomcat\wtpwebapps\MyBlog\images\photo
		// 因此需要进行路径截取,以及配置,找到所需路径的最后一个位置的坐标
		int pos = str_url_photoAction.indexOf("WEB-INF");
		// 通过pos值。截取,先获得web服务器所在的根路径
		String rootPath = str_url_photoAction.substring(6, pos);
		// 文件路径
		String filePath = rootPath + photoBean.getPhotoAddr();
		// 输入要删除的文件位置
		File file = new File(filePath);
		// 定义标志位f,判断文件是否删除成功
		boolean f = false;
		if (file.exists()) {
			// 从服务器里面删除文件
			f = file.delete();
		} else {
			// 若文件不存在,则证明不用删除,直接返回true
			f = true;
		}
		if (flag && f) {
			String url = this.adminSelectPhoto(request, response);
			return url;
		}
		return "error.jsp";
	}

 这里我们首先取出传过来的id参数,

int id = Common.strToint(request.getParameter("id"));

我们先把这个图片的信息从数据库的表里面获取出来,由photoDao处理:

PhotoBean photoBean = photoDao.queryPhotoByID(id);

然后也是由photoDao类来处理删除操作,即把这个图片在数据库里面删除,photoDao.operationPhoto("delete"photoBean);

但是,我们光这样还不行,还要在硬盘里面把这个图片文件删掉,所以我们先获取这个博客系统所在的跟目录,即在硬盘中的位置:rootpath,然后再从photoBean里面获取这个文件在根目录下存储的地址photoBean.getPhotoAddr()这个PhotoAddr包含了文件名字),即相对于根目录的地址。最后得到这个文件的实际地址:

String filePath = rootPath + photoBean.getPhotoAddr();

最后我们才能根据这个filePath把这个文件删除。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics