今天见一哥们儿写Servlet很怪。仔细一看,原来是利用反射来调用Servlet , 感觉不错,估计Struts就是这样封装的吧。
public class ItemsServlet extends HttpServlet {
/**
* 反射调用内部方法 url = ItemsServlet.do?flag=addItems&name=&price=
* @param flag = 调用的方法名称
*/
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String flag = request.getParameter("flag"); // 调用的方法名称
try {
Method method = this.getClass().getDeclaredMethod(
flag,
new Class[] { HttpServletRequest.class,
HttpServletResponse.class });
method.invoke(this, new Object[] { request, response });
} catch (Exception e) {
e.printStackTrace();
}
}
// 通过反射可以调用的方法.
public void addItems(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("addItems method is runned");
}
// 通过反射可以调用的方法.
public void getItems(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("getItems method is runned");
}
}