Servlet过滤器,Servlet过滤器创建和配置
来源:互联网 发布:网络动漫黑名单图片 编辑:程序博客网 时间:2024/06/05 19:46
第一方法是过滤器中的init()方法用于对过滤器的初始值进行处理,第二个是destory()方法是过滤器的销毁方法,主要用于释放资源,对于过滤处理的业务逻辑需要编写到doFilter()方法中,在请求过滤处理后,需要调用chain参数的doFilter()方法将请求向下传递给下一个过滤器或者目标资源。
(过滤器和Servlet十分相似哟,在创建之后同样需要对其进行配置,过滤器的配置主要分为两个步骤,分别位声明过滤器和创建过滤器映射)
第二:过滤器的配置简单说下,分为两个步骤,一是声明过滤器对象,二是创建过滤器映射
<!-- 过滤器声明 -->
<filter>
<!-- 过滤器的名称 -->
<filter-name>CountFilter</filter-name>
<!-- 过滤器的完整类名 -->
<filter-class>com.ningmeng.CountFilter</filter-class>
<init-param>
<param-name>count</param-name>
<param-value>5000</param-value>
</init-param>
</filter>
<!-- 过滤器的映射 -->
<filter-mapping>
<!-- 过滤器的名称 -->
<filter-name>CountFilter</filter-name>
<!-- 过滤器的URL映射 -->
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>
------------------------------------------------------------------------------------------------------------------------------
<filter>标签用于声明过滤器的对象,在这个标签中必须配置两个元素,分别是过滤器的名称和过滤器的完整类名,其中<filter-name>
为过滤器的名称,<filter-class>过滤器的完整类名
<filter-mapping>标签用于创建过滤器的映射,他的主要作用就是指定web应用中,那些URL应用哪一个过滤器进行处理,在<filter-mapping>标签中需要指定过滤器的名称和过滤器的URL映射,其中<filter-name>用于定义过滤器的名称,<url-pattern>用于指定过滤器应用的URL。
注意:</filter-mapping>标签中的<filter-name>是指定已定义的过滤器的名称,必须和<filter>标签中的<filter-name>一一对应
下面演示一下创建一个过滤器,实现网站访问计数器的功能。并且在web.xml文件的配置中,将网站访问量的初始值设置为5000.
然后直接上代码,不废话
1 package com.ningmeng; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.ServletConfig; 8 import javax.servlet.ServletContext; 9 import javax.servlet.ServletException;10 import javax.servlet.ServletRequest;11 import javax.servlet.ServletResponse;12 import javax.servlet.annotation.WebServlet;13 import javax.servlet.http.HttpServlet;14 import javax.servlet.http.HttpServletRequest;15 import javax.servlet.http.HttpServletResponse;16 17 /**18 * Servlet implementation class CountFilter19 */20 @WebServlet("/CountFilter")21 public class CountFilter extends HttpServlet implements Filter {22 private static final long serialVersionUID = 1L;23 //来访数量24 private int count;25 26 /**27 * @see Filter#init(FilterConfig)28 */29 public void init(FilterConfig filterConfig) throws javax.servlet.ServletException { 30 // TODO Auto-generated method stub31 String param=filterConfig.getInitParameter("count");//获取初始化参数32 count=Integer.valueOf(param);//将字符串转换为int33 }34 35 /**36 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)37 */38 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, javax.servlet.ServletException { 39 // TODO Auto-generated method stub40 count++;//访问数量自增41 //将ServletRequest转换成HttpServletRequest42 HttpServletRequest req=(HttpServletRequest)request;43 //获取ServletContext44 ServletContext context=req.getSession().getServletContext();45 context.setAttribute("count", count);//将来访数量值放入到ServletContext中46 chain.doFilter(request, response);//向下传递过滤器47 48 }49 50 51 /**52 * @see Servlet#destroy()53 */54 public void destroy() {55 // TODO Auto-generated method stub56 }57 58 59 }
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body>10 <h1>欢迎光临<br/></h1>11 <h2>您是本站的第【<%=application.getAttribute("count") %>】位访客!</h2>12 </body>13 </html>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 3 <display-name>web02</display-name> 4 <welcome-file-list> 5 <welcome-file>index.html</welcome-file> 6 <welcome-file>index.htm</welcome-file> 7 <welcome-file>index.jsp</welcome-file> 8 <welcome-file>default.html</welcome-file> 9 <welcome-file>default.htm</welcome-file>10 <welcome-file>default.jsp</welcome-file>11 </welcome-file-list>12 <servlet>13 <servlet-name>FirstServlet</servlet-name>14 <servlet-class>com.ningmeng.FirstServlet</servlet-class>15 </servlet>16 <servlet-mapping>17 <servlet-name>FirstServlet</servlet-name>18 <url-pattern>/FirsetServlet</url-pattern>19 </servlet-mapping>20 21 <!-- 过滤器声明 -->22 <filter>23 <filter-name>CountFilter</filter-name>24 <filter-class>com.ningmeng.CountFilter</filter-class>25 <init-param>26 <param-name>count</param-name>27 <param-value>5000</param-value>28 </init-param>29 </filter>30 <filter-mapping>31 <filter-name>CountFilter</filter-name>32 <url-pattern>/index.jsp</url-pattern>33 </filter-mapping> 34 </web-app>
运行如下
- Servlet过滤器,Servlet过滤器创建和配置
- Servlet过滤器创建与配置
- Servlet创建过滤器
- servlet过滤器和servlet监听器
- servlet和JSP过滤器
- servlet过滤器和监听器
- servlet过滤器和监听器
- servlet过滤器和监听器
- Servlet过滤器和监听器
- Servlet过滤器和监听器
- Servlet过滤器和监听器
- Servlet 过滤器和监听器
- Servlet过滤器和监听器
- Servlet过滤器和监听器
- Servlet过滤器和监听器
- 实例:用Servlet开发和配置过滤器
- 实例:用Servlet开发和配置过滤器
- 【Servlet】Filter过滤器的编写和配置
- 2012年06月26日的日记
- Oracle索引语句整理
- Servlet开发技术,创建,以及Servlet的配置,web.xml的配置
- 线程的生命周期
- ReentrantLock与Condition
- Servlet过滤器,Servlet过滤器创建和配置
- linux下编写shell脚本
- Java Native方法
- 过去、现在、未来
- Servlet字符编码过滤器,实现图书信息的添加功能,避免产生文字乱码现象的产生
- 线程常用方法
- 2012年07月04日的日记
- 工作中常用的正则表达式
- java虚拟机笔记