编写自定义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()无参方法
具体代码如下:
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的更多相关文章
- 用mel编写自定义节点的属性编辑器界面
用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式 // 初始化节点时调用 global proc initControl(string $attrNa ...
- django “如何”系列4:如何编写自定义模板标签和过滤器
django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...
- RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib
使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...
- SpringBoot编写自定义的starter 专题
What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...
- SpringBoot编写自定义配置信息
⒈编写自定义配置类 1.浏览器配置 package cn.coreqi.security.properties; public class BrowserProperties { private St ...
- R语言-编写自定义函数 ZZ
一.函数构造器 每一个R函数都包括三个部分:函数名,程序主体以及参数集合,在编写自定义R函数时,需要将三个部分各自储存在一个R对象中.这里需要使用function函数,形如: my_function& ...
- Django 编写自定义的 404 / 500 报错界面
Django 编写自定义的 404 / 500 报错界面 1. 首先 setting.py 文件中的 debug 参数设置成 false ,不启用调试. DEBUG = False 2. 在 temp ...
- [翻译]Writing Custom Wizards 编写自定义的向导
Writing Custom Wizards 编写自定义的向导 You can extend FastReport's functionality with the help of custom ...
- Hadoop生态圈-hive编写自定义函数
Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
随机推荐
- Java企业微信开发_02_通讯录同步
一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步” ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取 ...
- ATL实现COM组件
参考文献:https://blog.csdn.net/Marcus2006/article/details/41978799 ATL实现COM组件比较简单,关键是在程序中如何调用该组件. vs2010 ...
- 设置Suse linux 用户远程登录超时时间
执行 # echo "export TMOUT=900" >> /etc/profile 查询设置结果: # cat /etc/profile|grep TMOU ...
- C++ STL, next_permutation用法。
next_permutation 将按字母表顺序生成给定序列的下一个较大的序列,直到整个序列为 #include"iostream" #include"algorithm ...
- unity中mesh属性的uv坐标讨论
http://blog.sina.com.cn/s/blog_427cf00b0102vp0j.html 之前在做连连看游戏中,也用到贴图坐标,当时我们讲到,不管是平铺(Tiling)还是偏移(Off ...
- [转]升级Flash Builder 4.6中的Flash Player版本
Adobe自发布Flash Builder 4.6后,就暂停了Flash Builder新版本的发布.但AIR和FlashPlayer版本仍然保持不断的更新.在下载新的AIRSDK并覆盖到Flash ...
- Hibernate Validator--创建自己的约束规则
尽管Bean Validation API定义了一大堆标准的约束条件, 但是肯定还是有这些约束不能满足我们需求的时候, 在这种情况下, 你可以根据你的特定的校验需求来创建自己的约束条件. 3.1. 创 ...
- ceph学习之CRUSH
CRUSH的全称是Controlled Replication Under Scalable Hashing,是ceph数据存储的分布式选择算法,也是ceph存储引擎的核心.在之前的博客里介绍过,ce ...
- Java常见设计模式之适配器模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- cdh ntpdate 问题
ntpdc -np 一个正常一个不正常