Servlet过滤器Filter:
能够对Servlet容器的请求和响应对象进行检查和修改。
Servlet过滤器本身不生成请求和响应对象,它只提供过滤作用,
Servlet过滤器可以在Servlet被调用之前检查Request对象,修改Request Header和Request内容
在Servlet被调用之后检查Response对象,修改Response Header和Response内容。
Servlet过滤器负责过滤的web组件可以是Servlet、jsp或Html文件。
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。
这个接口含有3个过滤器类必须实现的方法:
-- init(Filter Config)
-- doFilter(ServletRequest, ServletResponse, FilterChain)
-- destroy()
要在web.xml中配置过滤器:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有些初始的界面不用过滤器来验证,方法是在LoginFilter类的doFilter()方法中:
HttpServletRequest r = (HttpServletRequest)request;
String requestURL = r.getRequestURL();
if(requestURL.endsWith("login.jsp") || requestURL.endsWith("MyLoginServlet")){
chain.doFilter(request, response);
return;
}
验证未登录时返回到登录界面,在LoginFilter类的doFilter()方法中:
HttpServletRequest r = (HttpServletRequest)request;
HttpSession session = r.getSession();
if(null == session.getAttribute("user")){
((HttpServletResponse)response).sendRedirect("login.jsp");
return;
} else {
chain.doFilter(request, response);
}
通过调用FilterConfig的getSevletContext()方法获得ServletContext,在调用ServletContext的getAttribute()方法业获得application范围内的共享数据。
Listener:Servlet监听器,可以监听客户端的请求、服务端的操作等,通过监听器,可以自动激发一些操作。
监听用户数量:当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1;
常用的监听接口有:
1>:ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性;
2>:ServletContextListener监听ServletContext。
当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法;
能够对Servlet容器的请求和响应对象进行检查和修改。
Servlet过滤器本身不生成请求和响应对象,它只提供过滤作用,
Servlet过滤器可以在Servlet被调用之前检查Request对象,修改Request Header和Request内容
在Servlet被调用之后检查Response对象,修改Response Header和Response内容。
Servlet过滤器负责过滤的web组件可以是Servlet、jsp或Html文件。
所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。
这个接口含有3个过滤器类必须实现的方法:
-- init(Filter Config)
-- doFilter(ServletRequest, ServletResponse, FilterChain)
-- destroy()
要在web.xml中配置过滤器:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有些初始的界面不用过滤器来验证,方法是在LoginFilter类的doFilter()方法中:
HttpServletRequest r = (HttpServletRequest)request;
String requestURL = r.getRequestURL();
if(requestURL.endsWith("login.jsp") || requestURL.endsWith("MyLoginServlet")){
chain.doFilter(request, response);
return;
}
验证未登录时返回到登录界面,在LoginFilter类的doFilter()方法中:
HttpServletRequest r = (HttpServletRequest)request;
HttpSession session = r.getSession();
if(null == session.getAttribute("user")){
((HttpServletResponse)response).sendRedirect("login.jsp");
return;
} else {
chain.doFilter(request, response);
}
通过调用FilterConfig的getSevletContext()方法获得ServletContext,在调用ServletContext的getAttribute()方法业获得application范围内的共享数据。
Listener:Servlet监听器,可以监听客户端的请求、服务端的操作等,通过监听器,可以自动激发一些操作。
监听用户数量:当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1;
常用的监听接口有:
1>:ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性;
2>:ServletContextListener监听ServletContext。
当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法;