рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдорд╡реАрд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реЗрд╢рдирдЕрд╡реЗрдиреНрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдкрд░рд┐рдЪрдп


рдпрд╣ рд▓реЗрдЦ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдлрд┐рд▓реНрдо рдЯрд┐рдХрдЯ рдмреБрдХрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдмреБрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рдкрд╣рд▓реЗ рдкреЗрдЬ рдкрд░ рд╡рд╣ рд╕рддреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░ рдЙрд╕рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛, рддреАрд╕рд░реЗ рдкрд░ - рднреБрдЧрддрд╛рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ред рдЕрдВрддрд┐рдо рдкреГрд╖реНрда рдЖрд░рдХреНрд╖рдг рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рд╕рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд░рдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рддреНрд░ рд╕реЗ рдбреЗрдЯрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ


рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдорд╡реАрд╕реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЗрдкреА рдХреЛ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ:



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ: рдмреБрдХрд┐рдВрдЧ редjsp

 <% @ рдкреГрд╖реНрда contentType = "text / html; charset = UTF-8" рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛"%>
 <% @ taglib uri = "http://www.springframework.org/tags/form" рдЙрдкрд╕рд░реНрдЧ = "рдлрд╝реЙрд░реНрдо"% 1
 <Html>
 <Head>
     <рд╢реАрд░реНрд╖рдХ> рдмреБрдХрд┐рдВрдЧ рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда </ рд╢реАрд░реНрд╖рдХ>
 </ Head>
 <Body>
     <рдлрд╝реЙрд░реНрдо: рдлрд╝реЙрд░реНрдо рдХрд╛рд░реНрд░рд╡рд╛рдИ = "/ рдмреБрдХрд┐рдВрдЧ / рдлрд┐рд▓реНрдо" рдореЙрдбрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ = "рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо">
         рдореВрд╡реА рдЖрдИрдбреА: <рдлреЙрд░реНрдо: рдЗрдирдкреБрдЯ рдкрде = "рдореВрд╡реАрдЖрдИрдб" />
         <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд╕рдмрдорд┐рдЯ" />
     </ рдлреЙрд░реНрдо: рдлрд╝реЙрд░реНрдо>
 </ Body>
 </ Html>


рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ: customer.jsp

 <% @ рдкреГрд╖реНрда contentType = "text / html; charset = UTF-8" рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛"%>
 <% @ taglib uri = "http://www.springframework.org/tags/form" рдЙрдкрд╕рд░реНрдЧ = "рдлрд╝реЙрд░реНрдо"% 1
 <Html>
 <Head>
     <рд╢реАрд░реНрд╖рдХ> рдЧреНрд░рд╛рд╣рдХ рдкреГрд╖реНрда </ рд╢реАрд░реНрд╖рдХ>
 </ Head>
 <Body>
     <рдлрд╝реЙрд░реНрдо: рдлрд╝реЙрд░реНрдо рдХрд╛рд░реНрд░рд╡рд╛рдИ = "/ рдмреБрдХрд┐рдВрдЧ / рдЧреНрд░рд╛рд╣рдХ" рдореЙрдбрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ = "рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо">
         рдЕрдВрддрд┐рдо рдирд╛рдо: <рдлреЙрд░реНрдо: рдЗрдирдкреБрдЯ рдкрде = "рдЕрдВрддрд┐рдо рдирд╛рдо" />
         <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд╕рдмрдорд┐рдЯ" />
     </ рдлреЙрд░реНрдо: рдлрд╝реЙрд░реНрдо>
 </ Body>
 </ Html>


рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ: рднреБрдЧрддрд╛рди

 <% @ рдкреГрд╖реНрда contentType = "text / html; charset = UTF-8" рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛"%>
 <% @ taglib uri = "http://www.springframework.org/tags/form" рдЙрдкрд╕рд░реНрдЧ = "рдлрд╝реЙрд░реНрдо"% 1
 <Html>
 <Head>
     <рд╢реАрд░реНрд╖рдХ> рднреБрдЧрддрд╛рди рдкреГрд╖реНрда </ рд╢реАрд░реНрд╖рдХ>
 </ Head>
 <Body>
     <рдлреЙрд░реНрдо: рдлреЙрд░реНрдо рдПрдХреНрд╢рди = "/ рдмреБрдХрд┐рдВрдЧ / рднреБрдЧрддрд╛рди" рдореЙрдбрд▓ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ = "рдЯрд┐рдХрдЯрдлреЙрд░реНрдо">
         рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдирдВрдмрд░: <рдлреЙрд░реНрдо: рдЗрдирдкреБрдЯ рдкрде = "рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдбрдирдВрдмрд░" />
         <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд╕рдмрдорд┐рдЯ" />
     </ рдлреЙрд░реНрдо: рдлрд╝реЙрд░реНрдо>
 </ Body>
 </ Html>


рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ: рдкреБрд╖реНрдЯрд┐рдХрд░рдг редjsp

 <% @ рдкреГрд╖реНрда contentType = "text / html; charset = UTF-8" рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛"%>
 <Html>
 <Head>
     <рд╢реАрд░реНрд╖рдХ> рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдкреГрд╖реНрда </ рд╢реАрд░реНрд╖рдХ>
 </ Head>
 <Body>
     рдЕрдкрдиреА рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
 </ Body>
 </ Html>


рдлрд╛рд░реНрдо:

 рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдЯрд┐рдХрдЯрдлрд╛рд░реНрдо {

     рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд┐рд▓реНрдо рдЖрдИ рдбреА;
     рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдВрддрд┐рдо рдирд╛рдо;
     рдирд┐рдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд░реЗрдбрд┐рдЯрдХрд╛рд░реНрдбрдирдВрдмрд░;

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ getMovieId () {
         рд░рд┐рдЯрд░реНрди рдореВрд╡реАрдЖрдИрдбреА;
     }

     public void setMovieId (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд┐рд▓реНрдо рдЖрдИ) {
         this.movieId = movieId;
     }

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ getLastName () {
         рдЕрдВрддрд┐рдо рдирд╛рдо;
     }

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕реЗрдЯрд▓реИрд╕реНрдЯрдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдВрддрд┐рдо рдирд╛рдо) {
         this.lastName = lastName;
     }

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ getCreditCardNumber () {
         рд╡рд╛рдкрд╕реА рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдбрдирдВрдмрд░;
     }

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕реЗрдЯ рдХрд░реЗреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдбрдирдВрдмрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдбрдирдВрдмрд░) {
         this.creditCardNumber = creditCardNumber;
     }

 }


BookTicketController рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ @SessionAttributes рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдЕрдм рдореЙрдбрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдЯрд┐рдХрдЯрдлреЙрд░реНрдо рдкреНрд░рдХрд╛рд░ рднреА рд╕рддреНрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред @SessionAttributes рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 рдЖрдпрд╛рдд org.springframework.stereotype.Controller;
 рдЖрдпрд╛рдд org.springframework.ui.Model;
 рдЖрдпрд╛рдд org.springframework.util.Assert;
 рдЖрдпрд╛рдд org.springframework.web.bind.annotation.RequestMapping;
 рдЖрдпрд╛рдд org.springframework.web.bind.annotation.RequestMethod;
 рдЖрдпрд╛рдд org.springframework.web.bind.annotation.SessionAttributes;
 рдЖрдпрд╛рдд org.springframework.web.bind.support.SessionStatus;

 @Controller
 @RequestMapping (рдореВрд▓реНрдп = "/ рдмреБрдХрд┐рдВрдЧ")
 @ рд╕рддреНрд░рдЕрднрд┐рдпреЛрдЧ (рдкреНрд░рдХрд╛рд░ = рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдХреНрд▓рд╛рд╕)
 рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдмреБрдХ рдЯрд┐рдХрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ {

     @RequestMapping (рд╡рд┐рдзрд┐ = RequestMethod.GET)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░рдВрдн (рдореЙрдбрд▓ рдореЙрдбрд▓) {
         // рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж () рдлреЙрд░реНрдо рдХреЛ http рд╕рддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП @SessionAttributes (рдкреНрд░рдХрд╛рд░ = TicketForm.class) рдХреА рдмрджреМрд▓рдд рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
         model.addAttribute (рдирдпрд╛ рдЯрд┐рдХрдЯрдлреЙрд░реНрдо ()); 
         рд╡рд╛рдкрд╕реА "рдмреБрдХрд┐рдВрдЧ / рдмреБрдХрд┐рдВрдЧ";
     }

     @RequestMapping (рдорд╛рди = "/ рдлрд┐рд▓реНрдо", рд╡рд┐рдзрд┐ = RequestMethod.POST)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрдпрдирдореВрд╡реА (рдЯрд┐рдХрдЯрдлреЙрд░реНрдо рдЯрд┐рдХрдЯрдлреЙрд░реНрдо) {

         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо);
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯрдореВрд╡реАрдЖрдИрдПрдирдбреА ());

         рд╡рд╛рдкрд╕реА "рдмреБрдХрд┐рдВрдЧ / рдЧреНрд░рд╛рд╣рдХ";
     }

     @RequestMapping (рдорд╛рди = "/ рдЧреНрд░рд╛рд╣рдХ", рд╡рд┐рдзрд┐ = RequestMethod.POST)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдВрдЯрд░рдХрд╛рдбрд░рдбреЗрдЯрд╛ (рдЯрд┐рдХрдЯрдлреЙрд░реНрдо рдЯрд┐рдХрдЯрдлреЙрд░реНрдо) {

         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо);
         // MovieId рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЗрдПрд╕рдкреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реЗрд╢рдирдореВрд╡реА () рдХреЗ рджреМрд░рд╛рди рд╕рддреНрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯрдореВрд╡реАрдЖрдИрдПрдирдбреА ());
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯ рд▓рд╛рд╕реНрдЯрдирд╛рдо ());

         рд╡рд╛рдкрд╕реА "рдмреБрдХрд┐рдВрдЧ / рднреБрдЧрддрд╛рди";
     }

     @RequestMapping (рдорд╛рди = "/ рднреБрдЧрддрд╛рди", рд╡рд┐рдзрд┐ = RequestMethod.POST)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдВрдЯрд░рдкреЗрдореЗрдВрдЯрдбреЗрд▓ (рдЯрд┐рдХрдЯрдлреЙрд░реНрдо рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо) {

         // MovieId рдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЗрдПрд╕рдкреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реЗрд╢рдирдореВрд╡реА () рдХреЗ рджреМрд░рд╛рди рд╕рддреНрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯрдореВрд╡реАрдЖрдИрдПрдирдбреА ());
         // lastName рдХреЛ рднреБрдЧрддрд╛рди рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЗрдПрд╕рдкреА, рд▓реЗрдХрд┐рди рдпрд╣ enterCustomerData () рдХреЗ рджреМрд░рд╛рди рд╕рддреНрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯ рд▓рд╛рд╕реНрдЯрдирд╛рдо ());
         Assert.notNull (рдЯрд┐рдХрдЯрдлрд╝реЙрд░реНрдо.рдЧреЗрдЯрдХреНрд░реЗрдбрд┐рдЯрдХреЙрд░реНрдбрдирдВрдмрд░ ());

         рд╡рд╛рдкрд╕реА "рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд: / рдмреБрдХрд┐рдВрдЧ / рдкреБрд╖реНрдЯрд┐";
     }

     @RequestMapping (рдорд╛рди = "/ рдкреБрд╖реНрдЯрд┐", рд╡рд┐рдзрд┐ = RequestMethod.GET)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ (SessionStatus рд╕реНрдерд┐рддрд┐) {
         status.setComplete ();  // рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рддреНрд░
         рд╡рд╛рдкрд╕реА "рдмреБрдХрд┐рдВрдЧ / рдкреБрд╖реНрдЯрд┐";
     }

 }


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛


рдЖрдк SessionAttributes рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП SessionStatus рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 @RequestMapping (рдорд╛рди = "/ рдкреБрд╖реНрдЯрд┐", рд╡рд┐рдзрд┐ = RequestMethod.GET)
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ (SessionStatus рд╕реНрдерд┐рддрд┐) {
         status.setComplete ();
         рд╡рд╛рдкрд╕реА "рдмреБрдХрд┐рдВрдЧ / рдкреБрд╖реНрдЯрд┐";
     }


Status.setComplete () рдХреЙрд▓ рдХрд░рдХреЗ; рдЖрдк рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, HTTP рд╕рддреНрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рд╕рддреНрд░рд╛рдВрдХ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

Source: https://habr.com/ru/post/In199048/


All Articles