[JAVA] Mémo après le premier projet Spring-MVC-

introduction

Seules les connaissances de base de Java pur et DB Le projet Spring depuis le début s'est stabilisé après les turbulences, alors veuillez nous donner vos impressions et mémorandum. Le contenu de l'article est plus qu'un tutoriel et moins qu'une pratique. : speech_balloon: Le code affiché n'a pas été confirmé pour fonctionner, il est donc pour référence seulement. : priez: L'anglais est glissant, donc le japonais est diversifié, pardonnez-moi. : prie :: sanglote :: prie:

Environnement de développement

Red Hat (l'environnement de développement est la série Cent) 7 Java8 SpringBoot2.1.6 Série MySQL8 STS

À propos de MVC

Comprenant cela, concevons séparément la logique (modèle), l'écran (vue) et le contrôleur (contrôleur) qui les relie. Cependant, au printemps, les données échangées entre View et Controller sont appelées Model. J'étais inquiet si je pouvais comprendre MVC en premier lieu, mais j'ai arrêté de réfléchir profondément car la définition des mots est différente pour chaque cadre. : innocent: https://qiita.com/yo1000/items/a6acbf5f454a7f53aef9 https://qiita.com/takasek/items/70ab5a61756ee620aee6

manette

** · cartographie ** Ajoutez @GetMapping (" test ") à la méthode. @RequestMapping (" / test ") semble être vieux.

Il semble que ce qui est décrit entre parenthèses s'appelle un attribut. Ce qui précède est une abréviation pour @GetMapping (path =" test "). Lorsque vous souhaitez POST en organisant plusieurs boutons dans une balise de formulaire, vous pouvez le mapper à l'attribut params du contrôleur en spécifiant le nom en html.

view.html


<form method="POST" action="path1">
    <input type="submit" name="param1" />← Appuyez ici
    <input type="submit" name="param2" />
</form>

controller.java


@PostMapping(path="path1",params="param1")

** · Validation ** Il est fourni en fonction de Spring. Si vous pouvez utiliser BindingResult, vous pouvez implémenter une validation qui n'est pas liée au framework. Mais la plupart des choses peuvent être faites avec des annotations et une validation personnalisée. https://qiita.com/yakumo3390/items/4e47930ba643b45b7430

Les messages sont également fournis avec des caractères intégrés et une prise en charge multilingue dans messages.properties, mais je n'ai pas pu l'utiliser car c'était une exigence pour gérer les messages dans DB.

En ajoutant un attribut de groupe, vous pouvez spécifier ou exclure des cibles de validation. J'ai fait une classe vide pour cela, mais je pense qu'il existe une manière plus intelligente. https://tech.asoview.co.jp/entry/2019/12/11/104928

** · revenir ** Fondamentalement, il s'agit d'une chaîne de caractères qui représente le chemin de vue. Il existe également des redirections et des transferts. Au moment de la redirection, si vous compressez la valeur dans RedirectAttributes, elle atteindra la destination de la transition. http://www.ne.jp/asahi/hishidama/home/tech/java/spring/boot/web/Controller.html#h_forward_attribute

Lors du passage d'un objet, si toString () est implémenté, il peut être passé tel quel, sinon cela semble être un problème. https://grandbig.github.io/blog/2016/05/28/redirect-parameter-spring-boot/

À propos des vues

Utilisez thymeleaf (feuille de temps). Difficile à lire et à épeler. : embrasser: Un soi-disant modèle. Veuillez noter que si vous ne vérifiez pas seulement l'écran mais aussi le code HTML généré, ce sera une description sympa.

Bien que th: field soit pratique, il ne peut pas être utilisé lorsqu'il est combiné avec JavaScript qui souhaite spécifier le nom et l'ID. Vous voudrez peut-être comprendre ce que vous faites. https://qiita.com/beeeyan/items/5bd820e55cb53f176b3e

Soyez prudent lorsque vous utilisez des variables dans JavaScript. Les exceptions sont difficiles à trouver, et si vous utilisez l'objet entier, il sera développé en html et ce n'est pas bon pour la sécurité, et vous serez surpris quand vous le verrez. [Document officiel 12.2 Traitement en ligne des scripts (JavaScript et Dart)](https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf_ja.html#%E3%82%B9%E3%82%AF%E3% 83% AA% E3% 83% 97% E3% 83% 88% E3% 81% AE% E3% 82% A4% E3% 83% B3% E3% 83% A9% E3% 82% A4% E3% 83% B3% E5% 87% A6% E7% 90% 86-javascript-% E3% 81% A8-fléchette)

À propos du service

Où écrire la logique métier.

Cette fois, en principe, un service a été créé pour une table. Et quelques classes polyvalentes. Le but était de réduire les couches qui peuvent accéder à la base de données, mais une classe a ensuite grossi. : froncer les sourcils2: Il peut être préférable de créer un service pour un écran et de traiter les données acquises à partir de la base de données avec le référentiel. Ou ajoutez-vous une couche qui décrit la logique d'un écran? .. .. ?? : confus: Untitled Diagram.png

Autres notes

Mémo après le premier projet Spring-What is Spring- Mémo après le premier projet Spring-Database-

Recommended Posts

Mémo après le premier projet Spring-MVC-
Mémo après le premier projet Spring-Database-
Spring Boot pour la première fois
Spring AOP pour la première fois
Mémo rétrospective du printemps
Mémo JJUG CCC Printemps 2018
Notes d'utilisation de Spring Shell
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Rédaction de mémos de démarrage de printemps (2)
Mémo d'apprentissage lors de l'apprentissage de Java pour la première fois (mémo d'apprentissage personnel)
Un livre lu après que l'ingénieur de première année a rejoint l'entreprise
La première application WEB avec Spring Boot-Making a Pomodoro timer-
Mémo d'utilisation de Spring Security CSRF
Série de mémos d'auto-apprentissage Spring Framework_1
Mémo d'utilisation de Spring Security Run-As
Ceci est le premier message.
Mémo d'utilisation de Spring Security Remember-Me
Essayez le tutoriel Spring WebFlux
Mémo d'utilisation de Spring Security CORS
Test de mémo d'utilisation de Spring Security
Mémo de méthode de contrôleur de démarrage à ressort