BaseServlet为某个Servlet模块需要继承的对象
import java.io.IOException;
import java.lang.reflect.Method;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("all")
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
try {
//1、获得请求的method的名称
String methodName = req.getParameter("method");
//2、获得当前被访问的对象的字节码对象
Class clazz = this.getClass();//ProductServlet.class ---- UserServlet.class
//3、获得当前字节码对象的中的指定方法
Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
//4、执行相应功能方法
method.invoke(this, req,resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
那么,可以将Servlet写在一起,指定某个方法名即可代替原来的Servlet,避免过多的Servlet出现
public class ProductServlet extends BaseServlet {
public void findAllCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException {
//代码
}
}在请求servlet时,只需要传递一个method参数即可调用相应的servlet方法了!