1. 过滤器是什么?
答:就是对客户端的请求进行筛选,符合条件的放行,不符合条件不放行;放行就是在
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)方法体中出现此句
chan.doFilter(request,response);
2. 开发步骤
2.1> 使用eclipse创建一个Filter类或创建一个普通类实现Filter方法
2.2> 实现Filter的3个方法
public void init(FilterConfig fConfig) throws ServletException
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
public void destroy()
2.3> 在web.xml中配置该过滤器要过滤的东东
Ps:
init(FilterConfig fConfig)只web应用/容器启动时执行1次;具体作用就看FilterConfig对象
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 实现过滤的功能,是在执行servlet执行执行,请求一次,执行一次
destory() 只执行1次,应用关闭或web容器关闭时执行
3. 入门小程序
3.1> 编写一个Filer类:
public class QuickFilter1 implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println(filterConfig.getFilterName());
System.out.println(filterConfig.getInitParameter("aaa"));
filterConfig.getServletContext();
System.out.println("init ....");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("quick1 running....");
chain.doFilter(request, response); //放行请求
}
@Override
public void destroy() { //Filter对象销毁的时候执行destory方法, 想让此方法执行,
System.out.println("destroy...");//修改servlet,tomcat自动重新发布
}
3.2> web.xml:
<filter>
<filter-name>firstFilter</filter-name>
<filter-class>com.allen.web.Filter.filter.QuickFilter1</filter-class>
</filter>
<filter-mapping>
<filter-name>firstFilter</filter-name>
<url-pattern>/*</url-pattern><!-- 配置要过滤的东东 -->
<filter-mapping>
<servlet>
<description></description>
<display-name>Servlet1</display-name>
<servlet-name>Servlet1</servlet-name>
<servlet-class>com.allen.web.Filter.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
3.3> 编写一个servlet类:
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Servlet1 running....");
response.getWriter().write("Servlet1 running....");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
答:就是对客户端的请求进行筛选,符合条件的放行,不符合条件不放行;放行就是在
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)方法体中出现此句
chan.doFilter(request,response);
2. 开发步骤
2.1> 使用eclipse创建一个Filter类或创建一个普通类实现Filter方法
2.2> 实现Filter的3个方法
public void init(FilterConfig fConfig) throws ServletException
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
public void destroy()
2.3> 在web.xml中配置该过滤器要过滤的东东
Ps:
init(FilterConfig fConfig)只web应用/容器启动时执行1次;具体作用就看FilterConfig对象
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 实现过滤的功能,是在执行servlet执行执行,请求一次,执行一次
destory() 只执行1次,应用关闭或web容器关闭时执行
3. 入门小程序
3.1> 编写一个Filer类:
public class QuickFilter1 implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println(filterConfig.getFilterName());
System.out.println(filterConfig.getInitParameter("aaa"));
filterConfig.getServletContext();
System.out.println("init ....");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("quick1 running....");
chain.doFilter(request, response); //放行请求
}
@Override
public void destroy() { //Filter对象销毁的时候执行destory方法, 想让此方法执行,
System.out.println("destroy...");//修改servlet,tomcat自动重新发布
}
3.2> web.xml:
<filter>
<filter-name>firstFilter</filter-name>
<filter-class>com.allen.web.Filter.filter.QuickFilter1</filter-class>
</filter>
<filter-mapping>
<filter-name>firstFilter</filter-name>
<url-pattern>/*</url-pattern><!-- 配置要过滤的东东 -->
<filter-mapping>
<servlet>
<description></description>
<display-name>Servlet1</display-name>
<servlet-name>Servlet1</servlet-name>
<servlet-class>com.allen.web.Filter.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
3.3> 编写一个servlet类:
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Servlet1 running....");
response.getWriter().write("Servlet1 running....");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}