用途:

  编写自定义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()无参方法

  具体代码如下:

 public abstract class MyGenericServlet implements Servlet,ServletConfig {

     protected ServletConfig config;       //定义成员变量
@Override
public void init(ServletConfig config) throws ServletException {
this.config=config; //config赋值
init();
} public void init(){ //为了子类重写,创建无参方法init() } @Override
public ServletConfig getServletConfig() {
return config; //返回config
} @Override
public abstract void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException ; //抽象方法 @Override
public String getServletInfo() {
return null;
} @Override
public void destroy() { } @Override
public String getServletName() {
return config.getServletName(); //返回config.getServletName()的结果,子类直接调用该方法相当于调用config.getServletName()
} @Override
public ServletContext getServletContext() {
return config.getServletContext();
} @Override
public String getInitParameter(String name) {
return config.getInitParameter(name);
} @Override
public Enumeration<String> getInitParameterNames() {
return config.getInitParameterNames();
}
}

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

 public class MyServlet1 extends MyGenericServlet {

     @Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
String name = getServletName(); //直接调用,不需要config.getServletName()
System.out.println(name);
} }

编写自定义GenericServlet的更多相关文章

  1. 用mel编写自定义节点的属性编辑器界面

    用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式 // 初始化节点时调用 global proc initControl(string $attrNa ...

  2. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  3. RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib

    使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...

  4. SpringBoot编写自定义的starter 专题

    What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...

  5. SpringBoot编写自定义配置信息

    ⒈编写自定义配置类 1.浏览器配置 package cn.coreqi.security.properties; public class BrowserProperties { private St ...

  6. R语言-编写自定义函数 ZZ

    一.函数构造器 每一个R函数都包括三个部分:函数名,程序主体以及参数集合,在编写自定义R函数时,需要将三个部分各自储存在一个R对象中.这里需要使用function函数,形如: my_function& ...

  7. Django 编写自定义的 404 / 500 报错界面

    Django 编写自定义的 404 / 500 报错界面 1. 首先 setting.py 文件中的 debug 参数设置成 false ,不启用调试. DEBUG = False 2. 在 temp ...

  8. [翻译]Writing Custom Wizards 编写自定义的向导

    Writing Custom Wizards  编写自定义的向导   You can extend FastReport's functionality with the help of custom ...

  9. Hadoop生态圈-hive编写自定义函数

    Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

随机推荐

  1. 4 Python 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  2. hibernate复习第(4)天

    1.hibernate的映射类型.hbm.xml中property中的type属性.这个type属性是表示持久化类中的属性对应数据库中的什么数据类型,用来构建一种映射type的可选值:hibernat ...

  3. codeforces 632B B. Alice, Bob, Two Teams(暴力)

    B. Alice, Bob, Two Teams time limit per test 1.5 seconds memory limit per test 256 megabytes input s ...

  4. 判断CPU是大端还是小端

    #include "stdafx.h" #include <iostream> using namespace std; /* #大端模式(Big_endian):字数 ...

  5. freeMarker(一)——freeMarker简介

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net FreeMarker简介: FreeMarker 是一款 模板引擎: ...

  6. bzoj3573米特运输

    题意: 给定一棵树上的边和点权 改动点权使得每个父节点u容量为子节点容量的d[u](子节点个数)倍 考察点: 1.这是一道语文题 2.点权很大 直接算会爆 有一种优化办法:取log(醉 这是什么优化) ...

  7. POJ2891Strange Way to Express Integers (线性同余方程组)

    Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative ...

  8. 立方体贴图(Cubemap)

    http://blog.csdn.net/asdjy123/article/details/51190643 点击打开链接 好东西保存方便查看 立方体贴图(Cubemap) 原文 Cubemaps 作 ...

  9. 汇编题目:在屏幕中间显示a-z的所有字母,按ESC键改变字符颜色

    在屏幕中显示a-z字母,按ESC键改变字符颜色. ;程序功能:在屏幕中间同一点显示a-z的所有字符 ; 1.使用cpu循环空运行实现延迟 ; 2.按ESC键改变正在循环显示的字符的颜色 ; 3.程序完 ...

  10. 使用Visual Studio进行单元测试-Part1

    写在开头:Coding ain't done until all the tests run. No unit test no BB. -------------------------------- ...