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...
}
āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ˛ā§āĻāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻ˛ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻļāĻŋāĻāĻŦā§āĻ¨āĨ¤