今天见一哥们儿写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");
}
}
本文介绍了一种使用反射机制调用Servlet内部方法的技术。通过获取请求参数中的方法名,动态调用相应的方法实现不同的业务逻辑。
3098

被折叠的 条评论
为什么被折叠?



