Java Servlet Filter tutorial example using Eclipse & Tomcat
来源:互联网 发布:手机新浪博客网络异常 编辑:程序博客网 时间:2024/06/04 19:18
Servlet Filters are the latest components that are added in Servlet 2.3 specifications. These filters are used basically for intercepting and modifying requests and response from server. Consider a scenario where you want to check session from the every users request and if it is valid then only you want to let the user access the page. You can acheive this by checking sessions on all the servlet pages (or JSP pages) which users queries or you can do this by using Filter.
Let us create a Servlet Filter that just prints the clients ip address and date time. This is just to log users who are accessing the application.
We we use Eclipse for developing our application and Apache Tomcat for deploying and running our application.
Step 1: Create dynamic web project in Eclipse.
Starts eclipse and create a new dynamic web project with name ServletFilterProject. Select Target runtime environment. I have selected Apache Tomcat v6.0, you can select any Tomcat version that you have installed. Click on Finish.
Step 2: Create package & Servlet Filter class.
Create a package for Servlet Filters in your source folder of Project. I have created a package net.viralpatel.servlet.filters. Inside the package, create a Java class file called LogFilter.java.
In this filter example, we have implemented an interface javax.servlet.Filter and override its methods init, doFilter and destroy.
The init() method is used to initialize any code that is used by Filter. Also note that, init() method will get an object of FilterConfig which contains different Filter level information as well as init parameters which is passed from Web.xml (Deployment descriptor).
The doFilter() method will do the actual logging of information. You can modify this method and add your code which can modify request/session/response, add any attribute in request etc.
The destroy() method is called by the container when it wants to garbage collect the filter. This is usually done when filter is not used for long time and server wants to allocate memory for other applications.
In this entry, we have added LogFilter class in Web xml and mapped it with URL /*. Hence any request from client will generated a call to this filter. Also we have passed a parameter test-param. This is just to show how to pass and retrieve a parameter in servlet filter.
Step 5: Execute the web application
We are done with the coding part of Servlet Filter example. Now execute the project by Run -> Run As -> Run on server (shortcut Alt+Shift+X, R).
Check the console you will see the output that we print using System.out.
Change the code in the way you want your filter to work.
Let us create a Servlet Filter that just prints the clients ip address and date time. This is just to log users who are accessing the application.
We we use Eclipse for developing our application and Apache Tomcat for deploying and running our application.
Step 1: Create dynamic web project in Eclipse.
Starts eclipse and create a new dynamic web project with name ServletFilterProject. Select Target runtime environment. I have selected Apache Tomcat v6.0, you can select any Tomcat version that you have installed. Click on Finish.
Step 2: Create package & Servlet Filter class.
Create a package for Servlet Filters in your source folder of Project. I have created a package net.viralpatel.servlet.filters. Inside the package, create a Java class file called LogFilter.java.
Step 3: Writting Servlet Filter class code.
package net.viralpatel.sevlet.filters;import java.io.IOException;import java.util.Date;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;/** * @author BigBird * @date 2011-12-6 下午11:07:41 * @action */public class LogFilter implements Filter {@Overridepublic void destroy() {// TODO Auto-generated method stub// add code to release any resource}@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest) req;// Get the IP address of client machineString ipAddress = request.getRemoteAddr();// Log the IP address and current timestampSystem.out.println("IP " + ipAddress + ",Time " + new Date().toString());}@Overridepublic void init(FilterConfig config) throws ServletException {// TODO Auto-generated method stub// Get init parameterString testParam = config.getInitParameter("test-param");// Print the init parameterSystem.out.println("Test Param:" + testParam);}}
In this filter example, we have implemented an interface javax.servlet.Filter and override its methods init, doFilter and destroy.
The init() method is used to initialize any code that is used by Filter. Also note that, init() method will get an object of FilterConfig which contains different Filter level information as well as init parameters which is passed from Web.xml (Deployment descriptor).
The doFilter() method will do the actual logging of information. You can modify this method and add your code which can modify request/session/response, add any attribute in request etc.
The destroy() method is called by the container when it wants to garbage collect the filter. This is usually done when filter is not used for long time and server wants to allocate memory for other applications.
Step 4: Create Servlet Filter Mapping in Web.xml
Open web.xml file from WEB-INF directory of your Project and add following entry for filter tag.
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>ServletProject</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><filter><filter-name>LogFilter</filter-name><filter-class>net.viralpatel.sevlet.filters.LogFilter</filter-class><init-param><param-name>test-param</param-name><param-value>This parameter is for testing.</param-value></init-param></filter><filter-mapping><filter-name>LogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
In this entry, we have added LogFilter class in Web xml and mapped it with URL /*. Hence any request from client will generated a call to this filter. Also we have passed a parameter test-param. This is just to show how to pass and retrieve a parameter in servlet filter.
Step 5: Execute the web application
We are done with the coding part of Servlet Filter example. Now execute the project by Run -> Run As -> Run on server (shortcut Alt+Shift+X, R).
Check the console you will see the output that we print using System.out.
Change the code in the way you want your filter to work.
Let me know your comments and suggestions.
- Java Servlet Filter tutorial example using Eclipse & Tomcat
- Spring 3 Hello World Example / Tutorial using Maven Tool and Eclipse IDE
- Looking for an example for inserting content into the response using a servlet filter
- Java Tutorial: How to Create RESTful Java Client using Apache HttpClient – Example
- Java String Replace Example Tutorial
- Java Servlet Example
- Spring 3 MVC Framework Based Hello World Web Application Example Using Maven, Eclipse IDE And Tomcat
- regex tutorial using java (1)
- java环境+Tomcat+eclipse+servlet配置流程
- Java Design Patterns – Example Tutorial
- Eclipse+tomcat部署JFinal是启动tomcat时报JFinalFilter cannot be cast to javax.servlet.Filter
- java jsp servlet filter
- java servlet filter
- java filter servlet listener
- java servlet filter
- java servlet Filter 详解
- Java Servlet(二) Filter
- Java Servlet Filter
- 调试服务程序的若干方法
- 12个顶极的 Ruby on Rails 教程
- 【Linux入门学习之】vi/vim编辑器必知必会
- java高新技术(二)
- 【黑马程序员】登录时防止SQL注入漏洞攻击
- Java Servlet Filter tutorial example using Eclipse & Tomcat
- 设计模式(java)
- 深入理解C/C++数组和指针
- IsPostBack解释
- 2011hadoop技术大会实时数据分析
- C# 如何提取SaveFileDialog的保存路径?
- 树状数组专题(三)POJ2481
- http://projecteuler.net/problem=36 [Answer:872187]
- 探索式测试学习笔记之一:局部探索式测试法