spring mvc框架源码分析(一)-封装请求拦截器DispatchServlet

前言:

    之前刚刚学习java web编程之时,感觉Servlet不怎么好用,有时候用起来很麻烦,当时由于自己的经验不足实行起来有点困难,所以就放在了一旁,现在因为自己也做过些些许许项目,有了一点经验,而且正好放假了有一些时间,于是决定实现下自己之前的想法。


什么是拦截器?

    在开始动手之前,要讲一下什么是拦截器?在这个框架中拦截器的作用主要是用来拦截网页的请求的一个Servlet。在最开始的学习的Servlet程序中,每一个路径都需要在web.xml中配置它所对应的Servlet,这样做在Url路径多的时候,会让web.xml变得非常大,并且非常非常多的Servlet,让服务器端显得非常庞大冗余,所以这时候就需要定义一个Servlet,也就是上面所说的拦截器,通过这个Servlet,可以拦截所有的请求,并且把这些请求交给某些具体的方法处理,并且返回。


自定义拦截器:

    首先,我们需要自己创建一个java web应用程序,如下图

《spring mvc框架源码分析(一)-封装请求拦截器DispatchServlet》

,然后可以通过Tomcat跑起来,之后我们需要自己创建一个Servlet来作为我们的拦截器

《spring mvc框架源码分析(一)-封装请求拦截器DispatchServlet》

因为这里我们需要自己封装个servlet来处理请求,所以这个Servlet就不是继承于HttpServlet,而是继承于HttpServlet的父类GenericServlet,并且序列化这个类,这里不清楚Servlet的工作原理的同学可以看下我的这篇博客:http://my.oschina.net/u/2505383/blog/649585,之后我们就需要通过web.xml来进行配置《spring mvc框架源码分析(一)-封装请求拦截器DispatchServlet》

规定我们部署的目录下所有的请求交给这个Servlet进行处理。


编写拦截器:

   上面操作完了之后,我们就需要对DispatchServlet中的service方法进行重写:《spring mvc框架源码分析(一)-封装请求拦截器DispatchServlet》

主要是进行ServletRequest -> HttpServletRequet 之后交给另外一个函数进行处理

 public void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException {
        String url = servletRequest.getRequestURI();
        String method = servletRequest.getMethod();
    /** * 之后会做对请求进行分发 */
}

在这个函数中我们可以通过 servletRequest.getRequestURI()获取请求路径,servletRequest.getMethod()获取请求方式,获取到路劲和方法,我们在这之后会对请求路径进行处理,让这个路径执行它所对应的方法。


总结:

    框架重的拦截器基本原理这里差不多就讲完了,下一节会给大家讲到自定义注解,以及通过反射获取注解对应的方法。

    原文作者:Spring MVC
    原文地址: https://blog.csdn.net/asd1098626303/article/details/60868180
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞