//得到存放音乐文件夹的绝对地址
String realpath = this.getServletContext().getRealPath("/resource/music");
//得到存有音乐的文件夹对象
File dir = new File(realpath);
//判断是否存在一个目录文件
if (dir.exists() && dir.isDirectory()) {
//得到目录下所有文件的名称
resnames = dir.list();
}
return resnames;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
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
//遍历所有的资源名
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
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();
//给根节点增加一个子节点,即添加一首歌曲的信息
root.addElement("music")
.addElement("resname").addText(resname).getParent()
.addElement("name").addT