未解决 Method method = getClass().getDeclaredMethod ,谁的getClass() ?
如题:
Method method = getClass().getDeclaredMethod ,getClass()前面省略的 “this. ” 是指的 CustomerServlet 吗?
JSP 页面源码:
<a href="Query.do">Query</a>
<br><br>
<a href="Delete.do">Delete</a>
以下是 CustomerServlet 源码:
@WebServlet(name="CustomerServlet",urlPatterns={"*.do"})
public class CustomerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String servletPath = req.getServletPath();
String methodName = servletPath.substring(1, servletPath.length()-3);
System.out.println(methodName);
try {
Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this, req, resp);
} catch (Exception e) {
}
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
System.out.println("delete");
}
private void query(HttpServletRequest request, HttpServletResponse response) {
System.out.println("query");
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
先看下
Method
的invoke(Object obj, Object... args)
方法的定义 是一个obj
参数和一个ags
不定参数,JAVA API给出解释是obj
是调用底层方法的对象,args
是调用方法的参数而
this
指向的是当前对象的引用,也就是说
疑问???
这个程序是不是死循环啊,一直调用自己的
doPost
方法this指的是当前对象的方法,你这么写就是为了通过不同的请求名,执行请求名对应的方法。
不是死循环,如果你的请求是post,请求,那么servlet会先调用doPost方法,如果你的请求是get,那么会先调用doGet,在doGet里调用doPost只是把逻辑交给post而已,如果你的请求没有明确指出是get还是Post那么会直接调用doGet方法。