《JavaWeb---简单应用---服务器向客户端提供音乐资源》---用到的技术dom4j,JSTL,EL表达式 (一)

2014-11-24 09:26:37 · 作者: · 浏览: 1

代码看时候感觉很简单,用起来才觉得很强大

当遇到很难的问题时,不要觉得没有方法解决。其实前人早就遇到过,只是你不知道他们解决的方法。也就是说,再编程的时候遇到的所有难题都可以解决。只是时间问题!


部分代码:


[java]
package com.fenghuo.music;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import sun.misc.BASE64Encoder;

public class LinkMusic extends HttpServlet {

/**
* Title:获取资源,对xml文件中的数据进行修整
* Copyright: Copyright (c) 2012
* @author: 烽火
* @version 1.0 2012-09
*/
private static final long serialVersionUID = -2863941298564252276L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//获取所有音乐资源的名字
String[] resnames = getResNames();

//得到xml文件中提供的资源名及对应的歌曲名
Map musmap = getMusmap();

//遍历所有的资源名
for (int i = 0; i < resnames.length; i++){

//判断xml文件中是否存在次资源名,如果不存在则在xml文件中添加此资源
if (!musmap.containsKey(resnames[i])){

//得到对歌曲重命名后的资源名
String rename = getRename(resnames[i]);
//对歌曲进行重命名
setResname(resnames[i], rename);
//将重名的歌曲资源添加到xml文件中
addresname(rename,resnames[i]);
}else{
System.out.println(resnames[i] + "资源存在");
}
}
//xml文件中多余的垃圾信息未清除
//音乐文件从music目录下移除,xml中的信息还存在

//重新获取xml文件中的数据存到session域中
musmap = getMusmap();
request.getSession().setAttribute("musmap", musmap);

//得到音乐的集合,Map.entry里有getKey,getValue为下面用EL表达式获取数据提供便利
Set> musics = musmap.entrySet();
request.setAttribute("musics", musics);

//转发。转到jsp展示音乐信息
request.getRequestDispatcher("/WEB-INF/jsp/linkmusic.jsp").forward(request, response);
}

/**
* Description : 将歌曲信息添加到xml文件中
* @param:resname 资源名称
* @param: name 歌曲名称
*/
public void addresname(String resname, String name){
String xmlrealpath = this.getServletContext().getRealPath("/resource/musiclist.xml");

//得到文件的document
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File(xmlrealpath));

if (document == null){
System.out.println("没有得到xml文件");
return;
}else{
System.out.println("得到xml文件!");
}

//得到根节点
Element root = document.getRootElement();

//给根节点增加一个子节点,即添加一