Handle Inter类的三种实现方法
在Java Web中,javax.servlet.http.HttpServletRequest
和javax.servlet.http.HttpServletResponse
是我们常用的对象,而他们的作用是为我们的Servlet提供了获取请求信息和生成响应信息的方法。而在开发中,我们经常会碰到处理请求和生成响应信息的一些公共方法,在这种情况下,我们就应该考虑将这些方法封装起来,可以减少代码重复,提高程序的可重用性。这时就需要用到Handle Inter类。本文将介绍三种实现Handle Inter类的方法。
方法一:继承Servlet
继承是面向对象程序设计的一种基础技巧。在此基础上,我们可以通过定义一个实现javax.servlet.http.HttpServlet
的子类,然后在子类中实现javax.servlet.http.HttpServletRequest
和javax.servlet.http.HttpServletResponse
的方法,达到代码复用的效果。
具体实现如下:
public class HandleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 公共方法实现...
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 公共方法实现...
}
}
这种实现方法的优点在于实现简单,且与Servlet的生命周期相同,并且可以通过web.xml配置来轻松使用。但如果有多个公共方法,则需要在多个子类中实现,不利于代码管理。
方法二:实现Handle Inter接口
另一种实现Handle Inter的方法是通过实现javax.servlet.http.HttpServlet
的子类,然后在子类中实现javax.servlet.http.HttpServletRequest
和javax.servlet.http.HttpServletResponse
的方法。这种实现方式与方法一相似,只是需要自己定义一个公共接口。下面是实现代码:
public interface HandleInter {
public void handle(HttpServletRequest request, HttpServletResponse response);
}
public class HandleImpl implements HandleInter {
public void handle(HttpServletRequest request, HttpServletResponse response) {
// 公共方法实现...
}
}
这种实现方法的优点在于多个公共方法可以通过一个实现一个接口来管理,不利于代码管理成了利于代码管理。但是需要在每个使用Handle Inter的地方都要实例化HandleImpl类,显得比较冗余。
方法三:使用Filter
Filter是Java Web中的一个功能强大的组件,可以在Servlet接收请求之前拦截请求,并在Servlet响应请求之后拦截响应。因此,如果FIlter中实现了Handle Inter的公共方法,就可以达到很好的代码管理效果。
实现方式如下:
public class HandleFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化方法...
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 拦截请求
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse resp = (HttpServletResponse)response;
// 公共方法实现...
chain.doFilter(request, response);
}
public void destroy() {
// 销毁方法...
}
}
这种实现方式的优点在于实现简单,可以被多个Servlet共享,且代码管理便捷。但是需要在web.xml中配置Filter来使用。
总结
以上三种实现Handle Inter的方法分别对应着不同的应用场景。如果一个Servlet需要管理多个公共方法,那么使用方法二是最好的选择;如果需要管理的公共方法繁多,可以使用方法三;如果只有一个公共方法,那么使用方法一比较简单方便。