——WebApp

【——WebApp】我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述——WebApp相关的知识,希望能为你提供帮助。

1 package my.tomcat2; 2 3 import org.xml.sax.SAXException; 4 5 import javax.xml.parsers.ParserConfigurationException; 6 import javax.xml.parsers.SAXParser; 7 import javax.xml.parsers.SAXParserFactory; 8 import java.io.IOException; 9 import java.util.List; 10 import java.util.Map; 11 12 public class WebApp { 13private static ServletContext servletContext; 14 15static { 16try { 17//创建一个 解析工厂 18SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); 19//生产出一个 解析器 20SAXParser saxParser = saxParserFactory.newSAXParser(); 21//获得一个 文档处理器 22WebHandler webHandler = new WebHandler(); 23//需要解析哪个文件,并且用什么 文档处理器 来进行处理 24saxParser.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("web.xml"), webHandler); 25 26//这里就不需要我们手动的将 信息 存入 Map中去 27//将 webHandler 中的 Entitys 存入到 servlet 中去 28servletContext = new ServletContext(); 29Map< String, String> servlet = servletContext.getServlet(); 30for(Entity temp : webHandler.getEntities()){ 31servlet.put(temp.getServletName(), temp.getServletClass()); 32} 33//将 WebHandler 中的 Mappings 存入到 mapping 中去 34Map< String, String> mapping = servletContext.getMapping(); 35for(Mapping temp : webHandler.getMappings()){ 36List< String> urls = temp.getUrlList(); 37for(String str : urls){ 38mapping.put(str, temp.getServletName()); 39} 40} 41} catch (SAXException e) { 42e.printStackTrace(); 43} catch (IOException e) { 44e.printStackTrace(); 45} catch (ParserConfigurationException e) { 46e.printStackTrace(); 47} 48 49} 50 51//通过 URL 获取 Servlet,这里用到了 多态,反射 52public static Servlet getServlet(String url) throws ClassNotFoundException, IllegalAccessException, InstantiationException { 53if (url == null || url.trim().equals("")) { 54return null; 55} else { 56String reflect = servletContext.getServlet().get(servletContext.getMapping().get(url)); 57return (Servlet) Class.forName(reflect).newInstance(); 58} 59} 60 }

 

    推荐阅读