Only the basic knowledge of pure Java and DB The Spring project from the start has settled down after the turbulence, so please give us your impressions and memorandum. The content of the article is more than a tutorial and less than a practice. : speech_balloon: The posted code has not been confirmed to work, so it is for reference only. : pray: English is slippery, so Japanese is diverse, forgive me. : pray :: sob :: pray:
Red Hat (development environment is Cent) 7 series Java8 SpringBoot2.1.6 MySQL8 series STS
Understanding that let's design separately the logic (Model), the screen (View) and the controller (Controller) that connects them. But in Spring, the data exchanged between View and Controller is called Model. I was worried if I could understand MVC in the first place, but I stopped thinking deeply because the definition of words is different for each framework. : innocent: https://qiita.com/yo1000/items/a6acbf5f454a7f53aef9 https://qiita.com/takasek/items/70ab5a61756ee620aee6
·mapping
Add @GetMapping ("test")
to the method. @RequestMapping ("/ test")
seems to be old.
It seems that what is described in parentheses is called an attribute. The above is an abbreviation for @GetMapping (path =" test ")
.
When you want to POST by arranging multiple buttons in one form tag, you can map it with the params attribute of the controller by specifying name in html.
view.html
<form method="POST" action="path1">
<input type="submit" name="param1" />← Press here
<input type="submit" name="param2" />
</form>
controller.java
@PostMapping(path="path1",params="param1")
** ・ Validation **
It is provided as a function of Spring.
If you can operate BindingResult
, you can implement validation that is not bound by the framework.
But if you make full use of annotations and custom validation, you can do most of the things.
https://qiita.com/yakumo3390/items/4e47930ba643b45b7430
Messages are also provided with embedded characters and multilingual support in messages.properties, but I could not use it because it was a requirement to manage messages in DB.
By adding a group attribute, you can specify or exclude validation targets. I made an empty class for this, but I feel like there is a smarter way. https://tech.asoview.co.jp/entry/2019/12/11/104928
** ・ return **
Basically, it is a character string that represents the Path of View.
There are also redirect and forward.
At the time of redirect, if you pack the value in RedirectAttributes
, it will reach the transition destination.
http://www.ne.jp/asahi/hishidama/home/tech/java/spring/boot/web/Controller.html#h_forward_attribute
When passing an object, if toString ()
is implemented, it can be passed as it is, otherwise it seems to be a hassle.
https://grandbig.github.io/blog/2016/05/28/redirect-parameter-spring-boot/
Use thymeleaf (time leaf). Difficult to read and spell. : kissing: So-called template. Please note that if you do not check not only the screen but also the generated html, it will be a cool description.
Although th: field is convenient, it may not be used when combined with JavaScript that wants to specify name and id. It might be good to understand what you are doing. https://qiita.com/beeeyan/items/5bd820e55cb53f176b3e
Be careful when using variables in JavaScript. Exceptions are hard to find, and if you use the whole object, it will be expanded on html and it is not good for security, and you will be surprised when you see it. [Official Document 12.2 Inline Script Processing (JavaScript and 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-dart)
Where to write business logic.
This time, in principle, one service was created for one table. And some general-purpose classes. The purpose was to narrow down the layers that can access the DB, but then one class swelled up. : frowning2: It may be better to create one service for one screen and process the data acquired from the DB with Repository. Or do you add a layer that describes the logic for one screen? .. .. ?? : confused:
Memo after the first Spring project-What is Spring- Memo after the first Spring project-Database-
Recommended Posts