8.1 рд╕рд░реНрд╡рд▓реЗрдЯ рднрд╛рд╖реНрдпрд╛рдВрдЪрд╛ рдкрд░рд┐рдЪрдп
рдЖрд╡реГрддреНрддреА 7 рдкрд╛рд╕реВрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрди, рдЯреЙрдордХреЕрдЯрдиреЗ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ API 3.0 рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рддрдкрд╢реАрд▓рд╛рд╕ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА . рд╡рд┐рд╢реЗрд╖рддрдГ, рддреНрдпрд╛рдд рдПрдХ рдкреЕрдХреЗрдЬ рджрд┐рд╕рд▓реЗ рдЬреНрдпрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ javax.servlet.annotation
. рдпрд╛рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рднрд╛рд╖реНрдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдХреНрд▓рд╛рд╕рд╡рд░ рднрд╛рд╖реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рддреБрдореНрд╣реА рднрд╛рд╖реНрдп рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдЙрдкрдпреЛрдЬрди рд╡рд░реНрдгрдирдХрд░реНрддрд╛ (web.xml) рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.
рд╕рд░реНрд╡рд╛рдд рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖реНрдпрд╛рдВрдЪреА рдпрд╛рджреА:
рднрд╛рд╖реНрдп | рд╡рд░реНрдгрди | |
---|---|---|
рез | @WebServlet |
рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ |
2 | @WebInitParam |
рдЗрдирд┐рд╢рд┐рдПрд▓рд╛рдпрдЭреЗрд╢рди рдкреЕрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ |
3 | @WebFilter |
рд╡реЗрдм рдлрд┐рд▓реНрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ |
4 | @WebListener |
рд╡реЗрдм рд▓рд╛рдпрд╕реЗрдирд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЛ |
рел | @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
рдЕрдиреЗрдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрд╣реЗрдд рдЬреЗ рддреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯрдЪреНрдпрд╛ рдЕрддрд┐рд╢рдп рд▓рд╡рдЪрд┐рдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд. рдЪрд▓рд╛ рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯреАрдВрд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛:
рд╡рд┐рд╢реЗрд╖рддрд╛ | рд╡рд░реНрдгрди | |
---|---|---|
рез | name |
рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рд╡ (web.xml рдкреНрд░рдорд╛рдгреЗ) |
2 | displayName |
рдорд╛рдирд╡реА рд╡рд╛рдЪрдиреАрдп рд╕рд░реНрд╡рд▓реЗрдЯ рдирд╛рд╡ |
3 | description |
рд╕рд░реНрд╡рд▓реЗрдЯ рд╡рд░реНрдгрди |
4 | value |
рдореЕрдкрд┐рдВрдЧрд╕рд╛рдареА url рд╕реЗрдЯ рдХрд░рддреЗ |
рел | urlPatterns |
рдирдХрд╛рд╢рд╛рд╡рд░ url рдЪреА рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ (рдореВрд▓реНрдпрд╛рдРрд╡рдЬреА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ) |
6 | initParams |
рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯрдЪреЗ рд╕реНрдЯрд╛рд░реНрдЯ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ |
рен | asyncSupported |
рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕рдкрдгреЗ рдЪрд╛рд▓реВ рд╢рдХрддреЗ рд╣реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ (HTTP/2) |
8 | loadOnStartup |
рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдкреНрд░рд╛рд░рдВрдн рдкреНрд░рд╛рдзрд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдХреНрд░рдо рдХреНрд░рдорд╛рдВрдХ |
реп | smallIcon |
рдПрдХ рд▓рд╣рд╛рди рд╕рд░реНрд╡рд▓реЗрдЯ рдЪрд┐рдиреНрд╣ рд╕реЗрдЯ рдХрд░рддреЗ |
10 | largeIcon |
рдПрдХ рдореЛрдареЗ рд╕рд░реНрд╡рд▓реЗрдЯ рдЪрд┐рдиреНрд╣ рд╕реЗрдЯ рдХрд░рддреЗ |
рдпреЗрдереЗ рдЕрдиреЗрдХ рдордиреЛрд░рдВрдЬрдХ рдореБрджреНрджреЗ рдЖрд╣реЗрдд.
рдкреНрд░рдердо, рддреЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ value
рдЖрдгрд┐ рддреЗ urlPatterns
рдЕрджрд▓рд╛рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗрдд. рддреЗ рджреЛрдиреНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ URL рдЪреА рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд рдЬреНрдпрд╛рд╡рд░ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯрдиреЗ рдореЕрдк рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
asyncSupported
рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рд╕рд░реНрд╡рд▓реЗрдЯ HTTP/2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╡рд░ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╡рд░ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓ рдХреА рдирд╛рд╣реА рд╣реЗ рдкреЕрд░рд╛рдореАрдЯрд░ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ.
рдЖрдгрд┐ рддрд┐рд╕рд░рд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗ initParams
, рддреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯрдордзреНрдпреЗ рдареЗрд╡рд▓реЗрд▓реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рд╕реВрдЪреА рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ.
рдЙрджрд╛рд╣рд░рдг:
@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
:
рд╡рд┐рд╢реЗрд╖рддрд╛ | рд╡рд░реНрдгрди | |
---|---|---|
рез | filterName |
рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рд╡ рдлрд┐рд▓реНрдЯрд░ рдХрд░рд╛ (web.xml рдкреНрд░рдорд╛рдгреЗ) |
2 | displayName |
рдорд╛рдирд╡реА рд╡рд╛рдЪрдиреАрдп рдлрд┐рд▓реНрдЯрд░рдЪреЗ рдирд╛рд╡ |
3 | description |
рдлрд┐рд▓реНрдЯрд░ рд╡рд░реНрдгрди |
4 | value / urlPatterns |
рдирдХрд╛рд╢рд╛рд╡рд░ url рдЪреА рд╕реВрдЪреА рд╕реЗрдЯ рдХрд░рддреЗ |
рел | dispatcherTypes |
рдбрд┐рд╕реНрдкреЕрдЪрд░ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреА рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ |
6 | servletNames |
рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд▓реЗрдЯрдЪреА рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ |
рен | initParams |
рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд┐рд▓реНрдЯрд░рдЪреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ |
8 | asyncSupported |
рдлрд┐рд▓реНрдЯрд░ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕рдкрдгреЗ рдЪрд╛рд▓реВ рд╢рдХрддреЗ рд╣реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ (HTTP/2) |
реп | 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...
}
рдлрд┐рд▓реНрдЯрд░реНрд╕ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд▓реЗрдЯреНрд╕рдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдмрджреНрджрд▓ рддреБрдореНрд╣реА рдкреБрдвреАрд▓ рд▓реЗрдХреНрдЪрд░реНрд╕рдордзреНрдпреЗ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рд▓.