来到新公司,看了一下框架,使用了一个jersey的RESTful的API,之前听都没听过,也不知道是个什么鸟东东,抽空看了一下他的简单使用方法和原理,记录一下。
一、web.xml配置
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>
com.xxx.servlet.MatrixServlet
</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.xxx.InternalAuthResourceFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
<param-value>com.xxx.RoleApiResourceFilterFactor</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
二、源码解析
1、首先在web.xml中声明一个servlet,然后在这个servlet中初始化了两个Filter。我们都知道Filter是拦截请求的,那么问题来了,这两个Filter不是显示的初始声明在web.xml中的,那么他们是怎么起到拦截请求的作用的呢。
进入到MatrixServlet中发现他的继承关系是这样的:
2、首先我们都知道,servlet要是实现javax.servlet接口,web容器在初始化servlet的时候都会调用次接口的init()方法。我们在MatrixServlet中重写它的init()方法:
/**
* Initiate the Web component.
*
* @param webConf