使用反射简单模拟MVC对请求的处理过程 @WebServlet("/")public class DispatcherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("application/json;charset=utf-8"); String path = req.getServletPath(); System.out.println("path:"+path); String className = path.substring(1, path.lastIndexOf("/")); String methodName = path.substring(path.lastIndexOf("/") + 1); System.out.println("className:"+className); System.out.println("methodName:"+methodName); Class clazz = null; Object controller = null; try { clazz = Class.forName("Controller." + className); System.out.println("创建controller对象:"+"controller."+className); controller = clazz.newInstance(); Method method = clazz.getMethod(methodName, new Class[] {HttpServletRequest.class}); Object result = method.invoke(controller, new Object[]{req}); System.out.println("//调用controller中的方法:"+methodName); ObjectMapper om = new ObjectMapper(); PrintWriter writer = resp.getWriter(); writer.print(om.writeValueAsString(result)); System.out.println("//执行结果:"+om.writeValueAsString(result)); } catch (Exception e) { e.printStackTrace(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}