标签具有的信息:
1 定义标签库的书写规范的文档--tld
2 标签处理类
自定义标签:
1 编写tld文档,定义标签书写规范
2 编写标签处理类 ,集成SimpleTagSupport,覆盖其中的doTag方法。
如果标签有属性,则在处理类中需要提供同名的私有属性,
及其对应的set方法
3 将标签定义文档配置给web容器
web.xml
<jsp-config>
<taglib>
<taglib-uri>http://yangxp.king.com.cn</taglib-uri>
<taglib-location>/WEB-INF/yangxp.tld</taglib-location>
</taglib>
</jsp-config>
<yangxp:sayHello name="mary"></yangxp:sayHello>
==>
Hello!mary
PrintWriter: servlet--->页面
JspWriter : jsp--->[servlet--->]jsp
1 <yangxp:sayHello name="mary"></yangxp:sayHello>
--------------------------------------------------------------------
直接输出信息:
JspWriter out = this.getJspContext().getOut();
out.println(....);
--------------------------------------------------------------------
2 <yangxp:forEach begin="" end="" step="">
hehe
</yangxp:forEach>
--------------------------------------------------------------------
JspFragment info = this.getJspBody();
info.invoke(null);
获取标签体的内容信息,将信息封装在JspFragment对象中
JspFragment调用其invoke方法,是将内部封装的信息传递给参数中的流输出
如果参数为Null,则默认传给JspWriter输出,即原样输出到页面中
--------------------------------------------------------------------
3 <yangxp:convert type="lower">
Hello!HeHe
</yangxp:convert>
--------------------------------------------------------------------
JspFragment info = this.getJspBody();
//创建一个将信息输出到临时内存的流
StringWriter out = new StringWriter();
//将JspFragment中封装的标签体信息,传递给StringWriter内部的缓存中
info.invoke(out);
//将缓存中的信息取出来
String str = out.toString();
//对信息再加工
...
//将加工之后的信息输出到页面中
this.getJspContext().getout().println(...);
--------------------------------------------------------------------
反射:
C --show(){
A a= new A();
a.show();
}
A --show(){
B b = new B();
b.show();
}
B --show()
String classPath = "com.sinojava.stuMgmt.web.servlet.AddServlet"
new classsPath();
tomcat--->web程序
Class.forName("oracle.jdbc.driver.OracleDirver"); --反射
特点:
在被调用信息开发完成之前,即可开发调用者的流程
new oracle.jdbc.driver.OracleDirver(); --普通创建对象方式
缺陷:
调用着必须依赖于被调用者开发完成之后才能开发
1
class AddTest{
public int add(){
System.out.println(2);
}
}
2
class Test{
public void show(){
AddTest a = new AddTest();
a.add();
}
}
什么是面向对象:
万物皆对象
相对面向过程:
各司其职
类---》对象
张三 李四---》学生类
-----》人类
陈彦年 老徐-》老师类
---》生物类
小白 ---》狗类
-----》动物类
咪咪 ---》猫类
---------------------------------------------------------------
类中包含信息: ---》Class 类的抽象概念
属性 ---》Filed 属性的抽象概念
方法 ---》Method方法的抽象概念
构造方法 ---》Constructor构造方法的抽象概念
---------------------------------------------------------------
反射机制的运行流程:
1 将字符串表示的类路径加载到jvm中
2 获取调用类的构造方法类
3 使用构造方法类创建对象
4 获取调用类中的方法类
5 使用对象调用方法
E:/Tomcat/apache-tomcat-5.5.12/webapps/stuMgmt/WEB-INF/classes/com/sinojava/stuMgmt/web/control/ControllerServlet
==>../../../../../../config.xml
E:/Tomcat/apache-tomcat-5.5.12/webapps/stuMgmt/WEB-INF/config.xml