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 ...
随机推荐
- python进阶(3)序列化与反序列化
序列化与反序列化 按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化:反之,从文件的字节恢复到内存,就是反序列化: pytho ...
- oracle创建和删除序列
创建序列语法: CREATE SEQUENCE 序列名 [START WITH n] [INCREMENT BY n] [{MINVALUE n}] [{MAXVALUE n|NOMAXVALUE}] ...
- Java基础语法:包机制
为了更好地组织类,Java 提供了包(package)机制. 这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class).接口(interface).枚举(enumerations)和注释( ...
- Traefik-v2.x快速入门
一.概述 traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router.至于使用它的原因则基于以下几点 无须重启即可更新配置 自动的服务发现与负载均衡 与 docke ...
- Excel技巧—开始菜单之格式刷六大功能
转: Excel技巧-开始菜单之格式刷六大功能 点赞再看,养成习惯:千里之行,始于足下. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com ...
- 【小菜学网络】MTU
不同的以太网接入设备,一帧能传输的数据量是有差异的. 普通的以太网卡,一帧最多能够传输 1500 字节的数据:而某些虚拟设备,传输能力要打些折扣.此外,链路层除了以太网还有其他协议,这些协议中数据帧传 ...
- POJ-1847(SPFA+Vector和PriorityQueue优化的dijstra算法)
Tram POJ-1847 这里其实没有必要使用SPFA算法,但是为了巩固知识,还是用了.也可以使用dijikstra算法. #include<iostream> #include< ...
- vue-cli脚手架安装及注意事项
1.下载nodejs 链接:https://nodejs.org/en/直接下载电脑对应的版本即可. 13.5网上说不大稳定(一个表示①推荐用户版本,②最新版本) 2.安装nodejs 建议在D或者E ...
- SEO优化基础知识
一.标点符号的重要性 很多人忽略了标点符号对爬虫的重要性,爬虫并不是对所有标点符号都爬取,下面列举几个对关键字分隔有帮助的符号. 1.1.逗号( , ) ==> 千万千万要使用英文的逗号,而不是 ...
- PTA 链表逆置
6-3 链表逆置 (20 分) 本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头.链表结点定义如下: struct ListNode { int data; struct L ...