三层架构之BaseServlet
三层架构之BaseServlet1、需求分析将一张数据库表的相关操作,整合到一个servlet里面,从而达到减少servlet数量,降低代码重复率的目的。2、解决方案写一个BaseServlet,让业务相关的servlet都来继承BaseServlet,而让BaseServlet来继承HttpServlet,并重写里面的service方法。于是,每次业务相关的servlet被执行时,都会执行Bas
·
三层架构之BaseServlet
1、需求分析
- 将一张数据库表的相关操作,整合到一个servlet里面,从而达到减少servlet数量,降低代码重复率的目的。
2、解决方案
- 写一个BaseServlet,让业务相关的servlet都来继承BaseServlet,而让BaseServlet来继承HttpServlet,并重写里面的service方法。于是,每次业务相关的servlet被执行时,都会执行BaseServlet里面的代码,在BaseServlet里面实现业务servlet相关的方法。
3、BaseServlet代码模板
package cn.itcast.travel.web.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
// 这个servlet的作用是重写HttpServlet , 使得继承这个servlet的servlet可以访问到里面的方法。
public class BaseServlet extends HttpServlet {
//在这里, 只需要重写service方法, 因为service方法就是HttpServlet执行的关键方法。
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//当子类被执行的时候, 就会先来到父类这里, 执行父类的相关方法, 于是在父类里面获取子类的方法, 然后就在父类里面达到了执行子类方法的目的.
//1.获取请求路径
String uri = req.getRequestURI(); // 这个方法获取到了路径 /trave/user/add
//2.获取调用的方法名
String methodName = uri.substring(uri.lastIndexOf('/') + 1); // 这里是从后面开始截取字符串
try {
//3.获取方法对象, 这里有异常需要抛出
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
//4.执行方法
method.invoke(this,req,resp); //这里也有异常, 需要抛一下
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)