适配器 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的更多相关文章

  1. 适配器设计模式及GenericServlet(九)

    一共两个知识点:1.Servlet 里面已经有适配器了,名字叫:GenericServlet.      2.什么是适配器模式. 如果这个接口里面有好多方法,那创建A/B/C这个三个类的时候如果必须继 ...

  2. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  3. 打造android偷懒神器———ListView的万能适配器

    如果你去做任何一个项目,我相信你都会跟我有一样的经历,最最普遍的就是列表显示ListView,当然,写N个自定义的适配器也是情理之中.虽说程序员本身就是搬砖,做这些枯燥无味的重复的事情也是理所当然,但 ...

  4. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  5. ListView和Adapter数据适配器的简单介绍

    ListView 显示大量相同格式数据 常用属性: listSelector            listView每项在选中.按下等不同状态时的Drawable divider            ...

  6. Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器

    一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...

  7. Adapt适配器

    为接口提供所有的空实现,让使用者仅仅覆盖需要的部分: 本思想肯定有问题,慢慢考究 frame.addWindowListener(new WindowAdapter() { @Override pub ...

  8. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  9. 【Android自学日记】两种适配器的使用

    ArrayAdapter适配器: (1)用于显示基本的文字内容 (2)基本使用过程:新建适配器---创建或加载数据源---适配器加载数据源---视图加载适配器 ArrayAdapter(上下文,当前L ...

随机推荐

  1. winform捕捉全局异常

    /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { try { //设置应 ...

  2. 我ssh框架遇到报错及处理方式

    Exception encountered during context initialization - cancelling refresh attempt 修改hbm.xml后遇到的问题,错误可 ...

  3. 你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床

    你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床 经过前面两弹的介绍,相信大家对图床都不陌生了吧, 但是小魔童觉得这样做法还是不方便,使用 ...

  4. 如何用Eggjs从零开始开发一个项目(3)

    上一篇中我们编写了用户注册登录.登录的代码,学习了如何进行用户的认证(JWT),如何安全地存储用的密码(hash).这一篇我们有以下2个任务: 获取token中的数据: 通过model来同步数据库. ...

  5. Django练习遇到的错误记录

    _reverse_with_prefix() argument after ** must be a mapping, not set 错误代码: def get_absolute_url(self) ...

  6. uni-app创建项目

    下载 HBuilderX   下载地址(https://www.dcloud.io/hbuilderx.html) HBuilderX是通用的前端开发工具,但为uni-app做了特别强化. 创建uni ...

  7. 剑指 Offer 51. 数组中的逆序对 + 归并排序 + 树状数组

    剑指 Offer 51. 数组中的逆序对 Offer_51 题目描述 方法一:暴力法(双层循环,超时) package com.walegarrett.offer; /** * @Author Wal ...

  8. Linux速通01 操作系统安装及简介

    操作系统 # a)操作系统的定义:操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. # 操作系统分为 系统调用接口 和 系统内核 # b)操作系统内核的定义 ...

  9. sprintgboot+springsecurity的跨域问题,

    整个项目是使用前后端分离的形式开发,登录接口部分出现了问题, 重写了security的登录接口,返回json数据 到这一步已经没有没有问题了,使用postman测试,也可以看到接口返回的结果,但是使用 ...

  10. Java BasicNameValuePair怎么传数组类型的参数?

    BasicNameValuePair 传数组的话可以这样传 map.put("ids[]", 1); map.put("ids[]", 2);