Servlet的优化.GenericServlet

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet的优化.GenericServlet相关的知识,希望对你有一定的参考价值。

如何更好的使用servlet?GernericServlet可以由自己仿照一个出来,下面就是介绍了如何写这样的一个类

1.init方法 妥善的保存config对象
2.空参init方法,为了防止开发人员重写 原生init方法
3.service方法空实现=> 声明城抽象
4.destory方法空实现
5.实现getServletInfo,getServletConfig
6.实现了servletConfig接口. 接口中的方法直接调用config实现类实现.

代码实现

package ming.com.hello;

import java.io.IOException;
import java.util.Enumeration;

import javax.ejb.Init;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/*
* 模仿写一个GenericServlet类
*/
public abstract class GenericServlet implements Servlet,ServletConfig{

private ServletConfig config; //固定写法
@Override
public void destroy() {
}

@Override
public ServletConfig getServletConfig() {
return config;
}

@Override
public String getServletInfo() {
return null;
}

@Override
public void init(ServletConfig config) throws ServletException {
this.config=config;
this.init();
}

//添加一个空参应用方法,来避免用户调用的时候讲 有参引用方法覆盖,
//相当于用户重写空参init()方法即可完成初始化
public void init() throws ServletException{

}

//将此 方法声明为抽象方法,强迫用户去实现这个方法,因为这个方法是你调用这个类的目的,否则没有意义
@Override
public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

@Override
public String getInitParameter(String name) {
return config.getInitParameter(name);
}

@Override
public Enumeration<String> getInitParameterNames() {
return config.getInitParameterNames();
}

@Override
public ServletContext getServletContext() {
return config.getServletContext();
}

@Override
public String getServletName() {
return config.getServletName();
}

}

注意:1、加上一个无参构造方法,来避免用户调用的时候调用有参构造方法覆盖,
             相当于用户重写空参init()方法即可完成初始化

         2、将server()方法声明为抽象方法,强迫用户去实现这个方法,因为这个方法是你调用这个类的目的,否则没有意义

         3、为了让用户更加方便的使用ServletConfig的四个方法,在这个类中实现这个接口,完善这几个方法

 

以上是关于Servlet的优化.GenericServlet的主要内容,如果未能解决你的问题,请参考以下文章

servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)

Servlet,GenericServlet和HttpServlet的继承关系

GenericServlet类

GenericServlet类

适配器模式改造Servlet(GenericServlet)

Servlet接口GenericServlet类HttpServlet类