13.适配器
1.Servlet程序为了不再继承Servlet接口中不必要的方法。实现适配器
2.模仿写一个GenericServlet 适配器
import javax.servlet.*;
import java.io.IOException;
/**
* GenericServlet是一个适配器
* 以后无需实现Servlet接口,直接继承适配器,重写service方法。
*/
public abstract class GenericServlet implements Servlet
{
private ServletConfig config;
@Override
public final void init(ServletConfig servletConfig) throws ServletException {
this.config=servletConfig;
//final关键字不让子类复写该方法
// 若子类复写了,config就没有赋值,调用getServletConfig为空指针。
this.init();
}
/**
* 若在初始化时执行一段程序,建议复写无参init方法即可
*/
public void init(){}
@Override
public ServletConfig getServletConfig() {
return config;
}
@Override
public abstract void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException;
@Override
public String getServletInfo() {
return "";
}
@Override
public void destroy() {
}
//-------------------扩展方法,方便子类的使用-------------------------------------
public ServletContext getServletContext(){
return getServletConfig().getServletContext();
}
//-------------
}
3.继承适配器的实现子类
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends javax.servlet.GenericServlet
{
@Override
public void init() {
//初始化时执行的内容
System.out.println("helloServlet's init.....");
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.setContentType("text/html;charset=UTF-8");
PrintWriter out = servletResponse.getWriter();
out.println("Hello Word!");
}
}