How to apply filter for one particular servlet?
java, servlet-filters, servlets, web.xml
Solution
You can change the Filter path :
Change the `<url-pattern>` to the same path as your servlet
<filter>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.tps.flexchat.action.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/SendMessageAction/</url-pattern>
</filter-mapping>
Problem
In chat my applications I am having five servlets.I need to apply filter for a single servlet. My filter is, ``` package com.tps.flexchat.action; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * Servlet Filter implementation class EncodingFilter */ public class EncodingFilter implements Filter { private String encoding = "UTF-8"; private FilterConfig filterConfig; /** * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } /** * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException { resp.setCharacterEncoding("encoding"); resp.setContentType("encoding"); req.setCharacterEncoding(encoding); chain.doFilter(req, resp); System.out.println("filter -------> :"+encoding ); } /** * @see javax.servlet.Filter#destroy() */ public void destroy() { } } ``` The mapping in the web.xml will be ``` <filter> <display-name>EncodingFilter</display-name> <filter-name>EncodingFilter</filter-name> <filter-class>com.tps.flexchat.action.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` I need apply the EncodingFilter filter to this SendMessageAction servlet only, ``` package com.tps.flexchat.action; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.genesyslab.platform.webmedia.protocol.FlexChatProtocol; import com.tps.flexchat.Request.SendMessage; import com.tps.flexchat.info.ApplicationInfo; import com.tps.flexchat.info.CustomerInfo; public class SendMessageAction extends HttpServlet { private static final long serialVersionUID = 1L; private String msg; private String seckey; private String uid; private String sessionId; private int counter; private FlexChatProtocol protocol = null; private SendMessage message; public SendMessageAction() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { msg = request.getParameter("message"); seckey = request.getParameter("securekey"); uid = request.getParameter("userId"); sessionId = request.getParameter("sessionId"); counter = 1; protocol = ApplicationInfo.flexProtocol; message = new SendMessage(); message.send(msg, seckey, uid, sessionId, counter, protocol); CustomerInfo customer = ApplicationInfo.customerDetails.get(uid); out.print(customer.getMessage()); } } ``` Thanks In advance....