总结:我刚学这章时,它把service()方法用abstract抽象了,然后我突然忘了抽象是怎么用了哈,然后百度查了查,想起来它是父类去定义抽象方法,专门让子类来实现,抽象方法没有方法体。然后在service()方法里调用getServletConfig()方法去获取config对象时,它用了个this.getServletConfig();我又忘了this关键字的用法,然后回忆起来,在一个类的内部,成员方法之间的互相调用时也可以使用“this.方法名(参数)”来进行引用,只是所有这样的引用中this都可以省略,哈哈忘了这么多。最后我就基本定义了GenericServlet,并且让它实现了ServletConfig接口,以便在service()方法中可以用this关键字直接去调用ServletConfig的方法。
代码附上:
package com.bjpowernode.servlets;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//缺省适配器设计模式
public abstract class GenericServlet implements Servlet, ServletConfig {
private ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;// 接受实参
// System.out.println(config);
}
@Override
public ServletConfig getServletConfig() {
return config;
}
// 抽象方法,专门让子类来实现
@Override
public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
@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();
}
}
package com.bjpowernode.servlets;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SomeServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("执行SomeServlet的service()方法");
/* ServletConfig sc = this.getServletConfig();
String param = sc.getInitParameter("company");
System.out.println(param);*/
String param = this.getInitParameter("company");
String servletname = this.getServletName();
System.out.println(param);
System.out.println(servletname);
}
}