zoukankan      html  css  js  c++  java
  • 编写自定义GenericServlet

    用途:

      编写自定义GenericServlet类后,子类只需继承这个类,就可以直接使用ServletConfig的config对象和ServletConfig接口的方法,而不需要init()方法获取config对象,也不需要通过config对象调用ServletConfig接口的方法,直接通过方法名()就可以调用

      具体步骤如下:

        1、新建类MyGenericServlet,实现Servlet,ServletConfig接口

        2、重写父类的相关方法

        3、将service()方法定义为抽象(abstract)方法,将类定义为抽象类,以便在子类予以service()方法新的实现

        4、定义MyGenericServlet的成员变量protected ServletConfig config,并通过初始化方法init(ServletConfig config)赋值this.config=config;

        5、重载init()的无参方法,当子类需要在初始化时执行某些操作时调用,并通过init(ServletConfig config)方法调用init()无参方法

       具体代码如下:

     1 public abstract class MyGenericServlet implements Servlet,ServletConfig {
     2 
     3     protected ServletConfig config;       //定义成员变量
     4     @Override
     5     public void init(ServletConfig config) throws ServletException {
     6         this.config=config;         //config赋值
     7         init();
     8     }
     9     
    10     public void init(){           //为了子类重写,创建无参方法init()
    11         
    12     }
    13 
    14     @Override
    15     public ServletConfig getServletConfig() {
    16         return config;               //返回config
    17     }
    18 
    19     @Override
    20     public abstract void service(ServletRequest req, ServletResponse res)
    21             throws ServletException, IOException ;                //抽象方法
    22 
    23     @Override
    24     public String getServletInfo() {
    25         return null;
    26     }
    27 
    28     @Override
    29     public void destroy() {       
    30         
    31     }
    32 
    33     @Override
    34     public String getServletName() {
    35         return config.getServletName();       //返回config.getServletName()的结果,子类直接调用该方法相当于调用config.getServletName()
    36     }
    37 
    38     @Override
    39     public ServletContext getServletContext() {
    40         return config.getServletContext();
    41     }
    42 
    43     @Override
    44     public String getInitParameter(String name) {
    45         return config.getInitParameter(name);
    46     }
    47 
    48     @Override
    49     public Enumeration<String> getInitParameterNames() {
    50         return config.getInitParameterNames();
    51     }
    52 }

      子类只需继承GenericServlet类,就可以通过方法名直接调用方法

     1 public class MyServlet1 extends MyGenericServlet {
     2 
     3     @Override
     4     public void service(ServletRequest req, ServletResponse res)
     5             throws ServletException, IOException {
     6         String name = getServletName();           //直接调用,不需要config.getServletName()
     7         System.out.println(name);
     8     }
     9 
    10 }
  • 相关阅读:
    UIView添加手势
    UIView常见属性设置汇总
    关于页面传值
    有关segue的简介
    alloc
    如何定义静态方法
    一座小城
    清明
    开通博客
    iOS学习之界面间传值
  • 原文地址:https://www.cnblogs.com/java-zmj/p/7832951.html
Copyright © 2011-2022 走看看