ServletDemo

来源:互联网 发布:网络创业培训体会 编辑:程序博客网 时间:2024/06/10 16:14

Servlet的实例 实现思路是:

定义一个解析XML的Servlet功能实例

主要是实现Servlet中的基本功能

1 首先是建立一个Servlet接口 定义三个功能 主要是定义 init() service() destory() 功能

package com.itheima.servletdemo;/* * 这个是一个模拟servlet接口 * **/public interface Servlet {void init();void service();void destory();}


2 其次建立一个ServletOne实例

用于实现Serlet接口中的抽象方法

package com.itheima.servletdemo.servlet;import com.itheima.servletdemo.Servlet;public class ServletOne implements Servlet{@Overridepublic void init() {// TODO Auto-generated method stubSystem.out.println("Servlet:inti");}@Overridepublic void service() {// TODO Auto-generated method stubSystem.out.println("Servlet:service");}@Overridepublic void destory() {// TODO Auto-generated method stubSystem.out.println("Servlet:destory");}}

定义另外一个实例 servletTow

package com.itheima.servletdemo.servlet;import com.itheima.servletdemo.Servlet;public class ServletTow implements Servlet {@Overridepublic void init() {// TODO Auto-generated method stubSystem.out.println("ServletTow.init()");}@Overridepublic void service() {// TODO Auto-generated method stubSystem.out.println("ServletTow.service()");}@Overridepublic void destory() {// TODO Auto-generated method stubSystem.out.println("ServletTow.destory()");}}

3 写一个用于配置servlet的XML文件web.xml


<?xml version="1.0" encoding="UTF-8"?><wab-app><servlet><servlet-name>Server1</servlet-name><servlet-class>com.itheima.servletdemo.servlet.ServletOne</servlet-class></servlet><servlet><servlet-name>Server2</servlet-name><servlet-class>com.itheima.servletdemo.servlet.ServletTow</servlet-class></servlet></wab-app>

4 由于对XML的解析需要用到DOM4J技术 所以我们建立lib文件夹 用于导入dom4j-1.6.1.jar包 然后通过导入到类中


5 建立一个main类接口 

其中为了简便 我们将对xml的解析和对函数的调用直接定义到main主函数中


package com.itheima.servletdemo;import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class MainClass {public static <SAReader> void main(String[] args) throws Exception {// 解析web.xml xml文件 从文件中 读取servlet-class// 1.获得document对象SAXReader reader = new SAXReader();Document document = reader.read(new File("web.xml"));// 2 获得根元素对象Element rootElement = document.getRootElement();// 3 获得所有的servlet元素List elements = rootElement.elements();// 遍历servlet元素集合for (int i = 0; i < elements.size(); i++) {Element servletElement = (Element) elements.get(i);// 获得所有的element并将获得的element强转Element类// 获取servlet元素中的所有的子元素合集List childElement = servletElement.elements();// 获得每一个子元素 如servlet name 、servlet classfor (int j = 0; j < childElement.size(); j++) {Element child = (Element) childElement.get(j);//System.out.println(child);// 做一个判断 如果字元素是我们想要的那么就运行classNameif ("servlet-class".equals(child.getName())){String className = child.getText();//System.out.println(className);runServlet(className);}}}}private static void runServlet(String className) throws Exception {// 采用反射的方式获取Servlet类 并执行serlet中方法@SuppressWarnings("unchecked")Class<Servlet> clazz = (Class<Servlet>) Class.forName(className);Servlet servlet = clazz.newInstance();/* * ////字节码文件.newInstance * 可以直接new出调用的字节码对象从而直接使用字节码对象中的方法和实例 *  * 可以调用获得的方法时要用到上面相同类型的实例对象 *  * 通过Class类中的newInstance()方法也可创建类的实例, * 其内部工作原理是先得无参的构造方法,再用构造方法创建实例对象。 */// 下面的方法 会在合适的时候去执行//System.out.println(servlet);servlet.init();servlet.service();servlet.destory();}}

运行结果如下:


ServletOne---:---inti
ServletOne---:---service
ServletOne---:---destory
ServletTow.init()
ServletTow.service()
ServletTow.destory()





0 0
原创粉丝点击