解析web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <!--登录请求 -->    
      <servlet>
        <servlet-name>loginservlet</servlet-name>
        <servlet-class>com.fix.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginservlet</servlet-name>
          <url-pattern>/login</url-pattern>
      </servlet-mapping>

    <!--注册请求 -->    
      <servlet>
        <servlet-name>zhuceservlet</servlet-name>
        <servlet-class>com.fix.servlet.ZhuceServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>zhuceservlet</servlet-name>
          <url-pattern>/zhuce</url-pattern>
      </servlet-mapping>
</web-app>
package com.fix;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

/**
 * xml 信息读取到 map里
 * 
 * @author Administrator
 * 
 */
public class XmlParse {

    private Map<String, String> servlets = new HashMap<String, String>();
    private Map<String, String> mappings = new HashMap<String, String>();

    public XmlParse() {

        SAXReader reader = new SAXReader();
        try {
            Document doc = reader.read("web.xml");

            List<Element> list = doc.selectNodes("/web-app/servlet");
            for (Element servlet : list) {
                Element sname = servlet.element("servlet-name");
                Element sclass = servlet.element("servlet-class");
                servlets.put(sname.getText(), sclass.getText());
            }

            List<Element> list1 = doc.selectNodes("/web-app/servlet-mapping");
            for (Element servlet : list1) {
                Element sname = servlet.element("servlet-name");
                Element url = servlet.element("url-pattern");
                mappings.put(url.getText(), sname.getText());
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }

    /**
     * 通过 url 找到 类名
     * 
     * @param url
     * @return
     */
    public String getClassByUrl(String url) {
        String cname = null;

        String sname = mappings.get(url);
        cname = servlets.get(sname);

        return cname;

    }

    public static void main(String[] args) {
        XmlParse xml= new XmlParse();
        String ok=xml.getClassByUrl("/login");
        System.out.println(ok);
    }

}
package com.fix;

import java.util.List;

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

public class ReadXmlPath {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        SAXReader reader=new SAXReader();
        try {
            Document doc= reader.read("web.xml");
            
            List<Element> list=doc.selectNodes("/web-app/servlet");
            for (Element element : list) {
                System.out.println(element.getName()+"--"+element.getText());
            }
            
        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }

}
package com.fix;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

public class ReadXml {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        Map<String, String> servlets=new HashMap<String, String>();
        Map<String, String> mappings=new HashMap<String, String>();
        
        SAXReader reader=new SAXReader();
        try {
            Document doc= reader.read("web.xml");  //读文件
            Element root= doc.getRootElement();  //
            
            List<Element> list=root.elements("servlet");  //返回所有孩子
            for (Element servlet : list) {
                
                Element sname= servlet.element("servlet-name");
                Element sclass= servlet.element("servlet-class");
                
                servlets.put(sname.getText(), sclass.getText());
            }   
            
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        
        System.out.println(servlets);

    }

}
package com.fix;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


public class CreateXml {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        DbUtil db=new DbUtil();
        String sql="select giftid,giftname,icon from zone_gift";
        ArrayList<Object[]> list=db.executeNewQuery(sql, null);         
         
        Document doc=DocumentHelper.createDocument();  //文件        
        Element root= doc.addElement("Gifts");  //
        
        for (Object[] sz : list) {            
            String id=sz[0].toString();
            String name=sz[1].toString();
            String icon=sz[2].toString();
            
            Element gift=root.addElement("gift");  //根下的孩子             
            gift.addAttribute("gid", id);
            
            Element gname=gift.addElement("name");
            Element gicon=gift.addElement("icon");
            gname.setText(name);
            gicon.setText(icon);
             
        }
        
        
        
        //存盘
        OutputFormat format=OutputFormat.createPrettyPrint();
        format.setEncoding("gbk");
        
        FileWriter fw;
        try {
            fw = new FileWriter("test.xml");
            XMLWriter xml=new XMLWriter(fw,format);    //不加后面参数,乱码    
            xml.write(doc);
            xml.close();
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

    }

}
package com.fix;

import java.lang.reflect.Method;
import java.sql.*;
import java.util.*;

public class DbUtil {
    private Connection con;
    private PreparedStatement pt;
    private ResultSet rs;

    private void getConn() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/qzone?user=root&password=root");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 返回单个值
     *             ---可执行类似这种语句:  select count(*) from students where sex='男'
                                            select stname from students where stid=10
         
     * @param sql
     * @param sz
     * @return
     */
    public Object executeSelectOne(String sql, Object sz[]) {
        Object obj = null;
        getConn();
        try {
            pt = con.prepareStatement(sql); // 语句
            for (int i = 0; sz != null && i < sz.length; i++) {
                pt.setObject(i + 1, sz[i]);
            }

            rs = pt.executeQuery();
            if (rs.next()) {
                obj = rs.getObject(1);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.closeAll();
        }

        return obj;
    }


    /**
     *  可以执行所有 insert update delete 语句  
     *  如   String sql="insert into student values(?,?)";
             Object sz[]={"张三","123123"};  用来代替上面的?
             xxx.executeUpdate(sql,sz);
     *
     **/
    public int executeUpdate(String sql, Object sz[]) {
        int n = 0;
        getConn();
        try {
            pt = con.prepareStatement(sql); // 语句
            for (int i = 0; sz != null && i < sz.length; i++) {
                pt.setObject(i + 1, sz[i]);
            }
            n = pt.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.closeAll();
        }
        return n;
    }
    
    /**
     *  可以执行 select  语句  
     *  如   String sql="select * from  students;              
             xxx.executeQuery(sql,null);
     *
     **/
    public ResultSet executeQuery(String sql, Object sz[]) {
        getConn();
        try {
            pt = con.prepareStatement(sql); // 语句
            for (int i = 0; sz != null && i < sz.length; i++) {
                pt.setObject(i + 1, sz[i]);
            }

            rs = pt.executeQuery();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }
    
    /**

     *  可以执行 select  语句  
     *  如   String sql="select * from  students;              
             xxx.executeNewQuery(sql,null);
     *   返回 list 集合 ,里面是数组  
        
     **/
    public ArrayList executeNewQuery(String sql, Object sz[]) {
        getConn();
        ArrayList datas = new ArrayList();
        try {
            pt = con.prepareStatement(sql); // 语句
            for (int i = 0; sz != null && i < sz.length; i++) {
                pt.setObject(i + 1, sz[i]);
            }
            rs = pt.executeQuery();
            // 结果集的列
            int n = rs.getMetaData().getColumnCount();
            while (rs.next()) {
                Object[] hang = new Object[n]; // 行数组
                for (int i = 1; i <= n; i++) {
                    hang[i - 1] = rs.getObject(i);
                }
                datas.add(hang);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            this.closeAll(); // 数据库关闭
        }
        return datas;
    }

    /**
     * 返回装了实体的集合
     * @param sql 语句
     * @param sz  ?的值 
     * @param beanName 类名 
     * @return
     */

     /**
     *  可以执行 select  语句  
     *  如   String sql="select * from  students;              
             xxx.executeQuery(sql,null,"entity.Student");    //最后一个参数是放 包名.类名
     *   返回 list 集合 ,里面是 Student对象
        
     **/
    public List executeQuery(String sql, Object sz[], String beanName) {
        this.getConn();

        List list = new ArrayList();
        try {
            Class obj = Class.forName(beanName);
            Method[] ms = obj.getMethods(); // 反射出所有的方法
            pt = con.prepareStatement(sql);
            if (sz != null) {
                for (int i = 0; i < sz.length; i++) {
                    pt.setObject(i + 1, sz[i]);
                }
            }
            rs = pt.executeQuery(); // 执行select 得到结果集
            int endcols = rs.getMetaData().getColumnCount(); // 得到列数

            while (rs.next()) {
                Object beanObj = obj.newInstance(); // 一行生成一个对象

                // 循环取出所有列的列名
                for (int cols = 1; cols <= endcols; cols++) {
                    // 得到一列的列名 stuId
                    String columName = rs.getMetaData().getColumnName(cols);
                    Object value = rs.getObject(columName); // 取出数据库中的一个字段
                    if(value==null)
                        continue;
                    String c = columName.substring(0, 1); // 切下第一个字母s
                    String e = columName.substring(1); // 余下的tuId
                    // 组合成一个 setStuId
                    String setColumName = "set" + c.toUpperCase() + e;
                    
                    //System.out.println("调用"+setColumName+"值为"+value);

                    for (int i = 0; i < ms.length; i++) {
                        if (ms[i].getName().equals(setColumName)) {
                            //  相当于执行 xxx.setStuId(10);
                            ms[i].invoke(beanObj, value);
                            break;
                        }

                    }
                }
                
                list.add(beanObj);
            }

        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            this.closeAll();
        }
        return list;
    }

    public void closeAll() {
        try {
            if (rs != null) {
                rs.close();
            }

            if (pt != null) {
                pt.close();
            }

            if (con != null) {
                con.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2012-10-20 18:33  邹晟  阅读(1297)  评论(0编辑  收藏  举报