JSP 自己写的在JSP页面得到文件的服务器路径,并对XML文件进行读写(以对Tomcat的conf目录中的context.xml文件为例)
2012-08-20 10:12
761 查看
得到服务器的文件的绝对路径:
<%!
//获取服务器根目录
String serPath = this.getClass().getResource("/").getPath();
int indTom = serPath.indexOf("Tomcat");
String be = serPath.substring(0,indTom);
//处理后得到context.xml文件的绝对路径
String conf = be + serPath.substring(serPath.indexOf("Tomcat")).substring(0,serPath.substring(serPath.indexOf("Tomcat")).indexOf("/"))
+"/conf/context.xml";
%>
<%
//将路径中符号转变成空格,这样得到的conf就是文件的绝对路径
conf = conf.replaceAll("%20", " ");
%>
完整列子:
<%@ page language="java" import="java.util.*,org.w3c.dom.*,java.io.*" pageEncoding="GBK"%>
<%@ page import="javax.servlet.http.HttpServletRequest,javax.xml.transform.stream.*,
org.w3c.dom.*,javax.xml.transform.*,javax.xml.parsers.*,javax.xml.transform.dom.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%!
//属性项集合
Map att = new HashMap<String, String>();
String userName = "";
String pass = "";
String databaseType = "";
String url = "";
String databaseName = "";
//将修改的内容添加到xml文件中
//
// @param document
// @param filename
// @return
public static boolean doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
/** 将document中的内容写入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 编码 */
// transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
}
return flag;
}
//读取xml文件
//
// @param filename
// @return
public static Document load(String filename) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filename));
document.normalize();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具体某个节点的值
*/
public static void xmlUpdateDemo() {
Document document = load("c://Message.xml");
Node root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得ftp所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k = 0; k < ftplist.getLength(); k++) {
Node subnode = ftplist.item(k);
//修改节点的值
if (subnode.getNodeType() == Node.ELEMENT_NODE
&& subnode.getNodeName() == "status") {
subnode.getFirstChild().setNodeValue("1");
}
}
}
}
doc2XmlFile(document, "c://Message.xml");
}
// 演示修改文件的具体某个节点的属性
public static void xmlUpdateDemoAttri() {
Document document = load("c://xx.xml");
Node root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes 根节点的子节点 */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得第一层子节点所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
Node subnode = ftpnodes.item(i);
//添加或修改某节点的属性配置
if ("Resource".equals(subnode.getNodeName())) {
// 生成一个属性对象
Attr attr = document.createAttribute("ss");
attr.setValue("ssss");
subnode.getAttributes().setNamedItem(attr);
}
}
}
// 将修改的内容添加到xml文件中
doc2XmlFile(document, "c://xx.xml");
}
//添加新的节点
// 根节点下没有节点的话直接添加
// 根节点下没有重名的直接添加
// 有重名的节点则更新节点属性
// @param nodeName 添加、更新的节点名
// @param attr 属性集合
public static void xmlAddDemoAttri(String filePath,String nodeName,Map<String, String> attr) {
Document document = load(filePath);
Node root = document.getDocumentElement();
//创建节点元素,并命名
Element element =document.createElement(nodeName);
//向节点中添加属性
for (Object key : attr.keySet().toArray()) {
element.setAttribute(key.toString(), attr.get(key));
}
//找到根节点
NodeList nodeList = document.getElementsByTagName("Context");
//先判断根节点下有没有子节点,没有的话直接添加
Node rootNode = nodeList.item(0);
if(!root.hasChildNodes()){
nodeList.item(0).appendChild(element);
}else{
//如果有重复的节点,flag=true;
boolean flag = false;
NodeList rootChs = rootNode.getChildNodes();
//循环根节点下的所有子节点
for (int i = 0; i < rootChs.getLength(); i++) {
Node node = rootChs.item(i);
//如果没有重名,并且是最后一个节点的就添加
if(!nodeName.equals(node.getNodeName()) && !flag && (i+1) == rootChs.getLength()){
nodeList.item(0).appendChild(element);
}else if(nodeName.equals(node.getNodeName())){
//有重名的就看name属性,name一样就修改属性
if(node.hasAttributes()){
//如果有属性项,判断name属性值,如果name的值相同,则修改其他属性
if(null != node.getAttributes().getNamedItem("name") && attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue())){
// 生成一个属性对象
Attr chAttr = null;
//向节点中添加属性
for (Object key : attr.keySet().toArray()) {
//不更新name属性
if(!"name".equals(key.toString())){
chAttr = document.createAttribute(key.toString());
chAttr.setValue(attr.get(key));
}
}
node.getAttributes().setNamedItem(chAttr);
}else if(null != node.getAttributes().getNamedItem("name") && !attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue()) && !flag && (i+1) == rootChs.getLength()){
//如果name的值不相同,且都没有相同的节点,添加新的节点
System.out.println(attr.get("name"));
System.out.println(node.getAttributes().getNamedItem("name").getNodeValue());
nodeList.item(0).appendChild(element);
}
}
}
}
}
// 将修改的内容添加到xml文件中
doc2XmlFile(document, filePath);
}
%>
<%!
//获取服务器根目录
String serPath = this.getClass().getResource("/").getPath();
int indTom = serPath.indexOf("Tomcat");
String be = serPath.substring(0,indTom);
//处理后得到context.xml文件的绝对路径
String conf = be + serPath.substring(serPath.indexOf("Tomcat")).substring(0,serPath.substring(serPath.indexOf("Tomcat")).indexOf("/"))
+"/conf/context.xml";
%>
<%
//将路径中符号转变成空格
conf = conf.replaceAll("%20", " ");
//添加属性项
userName = request.getParameter("userName");
url = request.getParameter("url");
pass = request.getParameter("pass");
databaseType = request.getParameter("databaseType");
databaseName = request.getParameter("databaseName");
//如果是SqlServer的修改
att.put("username", userName);
att.put("password", pass);
att.put("name", "jdbc/sqlserver-database");
att.put("url", url+":1433;databaseName="+databaseName+";SelectMethod=cursor");
att.put("type", "javax.sql.DataSource");
att.put("driverClassName", "net.sourceforge.jtds.jdbc.Driver");
att.put("maxIdle", "5");
att.put("maxWait", "5000");
att.put("maxActive", "100");
try{
xmlAddDemoAttri(conf ,"Resource",att);
}catch(Exception e){
}finally{
%>
<mce:script type="text/javascript"><!--
alert("配置完成,请重启Tomcat服务!");
window.close();
// --></mce:script>
<%
}
%>
转自:http://blog.csdn.net/songylwq/article/details/5771893
<%!
//获取服务器根目录
String serPath = this.getClass().getResource("/").getPath();
int indTom = serPath.indexOf("Tomcat");
String be = serPath.substring(0,indTom);
//处理后得到context.xml文件的绝对路径
String conf = be + serPath.substring(serPath.indexOf("Tomcat")).substring(0,serPath.substring(serPath.indexOf("Tomcat")).indexOf("/"))
+"/conf/context.xml";
%>
<%
//将路径中符号转变成空格,这样得到的conf就是文件的绝对路径
conf = conf.replaceAll("%20", " ");
%>
完整列子:
<%@ page language="java" import="java.util.*,org.w3c.dom.*,java.io.*" pageEncoding="GBK"%>
<%@ page import="javax.servlet.http.HttpServletRequest,javax.xml.transform.stream.*,
org.w3c.dom.*,javax.xml.transform.*,javax.xml.parsers.*,javax.xml.transform.dom.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%!
//属性项集合
Map att = new HashMap<String, String>();
String userName = "";
String pass = "";
String databaseType = "";
String url = "";
String databaseName = "";
//将修改的内容添加到xml文件中
//
// @param document
// @param filename
// @return
public static boolean doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
/** 将document中的内容写入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 编码 */
// transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
}
return flag;
}
//读取xml文件
//
// @param filename
// @return
public static Document load(String filename) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filename));
document.normalize();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具体某个节点的值
*/
public static void xmlUpdateDemo() {
Document document = load("c://Message.xml");
Node root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得ftp所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k = 0; k < ftplist.getLength(); k++) {
Node subnode = ftplist.item(k);
//修改节点的值
if (subnode.getNodeType() == Node.ELEMENT_NODE
&& subnode.getNodeName() == "status") {
subnode.getFirstChild().setNodeValue("1");
}
}
}
}
doc2XmlFile(document, "c://Message.xml");
}
// 演示修改文件的具体某个节点的属性
public static void xmlUpdateDemoAttri() {
Document document = load("c://xx.xml");
Node root = document.getDocumentElement();
/** 如果root有子元素 */
if (root.hasChildNodes()) {
/** ftpnodes 根节点的子节点 */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得第一层子节点所有节点 */
for (int i = 0; i < ftpnodes.getLength(); i++) {
Node subnode = ftpnodes.item(i);
//添加或修改某节点的属性配置
if ("Resource".equals(subnode.getNodeName())) {
// 生成一个属性对象
Attr attr = document.createAttribute("ss");
attr.setValue("ssss");
subnode.getAttributes().setNamedItem(attr);
}
}
}
// 将修改的内容添加到xml文件中
doc2XmlFile(document, "c://xx.xml");
}
//添加新的节点
// 根节点下没有节点的话直接添加
// 根节点下没有重名的直接添加
// 有重名的节点则更新节点属性
// @param nodeName 添加、更新的节点名
// @param attr 属性集合
public static void xmlAddDemoAttri(String filePath,String nodeName,Map<String, String> attr) {
Document document = load(filePath);
Node root = document.getDocumentElement();
//创建节点元素,并命名
Element element =document.createElement(nodeName);
//向节点中添加属性
for (Object key : attr.keySet().toArray()) {
element.setAttribute(key.toString(), attr.get(key));
}
//找到根节点
NodeList nodeList = document.getElementsByTagName("Context");
//先判断根节点下有没有子节点,没有的话直接添加
Node rootNode = nodeList.item(0);
if(!root.hasChildNodes()){
nodeList.item(0).appendChild(element);
}else{
//如果有重复的节点,flag=true;
boolean flag = false;
NodeList rootChs = rootNode.getChildNodes();
//循环根节点下的所有子节点
for (int i = 0; i < rootChs.getLength(); i++) {
Node node = rootChs.item(i);
//如果没有重名,并且是最后一个节点的就添加
if(!nodeName.equals(node.getNodeName()) && !flag && (i+1) == rootChs.getLength()){
nodeList.item(0).appendChild(element);
}else if(nodeName.equals(node.getNodeName())){
//有重名的就看name属性,name一样就修改属性
if(node.hasAttributes()){
//如果有属性项,判断name属性值,如果name的值相同,则修改其他属性
if(null != node.getAttributes().getNamedItem("name") && attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue())){
// 生成一个属性对象
Attr chAttr = null;
//向节点中添加属性
for (Object key : attr.keySet().toArray()) {
//不更新name属性
if(!"name".equals(key.toString())){
chAttr = document.createAttribute(key.toString());
chAttr.setValue(attr.get(key));
}
}
node.getAttributes().setNamedItem(chAttr);
}else if(null != node.getAttributes().getNamedItem("name") && !attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue()) && !flag && (i+1) == rootChs.getLength()){
//如果name的值不相同,且都没有相同的节点,添加新的节点
System.out.println(attr.get("name"));
System.out.println(node.getAttributes().getNamedItem("name").getNodeValue());
nodeList.item(0).appendChild(element);
}
}
}
}
}
// 将修改的内容添加到xml文件中
doc2XmlFile(document, filePath);
}
%>
<%!
//获取服务器根目录
String serPath = this.getClass().getResource("/").getPath();
int indTom = serPath.indexOf("Tomcat");
String be = serPath.substring(0,indTom);
//处理后得到context.xml文件的绝对路径
String conf = be + serPath.substring(serPath.indexOf("Tomcat")).substring(0,serPath.substring(serPath.indexOf("Tomcat")).indexOf("/"))
+"/conf/context.xml";
%>
<%
//将路径中符号转变成空格
conf = conf.replaceAll("%20", " ");
//添加属性项
userName = request.getParameter("userName");
url = request.getParameter("url");
pass = request.getParameter("pass");
databaseType = request.getParameter("databaseType");
databaseName = request.getParameter("databaseName");
//如果是SqlServer的修改
att.put("username", userName);
att.put("password", pass);
att.put("name", "jdbc/sqlserver-database");
att.put("url", url+":1433;databaseName="+databaseName+";SelectMethod=cursor");
att.put("type", "javax.sql.DataSource");
att.put("driverClassName", "net.sourceforge.jtds.jdbc.Driver");
att.put("maxIdle", "5");
att.put("maxWait", "5000");
att.put("maxActive", "100");
try{
xmlAddDemoAttri(conf ,"Resource",att);
}catch(Exception e){
}finally{
%>
<mce:script type="text/javascript"><!--
alert("配置完成,请重启Tomcat服务!");
window.close();
// --></mce:script>
<%
}
%>
转自:http://blog.csdn.net/songylwq/article/details/5771893
相关文章推荐
- JSP 自己写的在JSP页面得到文件的服务器路径,并对XML文件进行读写(以对Tomcat的conf目录中的context.xml文件为例)
- JSP 自己写的在JSP页面得到文件的服务器路径,并对XML文件进行读写(以对Tomcat的conf目录中的context.xml文件为例)
- JSP 自己写的在JSP页面得到文件的服务器路径,并对XML文件进行读写(以对Tomcat的conf目录中的context.xml文件为例)
- JSP 自己写的在JSP页面得到文件的服务器路径,并对XML文件进行读写(以对Tomcat的conf目录中的context.xml文件为例)
- tomcat conf目录下web.xml,tomcat-users.xml,server.xml,context.xml四个文件的作用
- Tomcat 利用server.xml进行其他盘符的其他项目映射的部署以及JSP引用其他盘符的图片(虚拟目录及虚拟路径)
- tomcat conf目录下web.xml tomcat-users.xml server.xml context.xml这四个文件的作用
- tomcat做服务器时,当通过项目名访问jsp页面的时候,网页中的相对路径无效
- tomcat/JSP服务器web.xml文件配置
- JSP页面用户目录文件路径合成
- JSP的tomcat conf目录下四个文件作用
- Tomcat conf目录下web.xml,tomcat-users.xml,server.xml以及context.xml的作用
- jsp页面点击下载文件 java方式(服务器上带路径文件 以文件流输出)
- tomcat conf目录下 web.xml tomcat-users.xml context.xml的作用
- jsp+servlet实现大型文件下载(tomcat服务器),将自己今天做的和大家一起分享
- 【2011/2/28】关于Tomcat的conf/server.xml文件中上面配置 context的reloadable属性的时候,区分path和docBase二者的意义
- Tomcat结构里面的conf目录下的server.xml简要文件介绍
- 您不具备查看该目录或页面的权限,因为访问控制列表(ACL)对Web服务器上的该资进行了配置-关于IIS新追加文件无法访问的原因
- Tomcat项目发布的三种方式;一种:直接将项目(文件)直接复制到tomcat/webapps下二种:在tomcat/conf/server.xml配置tomcat的虚拟路径;