JAVAEE_Servlet_09_Adapter适配器GenericServlet
适配器 GenericServlet
* 适配器 (Adapter)
- 适配器的作用?
1.我们目前所有的Servlet类都直接实现了javax.servlet.Servlet接口,但是该接口中有些方法是我们暂时不需要的,我们可能只需要编写service方法,直接实现Servlet接口的话,显得代码丑陋,我们有必要添加一
个适配器抽象类,让这个抽象类去实现所有的方法,然后将service方法设置成为抽象方法,这样的话以后所有的servlet类不再去直接实现Servlet接口,而是去继承适配器抽象类,然后只需要重写service方法。
2. 适配器除了可以让代码优雅以外,我们还可以在适配器中提供大量方法,子类继承以后可以在子类中直接使用,进而方便编程。
- 创建适配器?
在Web中创建一个GenericStrvlet抽象类,该抽象类去实现Servlet接口,然后将service方法设置为抽象方法。 该类就是一个适配器,以后不需要直接实现Servlet接口,去继承这个适配器即可,重写service方法。
- 因为原始的init()方法为了保证方法的安全性,用了final修饰,所以子类不能够再继承原始的init()方法了。如果以后程序需要在Servlet对象初始化的时刻执行一段代码怎么办呢?
重写父类的init()方法,但是父类的init()方法中已经有了代码(获取了ServletConfig对象了),如果在子类中重写,那面父类中的init()方法就无效了,那么势必会造成程序问题,况且父类中的init方法为了防止重写,一般都会用final修饰,那就不
能重写了。这个时候怎么办呢?
可以在父类中再写一个init()方法,然后在子类中重写这个新的init()方法,在父类的原始init()方法中调用这第二个init()方法 this.init() 这样就解决了。
* Sun公司已经写好了 javax.servlet.GenericServlet 适配器类,可以直接调用。它即实现了Servlet也实现了ServletConfig
* 代码 写一个GenericServlet适配器
```
import javax.servlet.*;
import java.io.IOException;
/**
* Generic抽象类是一个适配器
*/
public abstract class GerericServlet implements Servlet {
private ServletConfig config;
@Override
public final void init(ServletConfig servletConfig) throws ServletException {
this.config=servletConfig;
this.init();
}
/**
* 若在初始化时刻需要执行一段代码,那面重写该init()方法
*/
public void init(){
}
@Override
public abstract void service(ServletRequest request, ServletResponse response);
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return config;
}
@Override
public String getServletInfo() {
return "";
}
/**
* 扩展方法
* @return 返回ServletContext对象
*/
public ServletContext getServletContext(){
return getServletConfig().getServletContext();
}
}
JAVAEE_Servlet_09_Adapter适配器GenericServlet的更多相关文章
- 适配器设计模式及GenericServlet(九)
一共两个知识点:1.Servlet 里面已经有适配器了,名字叫:GenericServlet. 2.什么是适配器模式. 如果这个接口里面有好多方法,那创建A/B/C这个三个类的时候如果必须继 ...
- Android—万能ListView适配器
ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...
- 打造android偷懒神器———ListView的万能适配器
如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...
- 打造android偷懒神器———RecyclerView的万能适配器
转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...
- ListView和Adapter数据适配器的简单介绍
ListView 显示大量相同格式数据 常用属性: listSelector listView每项在选中.按下等不同状态时的Drawable divider ...
- Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器
一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...
- Adapt适配器
为接口提供所有的空实现,让使用者仅仅覆盖需要的部分: 本思想肯定有问题,慢慢考究 frame.addWindowListener(new WindowAdapter() { @Override pub ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- 【Android自学日记】两种适配器的使用
ArrayAdapter适配器: (1)用于显示基本的文字内容 (2)基本使用过程:新建适配器---创建或加载数据源---适配器加载数据源---视图加载适配器 ArrayAdapter(上下文,当前L ...
随机推荐
- 上天的源码要不要——GitHub 热点速览 v.21.08
作者:HelloGitHub-小鱼干 前几天,"机智号" 所用的飞行软件框架 F´ 被 NASA 开源了,想看 F´ 这个嵌入式的代码不妨考虑下 Sourcetrail 这个神器, ...
- 简单梳理下 Vue3 的新特性
在 Vue3 测试版刚刚发布的时候,我就学习了下 Composition API,但没想到正式版时隔一年多才出来,看了一下发现还是增加了不少新特性的,在这里我就将它们一一梳理一遍. 本文章只详细阐述 ...
- Python3.x 基础练习题100例(61-70)
练习61: 题目: 打印出杨辉三角形. 程序: if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in ...
- three.js cannon.js物理引擎之约束(二)
今天郭先生继续讲cannon.js的物理约束,之前的一篇文章曾简单的提及过PointToPointConstraint约束,那么今天详细的说一说cannon.js的约束和使用方法.在线案例请点击博客原 ...
- PAT-1066(Root of AVL Tree)Java语言实现
Root of AVL Tree PAT-1066 这是关于AVL即二叉平衡查找树的基本操作,包括旋转和插入 这里的数据结构主要在原来的基础上加上节点的高度信息. import java.util.* ...
- 2020年12月-第02阶段-前端基础-CSS Day03
CSS Day03 盒子模型(CSS重点) css学习三大重点: css 盒子模型 . 浮动 . 定位 主题思路: 理解: 1.能说出盒子模型有那四部分组成 2.能说出内边距的作用以及对盒子的影响 3 ...
- 选择 FreeBSD 而不是 Linux 的技术性原因2
ZFSZFS 文件系统是 FreeBSD 上的一等公民.这不仅意味着可以在 ZFS 上安装根目录,安装程序也支持这一点,而且还意味着很多基础系统工具都已经紧密地集成或构建了对 ZFS 的支持.在 Fr ...
- 任务4 PHP扩展模块安装
/usr/local/php/bin/php -m //如何查看PHP加载了哪些模块 #cd /usr/local/src #wget http://pecl.php.net/get/redis-2 ...
- P2014 选课 题解(树形DP)
题目链接 P2014 选课 解题思路 树形动归,用\(f[i][j]\)表示以\(i\)为根,\(j\)个子节点(不包括自己)的最大学分 首先根据题意建图,用根节点\(0\)将森林连成树. 从根节点开 ...
- 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念
深入理解Java并发框架AQS系列(一):线程 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念 一.AQS框架简介 AQS诞生于Jdk1.5,在当时低效且功能单一的synchroni ...