动态产生虚拟路径工具类
来源:互联网 发布:python 驼峰命名 编辑:程序博客网 时间:2024/03/29 13:43
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.lang.xwork.StringUtils;
import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*
* File Name : VirtualPathUtil.java
*
* @Description : 虚拟路径工具
* @author 张汉辉
*/
public class VirtualPathUtil
{
private static Logger logger = Logger.getLogger(VirtualPathUtil.class
.getName());
private static String TOMCAT6_CONFIG_PATH = File.separatorChar + "conf"
+ File.separatorChar + "Catalina" + File.separatorChar
+ "localhost" + File.separatorChar;
private static String JBOSS4_CONFIG_PATH = File.separatorChar + "conf"
+ File.separatorChar + "jboss.web" + File.separatorChar
+ "localhost" + File.separatorChar;
private static String TOMCAT_PATH = System.getProperty("catalina.base");
private static String JBOSS_PATH = System
.getProperty("jboss.server.home.dir");
private static String XML_FILE_PATH = "";
private static boolean CONTAINER_SUPPORT_FLAG = false;
static
{
if (StringUtils.isNotBlank(JBOSS_PATH))
{
XML_FILE_PATH = JBOSS_PATH + JBOSS4_CONFIG_PATH;
CONTAINER_SUPPORT_FLAG = true;
} else if (StringUtils.isNotBlank(TOMCAT_PATH))
{
XML_FILE_PATH = TOMCAT_PATH + TOMCAT6_CONFIG_PATH;
CONTAINER_SUPPORT_FLAG = true;
}
if (XML_FILE_PATH.endsWith(File.separator))
{
XML_FILE_PATH = XML_FILE_PATH.substring(0, XML_FILE_PATH.length()
- File.separator.length());
}
}
/**
* Description : 设置容器虚拟路径
*
* @param filepath
* @param virtualpath
*
*/
public static void setVirtualPath(String filepath, String virtualpath)
{
if (CONTAINER_SUPPORT_FLAG)
{
try
{
File path = new File(XML_FILE_PATH);
boolean pathexists = false;
if (!path.exists())
{
pathexists = path.mkdirs();
} else
{
pathexists = true;
}
if (!pathexists)
{
logger.error("创建" + XML_FILE_PATH + "路径失败!");
return;
}
if (virtualpath.endsWith("/"))
{
virtualpath = virtualpath.substring(0,
virtualpath.length() - 1);
}
String filename = StringUtils.replace(virtualpath, "/", "#");
if (filename.startsWith("#"))
{
filename = filename.substring(1);
}
filename = filename + ".xml";
File xmlFile = new File(XML_FILE_PATH + File.separator
+ filename);
Document document = null;
if (!xmlFile.exists())
{
document = createVirtualPathXml(filepath, virtualpath);
} else
{
SAXReader reader = new SAXReader();
document = reader.read(xmlFile);
document = updateVirtualPathXml(document, filepath,
virtualpath);
}
FileOutputStream fout = new FileOutputStream(xmlFile, false);
BufferedOutputStream bout = new BufferedOutputStream(fout);
bout.write(document.asXML().getBytes("utf-8"));
bout.close();
fout.close();
} catch (IOException e)
{
logger.error("读取文件" + XML_FILE_PATH + "出错!", e);
} catch (DocumentException e)
{
logger.error("解析xml文件" + XML_FILE_PATH + "出错!", e);
}
}
}
/**
* Description : 移除容器虚拟路径
*
* @param virtualpath
*
*/
public static void removeVirtualPath(String virtualpath)
{
if (CONTAINER_SUPPORT_FLAG)
{
String filename = StringUtils.replace(virtualpath, "/", "#");
if (filename.startsWith("#"))
{
filename = filename.substring(1);
}
filename = filename + ".xml";
File xmlFile = new File(XML_FILE_PATH + filename);
if (xmlFile.exists())
{
xmlFile.delete();
}
}
}
private static Document createVirtualPathXml(String filepath,
String virtualpath)
{
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("UTF-8");
Element context = document.addElement("Context");
context.addAttribute("docBase", filepath);
context.addAttribute("path", virtualpath);
return document;
}
private static Document updateVirtualPathXml(Document document,
String filepath, String virtualpath)
{
Element context = document.getRootElement();
Attribute docBase = context.attribute("docBase");
String oldfilepath = docBase.getValue();
if (!oldfilepath.equals(filepath))
{
docBase.setValue(filepath);
}
Attribute path = context.attribute("path");
String oldvirtualpath = path.getValue();
if (!oldvirtualpath.equals(virtualpath))
{
path.setValue(virtualpath);
}
return document;
}
}
- 动态产生虚拟路径工具类
- 获取虚拟路径的类
- java 随机数产生工具类
- 【Java工具类】----产生随机数
- 产生证书请求工具类
- 动态代理类的产生
- 虚拟路径
- 虚拟路径 物理路径
- 类中将虚拟路径转化为物理路径
- RandomUtils 产生随机数的工具类
- Oracle产生动态表明的视类
- 工具类-虚拟键盘相关大全
- 虚拟路径与物理路径
- 虚拟路径中资源路径
- 相对路径 绝对路径 虚拟路径
- 动态生成类工具
- 动态代理工具类
- 动态时间工具类
- Windows Phone7的新版本
- 说的话
- Delphi 多线程简单应用
- Spring事务--案例项目结构描述
- sql网络配置--不能方问1433的解决办法
- 动态产生虚拟路径工具类
- kingcms5.0/5.1漏洞
- Extjs按钮字体大小的调整
- ssh2 整合jbpm
- SAX方式解析XML的简单方法
- 163邮箱收不到mdaemon 11发过来的邮件
- 上传图片的样式
- 在新窗口打开链接的使用
- 详细剖析Linux睡眠休眠状态