package cn.itheima.web.servlet1;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Before;
import org.junit.Test;
public class TestMyServlet2 {
//8.创建一个map集合
private HashMap<String, String> data = new HashMap<String,String>();
@Before
public void testReadWEBXml(){
try {
//1.创建解析器对象
SAXReader saxReader = new SAXReader();
//2.使用解析器加载web.xml文件得到document对象
Document document = saxReader.read("src/cn/itheima/web/servlet1/web.xml");
//3.获取根元素节点
Element rootElement = document.getRootElement();
//4.获取子节点(servlet和servlet-mapping)
List<Element> childElements = rootElement.elements();
//5.遍历
for (Element element : childElements) {
//6.判断元素的名称为servlet的元素节点
if("servlet".equals(element.getName())){
//7.分别获取servlet元素节点的servlet-name和servlet-class的值
String servletName = element.element("servlet-name").getText();
String servletClass = element.element("servlet-class").getText();
/*System.out.println(servletName);
System.out.println(servletClass);*/
data.put(servletName, servletClass);
}
//9.判断元素的名称为servlet-mapping的元素节点
if("servlet-mapping".equals(element.getName())){
//10.分别获取servlet元素节点的servlet-name和servlet-class的值
String servletName = element.element("servlet-name").getText();
String urlPattern = element.element("url-pattern").getText();
//11.将servletName作为key来获取servletClass的值
String servletClass = data.get(servletName);
//12.将url-pattern作为key,servletClass作为value存到map中去
data.put(urlPattern, servletClass);
//13.移除servletName
data.remove(servletName);
}
}
//System.out.println(data);
} catch (DocumentException e) {
e.printStackTrace();
}
}
@Test
public void testMyServlet(){
try {
//1.模拟在浏览器输入一个url
String url1 = "/myServlet2";
//2.将urlPattern作为key来获取servletClass
String className = data.get(url1);
//3.通过servletClass获取字节码文件
Class clazz = Class.forName(className);
//4.通过字节码文件创建实例对象
Object obj = clazz.newInstance();
//5.通过字节码文件获取方法(两个参数:第一个是方法名称;第二个参数是方法的参数)
Method method = clazz.getMethod("service", null);
//6.调用invoke方法执行实例对象里面的方法(前面写的方法init)【两个参数:第一个是调用方法的实例对象,第二个是方法的实参】
method.invoke(obj, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
WEB11-XML.rar-源代码
共35个文件
java:9个
class:9个
xml:8个
需积分: 5 0 下载量 122 浏览量
2023-08-19
11:27:59
上传
评论
收藏 507KB RAR 举报
温馨提示
通过本内容的学习: 1,能够理解 XML 语言的概述 a, 说出 XML 语言的概念 b, 说出 XML 语言的作用 c, 说出 XML 语言的应用场景 2,能够使用 XML 文档的文档声明 a, 写出文档声明的 version 属性 b, 写出文档声明的 encoding 属性 c, 说出文档声明的 standalone 属性 3,能够写出正确格式的 XML 文档 a, 说出 XML 标签的语法 b, 写出 XML 的注释 c, 说出 XML 标签的属性语法 d, 说出 XML 标签的 CDATA 区 4,能够列举 DOM 和 SAX 解析的区别 a, 说出 DOM 解析的原理 b, 说出 SAX 解析的原理 c, 列举支持 DOM 和 SAX 解析的第三方工具 5,能够运用 DOM4J 解析 XML 文档 a, 说出 DOM4J 解析 XML 文档的开发流程 b, 列举 DOM4J 解析 XML 运用到的类 c, 列举 DOM4J 解析 XML 运用到的方法 6,能够运用 XML 语言来模拟 Tomcat 服务器 a, 运用 XML 语言写出配置文件文档 b, 运
资源推荐
资源详情
资源评论
收起资源包目录
WEB11_XML.rar (35个子文件)
WEB11_XML
lib
dom4j-1.6.1.jar 307KB
jaxen-1.1-beta-6.jar 239KB
.classpath 437B
.settings
org.eclipse.jdt.core.prefs 598B
src
cn
itheima
web
servlet
TestMyServlet.java 561B
IMyServlet.java 147B
MyServletImpl.java 371B
servlet1
MyServlet2.java 380B
web.xml 776B
TestMyServlet.java 1KB
MyServlet1.java 380B
TestMyServlet2.java 3KB
IMyServlet.java 148B
xml
dtd
web-app_2_3.dtd 756B
web.xml 396B
schema
web.xml 488B
web-app_2_5.xsd 2KB
dom4j
TestDom4j.java 1KB
Book.xml 209B
bin
cn
itheima
web
servlet
MyServletImpl.class 803B
IMyServlet.class 181B
TestMyServlet.class 1KB
servlet1
MyServlet2.class 809B
MyServlet1.class 809B
web.xml 776B
IMyServlet.class 182B
TestMyServlet.class 2KB
TestMyServlet2.class 3KB
xml
dtd
web-app_2_3.dtd 756B
web.xml 396B
schema
web.xml 488B
web-app_2_5.xsd 2KB
dom4j
TestDom4j.class 2KB
Book.xml 209B
.project 385B
共 35 条
- 1
资源评论
常驻客栈
- 粉丝: 1w+
- 资源: 1359
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司-人工智能的采纳程度面板数据(2003-2021年).xlsx
- 第5章spring-mvc请求映射处理
- 2023-04-06-项目笔记 - 第一百十六阶段 - 4.4.2.114全局变量的作用域-114 -2024.04.27
- app-release.apk.1
- soap json 等系列化方式
- c++的五子棋代码,在vs6.0上完美运行
- 基于Javaee的影视创作论坛的设计与实现.rar
- Python导出Mysql数据字典(部分表或全表)
- Java工具类实现输入一个路径,强创建路径、并且鉴权目标路径是否具备修改权限,用于增强程序的健壮性与稳定性,快速开发!
- 资源【STM32+HAL】三轴按键PS2摇杆
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功