过滤器
作用:对服务器资源进行统一处理;
如:设置编码格式,session管理、权限管理、和谐词汇
使用:
- 创建一个实现了Filter接口 的普通java类
覆写Filter接口的方法
init方法:服务器启动的时候被执行
doFilter方法:拦截请求的方法,对资源进行管理;需要手动对资源进行放行。
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//判断session
HttpSession hs = ((HttpServletSession) request).getSession();
if(hs.getAttribute("user")==null){
((HttpServletResponse)response).sendRedirect("login.jsp");
} else {
//放行
chan.doFilter(request, response);
}
destroy方法:服务器关闭的时候被执行
- 在web.xml中配置Filter过滤器
<!-- 配置过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.peace.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- /*表示拦截所有Servlet | *.do表示拦截以.do结尾的Servlet | /uri.do表示拦截特定的Servlet-->
</filter-mapping>
总结:
程序员对过滤器进行声明和配置;服务器根据请求中的uri进行调用;
监听器
-
监听对象:
Request、Session、Application -
监听内容:
创建、销毁、属性改变事件 -
监听作用:
在事件发生之前,之后进行一些处理 -
使用:
创建一个实现了ServletRequestListener接口(监听request对象的创建和销毁)、ServletRequestAttributeListener接口(监听request作用域的变更)的java类
requestIniialized方法:创建request对象
requestDestroyed方法:销毁request对象
attributeAdded方法:request作用域增加数据
attributeRemoved方法:request作用域移除数据
attributeReplaced方法:request作用域更改数据
在web.xml中配置监听器:
<listener>
<listener-class>com.peace.listener.MyListener</liatener-class>
</listener>
- 案例:
统计网站在线人数。