实现一个servlet处理多个请求
一开始我们学习servlet的时候都是一个servlet处理一个请求,这样导致发现最后会创建很多类出来,不好维护。这里我们用反射来解决这个问题了,用一个servlet处理多个请求。
首先创建一个基础servlet—BaseServlet
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取请求的URI地址信息
String methodName=req.getParameter("method");
Method method = null;
try {
// 使用反射机制获取在本类中声明了的方法
method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
// 执行方法
method.invoke(this, req, resp);
} catch (Exception e) {
throw new RuntimeException("调用方法出错!");
}
}
}
再写一个:UserServlet
@WebServlet("/user.do")
public class UserServlet extends BaseServlet{
private void queryUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("执行queryUser方法");
}
}
最后我们用http://localhost:8080/user.do?method=queryUser 就可以访问到UserServlet中的queryUser方法 。
这样我们还可以写deleteUser方法用http://localhost:8080/user.do?method=deteleUser来访问