手写Webserver
一、反射
反射Reflection:把java类中的各种结构(方法、属性、构造器、类名)映射成一个个的java对象。利用反射技术可以对一个类进行解剖,反射是框架设计的灵魂
//在运行期间,一个类,只有一个Class对象产生 //1、源头。获取class对象 Class clz = Class.forName("包名.类名") //2、创建对象 com.shsxt.Student.stu = (com.shsxt.Student)clz.newInstance();
示例:
package com.kms.controller; import java.lang.reflect.InvocationTargetException; public class ReflectTest { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { //三种方式 //1、对象.getClass() Iphone iphone = new Iphone(); Class clz = iphone.getClass(); //2、类.class() clz = Iphone.class; //3、Class.forName(""包名。类名) clz = Class.forName("包名.类名"); //创建对象 /** * Iphone iphone2 = (Iphone)clz.newInstance(); */ Iphone iphone2 = (Iphone)clz.getConstructor().newInstance(); System.out.println(iphone2); } } class Iphone{ public Iphone(){ } }
二、xml解析
XML:Extensible Markup Language,可扩展标记语言,作为数据的一种存储格式或用于存储软件的参数,程序解析此配置文件,就可以达到不修改代码技能更改程序的目的
<?xml version="1.0" encoding="UTF-8"?> <person> <person> <name>至尊宝</name> <age>9000</age> </person> </person>
SAX解析:
package com.kms.controller;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
public class ReflectTest {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory factory = SAXParserFactory.newInstance();
//2、从解析工厂获取解析器
SAXParser parse = factory.newSAXParser();
//加载文档 Document 注册处理器
//编写处理器
PHandler handler = new PHandler();
parse.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("person.xml"),handler);
}
}
class PHandler extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length) throws SAXException{
String contens = new String(ch,start,length);
if (contens.length()>0){
System.out.println("内容内"+contens);
}else {
System.out.println("内容为->"+"空");
}
}
@Override
public void startDocument() throws SAXException {
System.out.println("---解析文档开始----");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("---解析开始----");
}
@Override
public void endDocument() throws SAXException {
System.out.println("---解析结束-----");
}
}
未完。。。