javaWeb通过反射动态调用方法
BaseServlet
public abstract class BaseServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
Method declaredMethod = null;
try {
declaredMethod = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
declaredMethod.invoke(this,request,response);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
BookServlet
public class BookServlet extends BaseServlet {
BookService bookService = new BookServiceImpl();
public void delete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id = WebUtils.parseInt(request.getParameter("id"), 0);
bookService.deleteBookById(id);
response.sendRedirect(request.getContextPath() + "/manager/bookServlet?action=list");
}
public void list(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Book> books = bookService.queryBooks();
request.setAttribute("books",books);
request.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(request,response);
}
}