BaseServlet响应处理
/**
* 中央控制器:统一控制客户端的请求跳转目标
*/
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();
}
}
}
具体使用
@WebServlet("/user")
public class UserServlet extends BaseServlet{
public String login(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行登录!");
//重定向
return "redirect:success.jsp";
}
public String reg(HttpServletRequest request, HttpServletResponse response){
System.out.println("执行注册");
//请求转发
// return "redirect:user?method=userList";
return userList(request, response);
}
public String userList(HttpServletRequest request,HttpServletResponse response){
System.out.println("查询用户列表");
return "redirect:list.jsp";
}
public void modifyPwd(HttpServletRequest request, HttpServletResponse response){
}
public void modifyStatus(HttpServletRequest request, HttpServletResponse response){
}
}