解析web.xml文件

来源:互联网 发布:腾讯数据分析 编辑:程序博客网 时间:2024/06/06 04:14

解析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();        }    }}
复制代码

 

分类: JavaEE
好文要顶关注我 收藏该文
邹晟
关注 - 3
粉丝 - 5
+加关注
0
0
«上一篇:正则表达式
»下一篇:仿照tomcat服务器
posted @ 2012-10-20 18:33 邹晟 阅读(680) 评论(0)编辑 收藏
0 0
原创粉丝点击