JavaRush /Java Blog /Random-TK /Bahar gorkunç däl. Kukiler we sözbaşylar

Bahar gorkunç däl. Kukiler we sözbaşylar

Toparda çap edildi
Makalalaryň sikliniň mazmuny Gaýtalamak öwrenmegiň enesidir! Şonuň üçin öňki makalalara esaslanyp, täze web bahar-boot taslamasyny döredeliň: MobilePhonePayment Connect h2, Lombok. Gurluş gatlagyny dörediň: BalancePhoneEntity Integer id; Bitewi nomerPhone; Setir adyCustomer; Bitewi balans; Usullar bilen hyzmatlar gatlagyny dörediň: - Maglumat bazasyndaky ähli ýazgylary gözläň - idazgysyny id bilen gözläň - Telefon belgisi boýunça ýazgyny gözläň - Ulanyjy ady boýunça ýazgy gözläň (ýazgylaryň bir sahypasyny yzyna gaýtarmaly, atlar bolup biler şol bir boluň)
public List<BalanceEntity> findByNameCustomer(String nameCustomer){
    return balanceRepository.findAllByNameCustomer(nameCustomer);
}
- Maglumat bazasyna ýazgy goşmak - Maglumat bazasyndan ýazgyny aýyrmak - Iş usuly: Telefon balansyny doldurmak - usul telefon belgisini, mukdaryny (Integer görnüşi) almaly we görkezilenler bilen degişli belginiň balansyny ýokarlandyrmaly. mukdary.
public void addingMoneyToBalance(Integer phoneNumber, Integer sum) {
    BalanceDto byPhoneNumber = findByPhoneNumber(phoneNumber);
    byPhoneNumber.setBalance(byPhoneNumber.getBalance() + sum);
    save(byPhoneNumber);//метод save() – добавление, реализован в сервисе
}
DTO-dan Entity we arka kartalaşdyrmagy amala aşyrmagy ýatdan çykarmaň. Dto Entity bilen meňzeş bolar: BalancePhoneDto Integer id; Bitewi telefon; Setir adyCustomer; Bitewi balans; DTO gatlagyny dörediň, “InitiateUtils” synpyny dörediň we maglumatlar binýadyny maglumat bilen dolduryň: id 1, nomerPhone 555000, balans 100, müşderi Iwan id 2, nomer telefon 444000, balans 250, müşderi Marya id 3, nomerPhone 111000, balans 60, müşderi Ivan Create dynç alyjy, ýöne usullar bilen doldurmaga howlukmaň. Öňki makalany yzarlasaňyz, ähli ýazgylary görkezmegiň usuly şuňa meňzeş bir zat bolmalydy (indi makala teswirlere - esasanam Wasiliý Babiniň teswirine seretmegi maslahat berýärin):
//поиск записи по id - старая version
@GetMapping(value = "/find-phone/{id}")
public ResponseEntity<BalanceDto> findPhone(@PathVariable Integer id) {
    BalanceDto balanceDto = balanceService.findById(id);
    return balanceDto != null
            ? new ResponseEntity<>(balanceDto, HttpStatus.OK)
            : new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Konstruktor ulanman, “ResponseEntity” ulanmagyň başga bir usuly bar. Ulanmagyny dowam etdireris. “ResponseEntity” iki sany içerki gurluşykçy interfeýsini açýar: “HeadersBuilder” we onuň aşaky bölegi “BodyBuilder”. Şol sebäpli, olaryň mümkinçiliklerine “ResponseEntity” -iň statiki usullary arkaly girip bileris. Bu makalada has köp okap bilersiňiz . Galan gözegçilik ediji usullary aşakdaky ýaly amala aşyrylyp bilner: 1) idazgyny id arkaly görkezmek
//поиск записи по id
@GetMapping(value = "/find-number-phoneById/{id}")
public ResponseEntity<?> findNumberPhoneById(@PathVariable Integer id) {
    BalanceDto balanceDto = balanceService.findById(id);
    return balanceDto != null
            ? ResponseEntity.ok(balanceDto)
            : ResponseEntity.ok().body(HttpStatus.NOT_FOUND);
}
Poçta bölüminde synag edýäris (Bu barada öňki makalada gürleşipdik, ine, bu programma barada başga bir kiçijik gollanma ). Başlaýarys, GET haýyş görnüşini saýlaýarys, URL setirinde ýazýarys: http: // localhost: 8080 / find-number-phoneById / 1 - talap setirinde id parametrini geçdik, çykyşda ýazgy alarys id 1-e deňdir. Täze kody goşanyňyzdan soň, taslamany täzeden açmagy ýatdan çykarmaň 😇 2) recordsazgylary ady bilen görkeziň
//поиск записи по имени пользователя
@GetMapping(value = "/find-number-phoneByName/{name}")
public ResponseEntity<?> findNumberPhone(@PathVariable String name) {
    List<BalanceDto> balanceDto = balanceService.findByNameCustomer(name);
    return balanceDto != null &&  !balanceDto.isEmpty()
            ? ResponseEntity.ok(balanceDto)
            : ResponseEntity.ok().body(HttpStatus.NOT_FOUND);
}
Geliň, täze haýyş döredeliň, GET haýyş görnüşini saýlaň, URL setirinde ýazyň: http: // localhost: 8080 / find-number-phoneByName / Ivan - adyň parametrini talap setirinde geçirdik we çykyşda ederis Iwana deň bolan “Customer” ady bilen ýazgylaryň sanawyny alyň. Belki, çykyşda şuňa meňzeş bir zat alarsyňyz:% D1% 8D% D1% 82% D0% BE% 20% D0% BD% D0% B5% 20% D0% BE% D1% 88% D0% B8% D0 % B1% D0% BA% D0% B0 Bu ýalňyşlyk däl - haýyş kodlamagyň aýratynlyklary, bu hakda okaň . Ine , munuň bolmazlygy üçin Postmany nädip sazlamalydygy ýazylýar . 3) recordshli ýazgylaryň netijesi:
//поиск всех записей
@GetMapping(value = "/findAll")
public ResponseEntity<?> findAll() {
    List<BalanceDto> balanceDto = balanceService.findAll();
    return balanceDto != null &&  !balanceDto.isEmpty()
            ? ResponseEntity.ok(balanceDto)
            : ResponseEntity.ok().body(HttpStatus.NOT_FOUND);
}
Täze haýyş döredýäris, GET haýyş görnüşini saýlaýarys, URL setirine ýazýarys: http: // localhost: 8080 / findAll - bu ýerde hiç hili parametr geçmeýäris. 4) Täze ýazgy goşmak:
//добавление новой записи
@PostMapping(value = "/entry")
public ResponseEntity<?> entryNumber(@RequestBody BalanceDto dto){
    balanceService.save(dto);
    return ResponseEntity.ok().body(HttpStatus.CREATED);
}
Täze haýyş döredýäris, POST haýyş görnüşini saýlaýarys we URL setirine ýazýarys: http: // localhost: 8080 / giriş. Bu haýyşda bir obýekti JSON formatda geçirmeli. Talap penjiresinde “Beden” goýmasyna giriň, baýdagy çig görnüşde düzüň, Tekstiň gapdalyndaky oky basyň we JSON saýlaň. Aşakdaky JSON-y penjire göçüriň:
{
        "numberPhone": 767676,
        "nameCustomer": "Sasha",
        "balance": 100
}
Islegiň ýerine ýetirilmegine basanymyzda, jogap ýagdaýy REARADYL .AR. Indi FindAll-dan soraň we täze ýazgynyň peýda bolandygyna göz ýetiriň. 5) id bilen ýazgyny pozmak
//удаление записи по id
@DeleteMapping(value = "/delete-phoneById/{id}")
public ResponseEntity<?> delete(@PathVariable Integer id) {
    balanceService.delete(id);
    return ResponseEntity.ok().body(HttpStatus.OK);
}
Täze haýyş döredýäris, DELETE haýyş görnüşini saýlaýarys, URL setirine ýazyň: http: // localhost: 8080 / delete-phoneById / 4 - haýyş setirinde id parametrini geçirdik, çykyşda OK ýagdaýyny alýarys . Indi hemmesini tapmak we Saşanyň ýoklugyna göz ýetirmek üçin başga bir haýyş ediň. 6) Belgini ID boýunça üýtgetmek
//изменение номера телефона по id
@PutMapping(value = "/change")
public ResponseEntity<?> changeNumberPhone(
//можно добавлять несколько параметров в request
        @RequestParam(value = "id") Integer id, //добавor один параметр
        @RequestParam(value = "phoneNumber") Integer phoneNumber) //добавor второй параметр
 {
    BalanceDto byId = balanceService.findById(id);
    byId.setNumberPhone(phoneNumber);
    balanceService.save(byId);
    return ResponseEntity.ok().body(HttpStatus.OK);
}
Täze haýyş döredýäris, PUT haýyş görnüşini saýlaýarys we URL setirine ýazýarys: http: // localhost: 8080 / üýtgetmek. Bu haýyşda birnäçe parametr bar we görşüňiz ýaly, olary öňküsi ýaly talap setirinde geçirmeýäris. @RequestParam düşündirişi usulda parametrler üçin ulanylýar. Poçta bölüminiň üsti bilen parametrleri geçirmek üçin haýyş penjiresindäki Params goýmasyna girip, Açar sütündäki parametriň (id) adyny görkezmeli we Gymmat sütünindäki bahany (1) görkezmeli. Ikinji parametr, Key = phoneNumber, Value = 888000 bilen edil şonuň ýaly edýäris. Talap setirine üns beriň, Poçta poçta parametrlerini dogry geçirmek üçin ony üýtgetdi. Çykyş, ýagdaýy gowy görkezer. Indi “FindAll” -y ýene bir gezek soraň we ilkinji ýazgy üçin telefon belgisiniň üýtgändigine göz ýetiriň. 7) Telefon balansyňyzy dolduryň
@PutMapping(value = "/add")
public ResponseEntity<?> addingMoney(
        //можно добавлять несколько параемров в request
        @RequestParam(value = "phoneNumber") Integer phoneNumber,//добавor один параметр
        @RequestParam(value = "sum") Integer sum) //добавor второй параметр
{
    balanceService.addingMoneyToBalance(phoneNumber, sum);
    return ResponseEntity.ok().body(HttpStatus.OK);
}
Täze haýyş döredýäris, PUT haýyş görnüşini saýlaýarys we URL setirine ýazýarys: http: // localhost: 8080 / add. TelefonNumber bahasyny 888000, jemi 130-a belledik. Çykyş OK ýagdaýyny görkezer. Indi findAll haýyşyny täzeden işlediň we ilkinji ýazgynyň balansynyň üýtgändigine göz ýetiriň. 8) Talap ediji organyň üsti bilen goýuň - iberilen maglumatlary açmazlyk üçin muny etmek has gowudyr
@PutMapping(value = "/add")
public ResponseEntity<?> addingMoney(@RequestBody BalanceDto dto){
    balanceService.addingMoneyToBalance(dto.getPhoneNumber, dto.getSum);
    return ResponseEntity.ok().body(HttpStatus.OK);
}
JSON iberýäris
{
        "numberPhone": 888000,
       //  "nameCustomer" можно вообще не указывать
        "balance": 130
}
Ahyrynda "Cookie" -e geçýäris. Kukiler näme ? Plyönekeý söz bilen aýdanyňda: Kukiler brauzer tarapyndan bir gezek alnan programmada saklanýar, soňra bolsa saýtda birnäçe gezek ulanylyp bilner. Iki esasy zady bilmeli: gutapjyklary nädip ýazmaly we nädip okamaly. Nädip ýazmaly: Springhli bahar web MVC, iki obýektiň töwereginde gurlan Servlet API-iň üstünde amala aşyrylýar - müşderiniň haýyşy HttpSerlvetRequest bilen örtülendir we jogap koduňyz bilen doldurylan HttpServletResponse-den alynýar. Bu obýektlere girmek bilen, tutuş HTTP sessiýasyna doly gözegçilik edip bilersiňiz. Bahar web bu obýektlere göni girmäge mümkinçilik berýär. Adatça “Cookie”, kontrolda bir usul döredeliň
//записать куки
 @GetMapping(value = "/set-cookie")
public ResponseEntity<?> setCookie(HttpServletResponse response) throws IOException {
     Cookie cookie = new Cookie("data", "Come_to_the_dark_side");//создаем an object Cookie,
     //в конструкторе указываем значения для name и value
     cookie.setPath("/");//устанавливаем путь
     cookie.setMaxAge(86400);//здесь устанавливается время жизни куки
     response.addCookie(cookie);//добавляем Cookie в request
     response.setContentType("text/plain");//устанавливаем контекст
     return ResponseEntity.ok().body(HttpStatus.OK);//получилось How бы два раза статус ответа установor, выбирайте Howой вариант лучше
 }
Poçta salgysynda GET haýyşyny edeliň: http: // localhost: 8080 / set-cookie we çykyş gowy bolar. Penjiräniň ýokarsynda "Cookie" (1) ýazgysyny tapyň, üstüne basyp, iberen gutapjyklarymyzy görersiňiz. Ady: maglumatlar, baha: Geliň_to_tark_side. Java-da Cookie synpynyň esasy aýratynlyklary barada maglumat . Nädip okamaly: Okamak has aňsat
//прочитать куки
@GetMapping(value = "/get-cookie")
public ResponseEntity<?> readCookie(@CookieValue(value = "data") String data) {
    return ResponseEntity.ok().body(data);
}
@CookieValue-da, bahasyny okajak gutapjygyň adyny görkezýäris we okalýan bahany jogapda görkezýäris. Geliň_to_the_dark_side Indi iň oňat sagat geldi ( sözbaşylar , PHP baradaky makala seretmäň, okamak gaty peýdaly): Ilki bilen, sözbaşylary nädip okap boljakdygyňyzy göreliň:
//прочитать заголовки
@GetMapping(value = "/get-headers")
public ResponseEntity<?> getHeaders(@RequestHeader Map<String, String> headers){//представляет заголовки ввиде мапы,
    //где ключ это наименование заголовка, а meaning мапы - это meaning заголовка
    return ResponseEntity.ok(headers);
}
Esasy iş @RequestHeader Map <String, String> tarapyndan ýerine ýetirilýär , ol sözbaşy karta görnüşinde görkezýär, bu ýerde açar sözbaşynyň ady, kartanyň gymmaty sözbaşynyň bahasydyr. Bu usuly brauzer ulanyp barlamak, brauzeri açmak, gözleg setirine http: // localhost: 8080 / get-headers ýazmak has gyzykly we netijede sözbaşylaryň giň sanawyny alýarys. Google näme üçin zerurdygyna düşünmek üçin her bir at. Wikipediýa atlaryň sanawyny hem hödürleýär. "Kimdir biri bir zady okasa, kimdir biri ýazdy" köne programma. Adyny ýazalyň
//записать заголовок
@GetMapping(value = "/set-header")
public ResponseEntity<?> setHeader(){
    return ResponseEntity.ok().header("name-header","value-header").body(HttpStatus.OK);
}
Bu ýerde “ResponseEntity” synpynyň ýörite sözbaşy usulyny ulandyk . Nirede "name-header" sözbaşynyň ady, "value-header" sözbaşynyň bahasy. Sözbaşylar bilen işlemek üçin başga wariantlar bar
//еще варианты работы с заголовками
@GetMapping(value = "/set-headers")
public ResponseEntity<?> setHeaders() {
    HttpHeaders httpHeaders = new HttpHeaders();//создаем an object
    //который имплементирует мапу MultiValueMap<String, String>
    //наполняем ее парами ключ-meaning
    //можно наполнить своими заголовками через метод add
    httpHeaders.add("customer-header", "value-header1");
    //HttpHeaders так же предлагает большой выбор стандартных заголовков
    //Посмотрите на них набрав в IDEA HttpHeaders.
    httpHeaders.add(HttpHeaders.FROM, "russia");
    //можно изменить существующий заголовок, вызвав для него сет-метод
    httpHeaders.setDate(0);
    //or получить meaning конкретного заголовка
    Long date = httpHeaders.getDate();
    System.out.println(date);
    return ResponseEntity
            .ok().headers(httpHeaders)//здесь метод принимающий MultiValueMap<String, String>
            .body(HttpStatus.OK);
}
Bu ýerde MultiValueMap <String, String> görnüşiniň bahasyny alýan “ResponseEntity” synpynyň başga bir usulyny ulanýarys . Şeýle hem brauzerde nähili işleýändigini barlamak has maglumatly bolar. Http: // localhost: 8080 / set-headers adresine girýäris, ýagdaýyň gowydygy barada jogap alýarys. Ajaýyp bolsaňyz we Google Chrome ulanýan bolsaňyz, Ctrl + Shift + I düwmesiniň kombinasiýasyny basyň we "Öndüriji gurallary" -a giriň, soňra ýokarky paneldäki Tor belligini gözläň, ýazgyny basyň: set-headers ( ol ýerde ýok bolsa, sahypany täzeläň) şol ýere basyň we açylýan penjirede " ersazgylar" goýmasyny saýlaň we "ResponseHeaders" -de sözbaşylarymyzy görýäris. Sözbaşylar bilen tanyşmak üçin häzirlikçe ýeterlik. Indi okaň: “ResponseEntity” -ni öwrenmek <! -? -> we Bahar dolandyryjylarynda ondan dynmak bilen, rugsat alaýyn 🤓, ýene görüşeris ...
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION