Java Servlet Filters Example Application
- javastrokes
- Sep 19, 2016
- 3 min read
In this Java Servlet Filters example application, we are using one filter called “LoginFilter” to check the correct customer id and customer name(authenticate) and an another filter called “PromocodeFilter” to check the correct promo code. Functionalities of Servlet Filters
login.jsp will collect customer id, customer name and password from the user. LoginFilter will validate the customer id and customer name entered by the user, if the user has entered proper data, then user will be forwarded to second filter, PromocodeFilter which is responsible for validating the promocode. If the user has entered the correct promo code, finally users request will be moved to Servlet (LoginServlet) which sends response to the client. Check out the source code given below:

Customer.java
package com.beans;
public class Customer {
private String customerId; private String customerName; private String promoCode; public String getCustomerId() { return customerId; } public void setCustomerId(String customerId) { this.customerId = customerId; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getPromoCode() { return promoCode; } public void setPromoCode(String promoCode) { this.promoCode = promoCode; } public String toString () { return "Dear Customer, your promocode is valid! " +"/n" + "Customer ID: " + customerId + "Customer Name: " + customerName + "Promo Code: " + promoCode; } }
LoginFilter.java
package com.javastrokes.filter;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import com.beans.Customer;
public class LoginFilter implements Filter { public void init(FilterConfig fc) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { PrintWriter out = response.getWriter(); String customerId = request.getParameter("customerId"); String customerName = request.getParameter("customerName"); if( customerId.equals("Ric123") && customerName.equals("Rick")) { Customer customerObject = new Customer(); customerObject.setCustomerId(customerId); customerObject.setCustomerName(customerName); request.setAttribute("customer", customerObject); chain.doFilter(request, response); } else { out.println("You have entered wrong Customer Id or Password!"); RequestDispatcher rs = request.getRequestDispatcher("login.jsp"); rs.include(request, response); } } public void destroy() { } }
PromocodeFilter.Java
package com.javastrokes.filter;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import com.beans.Customer;
public class PromocodeFilter implements Filter { public void init(FilterConfig fc) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { PrintWriter out = response.getWriter(); String promoCode = request.getParameter("promoCode"); if( promoCode.equals("OFF33") ) { Customer customerObject = (Customer)request.getAttribute("customer"); customerObject.setPromoCode(promoCode); request.setAttribute("customer", customerObject); chain.doFilter(request, response); } else { out.println("You have entered wrong Promocode!"); RequestDispatcher rs = request.getRequestDispatcher("login.jsp"); rs.include(request, response); } } public void destroy() { } }
LoginServlet.java
package com.javastrokes.filter;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; RequestDispatcher rd; public LoginServlet() { super(); // TODO Auto-generated constructor stub }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
rd = getServletContext().getRequestDispatcher("/success.jsp"); rd.forward(request, response); }
}
web.xml
<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>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>loginFilter</filter-name> <filter-class>com.javastrokes.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/login.do</url-pattern> </filter-mapping> <filter> <filter-name>promoFilter</filter-name> <filter-class>com.javastrokes.filter.PromocodeFilter</filter-class> </filter> <filter-mapping> <filter-name>promoFilter</filter-name> <url-pattern>/login.do</url-pattern> </filter-mapping> <servlet> <servlet-name>promoServlet</servlet-name> <servlet-class>com.javastrokes.filter.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>promoServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping>
</web-app>
login.jsp
<!DOCTYPE html> <html> <head> <style type="text/css"> .tftable {font-size:15px;color:#333333;width:100%;border-width: 1px;border-color: #ebab3a;border-collapse: collapse;} .tftable th {font-size:15px;background-color:#e6983b;border-width: 1px;padding: 8px;border-style: solid;border-color: #ebab3a;text-align:left;} .tftable tr {background-color:#f0c169;} .tftable td {font-size:15px;border-width: 1px;padding: 8px;border-style: solid;border-color: #ebab3a;} .tftable tr:hover {background-color:#ffffff;} </style> <meta charset="US-ASCII"> <title>Login Page</title> </head> <body>
<form action="login.do" method="post">
<table class="tftable" border="1"> <tr><th>Customer Details:</th></tr> <tr><td>Customer ID:</td><td> <input type="text" name="customerId"> </td></tr> <tr><td>Customer Name:</td><td><input type="text" name="customerName"></td></tr> <tr><td>Promo Code:</td><td><input type="text" name="promoCode"></td></tr> <tr><td><input type="submit" value="Login"></td></tr> </table>
</form> </body> </html>
success.jsp
<%@ page language="java" contentType="text/html; charset=US-ASCII" pageEncoding="US-ASCII"%> <%@ page isELIgnored="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <style type="text/css"> .tftable {font-size:15px;color:#333333;width:100%;border-width: 1px;border-color: #ebab3a;border-collapse: collapse;} .tftable th {font-size:15px;background-color:#e6983b;border-width: 1px;padding: 8px;border-style: solid;border-color: #ebab3a;text-align:left;} .tftable tr {background-color:#f0c169;} .tftable td {font-size:15px;border-width: 1px;padding: 8px;border-style: solid;border-color: #ebab3a;} .tftable tr:hover {background-color:#ffffff;} </style> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title> Success Page</title>
</head>
<body>
<h3>Hello ${customer.customerName}!, You have a valid Promocode!.</h3>
<table class="tftable" border="1"> <tr><th>Customer Details:</th></tr> <tr><td>Customer ID:</td><td>${customer.customerId} </td></tr> <tr><td>Customer Name:</td><td>${customer.customerName}</td></tr> <tr><td>Promo Code:</td><td>${customer.promoCode}</td></tr>
</table>
<a href="login.jsp">Enter PromoCode</a>
</body>
</html>
Commentaires