/**
-
中央控制器:统一控制客户端的请求跳转目标
-
@Author mrchai 2020/8/27 8:58
*/
public class BaseServlet extends HttpServlet {@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取需要执行的方法名称
String methodName = req.getParameter(“method”);
try {
//根据方法名获取需要执行的方法对象
Method method = this.getClass().getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
//执行servlet目标方法,并且获取方法的返回值
Object obj = method.invoke(this,req,resp);
//当返回值不为null时才处理跳转
if(Objects.nonNull(obj)){
//将返回值转换为String类型
String target = obj.toString();
if(target.startsWith(“redirect:”)){
//重定向
target = target.substring(“redirect:”.length());
resp.sendRedirect(target);
}else{
//请求转发
req.getRequestDispatcher(target).forward(req,resp);
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}