前言:
之前刚刚学习java web编程之时,感觉Servlet不怎么好用,有时候用起来很麻烦,当时由于自己的经验不足实行起来有点困难,所以就放在了一旁,现在因为自己也做过些些许许项目,有了一点经验,而且正好放假了有一些时间,于是决定实现下自己之前的想法。
什么是拦截器?
在开始动手之前,要讲一下什么是拦截器?在这个框架中拦截器的作用主要是用来拦截网页的请求的一个Servlet。在最开始的学习的Servlet程序中,每一个路径都需要在web.xml中配置它所对应的Servlet,这样做在Url路径多的时候,会让web.xml变得非常大,并且非常非常多的Servlet,让服务器端显得非常庞大冗余,所以这时候就需要定义一个Servlet,也就是上面所说的拦截器,通过这个Servlet,可以拦截所有的请求,并且把这些请求交给某些具体的方法处理,并且返回。
自定义拦截器:
首先,我们需要自己创建一个java web应用程序,如下图
,然后可以通过Tomcat跑起来,之后我们需要自己创建一个Servlet来作为我们的拦截器
因为这里我们需要自己封装个servlet来处理请求,所以这个Servlet就不是继承于HttpServlet,而是继承于HttpServlet的父类GenericServlet,并且序列化这个类,这里不清楚Servlet的工作原理的同学可以看下我的这篇博客:http://my.oschina.net/u/2505383/blog/649585,之后我们就需要通过web.xml来进行配置
规定我们部署的目录下所有的请求交给这个Servlet进行处理。
编写拦截器:
上面操作完了之后,我们就需要对DispatchServlet中的service方法进行重写:
主要是进行ServletRequest -> HttpServletRequet 之后交给另外一个函数进行处理
public void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException {
String url = servletRequest.getRequestURI();
String method = servletRequest.getMethod();
/**
* 之后会做对请求进行分发
*/
}
在这个函数中我们可以通过 servletRequest.getRequestURI()获取请求路径,servletRequest.getMethod()获取请求方式,获取到路劲和方法,我们在这之后会对请求路径进行处理,让这个路径执行它所对应的方法。
总结:
框架重的拦截器基本原理这里差不多就讲完了,下一节会给大家讲到自定义注解,以及通过反射获取注解对应的方法。