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!");
}
}