1.acegi四大组件
过滤器 管理器 提供者 处理程序
过滤器 :由管理器来管理
管理器:起管理作用
提供者:管理器里包含多个提供者
处理程序:具体的执行程序
2.过滤器链里包含多个过滤器。第一个过滤器必须是Session Integration Filter (SIF),因为 SIF 是一个与安全相关的信息的占位符。其他 Acegi 过滤器将安全信息保存在安全上下文中,也会使用安全上下文中可用的安全信息。SIF 创建安全上下文并调用过滤器链中的其他过滤器。然后其他过滤器检索安全上下文并对其进行更改。
3.过滤器链的生命周期:
a.浏览器客户机向您的应用程序发送 HTTP 请求。
b.容器接收到 HTTP 请求并创建一个请求对象,该对象将封装 HTTP 请求中包含的信息。容器还创建一个各种过滤器都可处理的响应对象,从而为发出请求的客户机准备好 HTTP 响应。容器然后调用 Acegi 的过滤器链代理,这是一个代理过滤器。该代理知道应用的过滤器的实际顺序。当容器调用代理时,它将向代理发送请求、响应以及过滤器链对象
c.代理过滤器调用过滤器链中第一个过滤器,向其发送请求、响应和过滤器链对象。
d.链中的过滤器逐个执行其处理。有的会修改SIF创建的安全上下文对象
e.最后 过滤器将把请求和响应对象发送到应用程序中配置的拦截过滤器。
f.拦截器决定是否对发出请求的客户机进行授权,使它访问所请求的资源。
g.拦截器将控制权传输给应用程序(比如,成功进行了身份验证和授权的客户机请求的 JSP 页面)。
h.应用程序改写响应对象的内容。
i.响应对象已经准备好了,容器将响应对象转换为 HTTP 响应,并将响应发送到发出请求的客户机。
获得当前 web应用程序目录:
request.getSession().getServletContext().getRealPath("/");