8.1 āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻŸā§€āĻ•āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 7 āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡, Tomcat āĻ¸āĻžāĻ°ā§āĻ­āĻ˛ā§‡āĻŸ API 3.0 āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ›ā§‡ āĨ¤ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡, āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯āĻžāĻ° āĻ¨āĻžāĻŽ javax.servlet.annotation. āĻāĻŸāĻŋāĻ¤ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§‡āĻ° āĻŸā§€āĻ•āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻ•ā§āĻ˛āĻžāĻ¸ āĻŸā§€āĻ•āĻž āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĻ° (web.xml) āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡ā§ˇ

āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻŸā§€āĻ•āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž:

āĻŸā§€āĻ•āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž
1 @WebServlet āĻāĻ•āĻŸāĻŋ servlet āĻ˜ā§‹āĻˇāĻŖāĻž
2 @WebInitParam āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ°āĻŽā§āĻ­āĻŋāĻ• āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡
3 @WebFilter āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°ā§‡
4 @WebListener āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ˛āĻŋāĻ¸ā§‡āĻ¨āĻžāĻ° āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°ā§‡
5 @ServletSecurity āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
    protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         out.println("Hello World!");
    }
}

āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻ˛ā§‡āĻŸ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŸā§€āĻ•āĻž āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻāĻŦāĻ‚ āĻāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ URL-āĻ āĻ†āĻ¸āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋāĻ•ā§‡ āĻŽā§āĻ¯āĻžāĻĒ āĻ•āĻ°āĻ¤ā§‡ /api/*āĨ¤

8.2 āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ‚ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž

āĻŸā§€āĻ•āĻžāĻŸāĻŋāĻ¤ā§‡ @WebServletāĻ…āĻ¨ā§‡āĻ• āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻāĻŸāĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ–ā§āĻŦ āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•:

āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻ¨āĻž
1 name āĻ¸āĻžāĻ°ā§āĻ­āĻ˛ā§‡āĻŸ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽ (āĻ¯ā§‡āĻŽāĻ¨ web.xml)
2 displayName āĻŽāĻžāĻ¨ā§āĻˇā§‡āĻ° āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯ servlet āĻ¨āĻžāĻŽ
3 description āĻ¸āĻžāĻ°ā§āĻ­āĻ˛ā§‡āĻŸ āĻŦāĻ°ā§āĻŖāĻ¨āĻž
4 value āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡
5 urlPatterns āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ (āĻŽāĻžāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤)
6 initParams āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ
7 asyncSupported āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻšāĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (HTTP/2)
8 loadOnStartup āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻĒā§āĻ°āĻžāĻ°āĻŽā§āĻ­āĻŋāĻ• āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ•ā§āĻ°āĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž
9 smallIcon āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻ†āĻ‡āĻ•āĻ¨ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡
10 largeIcon āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ āĻ†āĻ‡āĻ•āĻ¨ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡

āĻāĻ–āĻžāĻ¨ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ¨ā§‹āĻŸ āĻ•āĻ°ā§āĻ¨ āĻ¯ā§‡ valueāĻāĻŦāĻ‚ urlPatternsāĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧāĻ¯ā§‹āĻ—ā§āĻ¯ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĨ¤ āĻ¤āĻžāĻ°āĻž āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻŽā§āĻ¯āĻžāĻĒ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧāĻ¤, āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ asyncSupportedāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ HTTP/2 āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻŦā§‡ āĻ•āĻŋāĻ¨āĻžāĨ¤

āĻāĻŦāĻ‚ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻšāĻ˛ initParams, āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž ServletContext-āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

@WebServlet(
        urlPatterns = {"/sendFile", "/uploadFile"},
        loadOnStartup = 1,
        asyncSupported = true,
        initParams = {
            @WebInitParam(name = "saveDir", value = "c:/uploaded"),
            @WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
        }
)
public class ImageUploadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String saveDir = getInitParameter("saveDir");
        String fileTypes = getInitParameter("allowedTypes");

        PrintWriter writer = response.getWriter();

        writer.println("saveDir = " + saveDir);
        writer.println("fileTypes = " + fileTypes);
    }
}

8.3 āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ‚ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž

āĻ‰āĻĒāĻ°ā§‡ āĻ‰āĻ˛ā§āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸ, āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§€āĻ•āĻž āĻ†āĻ›ā§‡ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ†āĻ›ā§‡ @WebFilter:

āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻ¨āĻž
1 filterName āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°ā§āĻ¨ (āĻ¯ā§‡āĻŽāĻ¨ web.xml)
2 displayName āĻŽāĻžāĻ¨ā§āĻˇā§‡āĻ° āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ
3 description āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ
4 value / urlPatterns āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ url-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡
5 dispatcherTypes DispatcherTypes āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡
6 servletNames āĻ†āĻŦā§‡āĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡
7 initParams āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻļā§āĻ°ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ
8 asyncSupported āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻšāĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (HTTP/2)
9 smallIcon āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ†āĻ‡āĻ•āĻ¨ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡
10 largeIcon āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ†āĻ‡āĻ•āĻ¨ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡

āĻāĻ•āĻŸāĻŋ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ•ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻ¯āĻŧ :

@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ :

@WebFilter(
        urlPatterns = "/uploadFilter",
        initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
    // implements Filter's methods here...
}

RequestDispatcher āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ§āĻ°āĻŖā§‡āĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ :

@WebFilter(
        urlPatterns = "/admin",
        dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ˛ā§‡āĻ•āĻšāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°ā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻļāĻŋāĻ–āĻŦā§‡āĻ¨āĨ¤