Ceci est une continuation de ici. Cette fois, nous allons créer une page générale de création d'utilisateurs.
Créez un contrôleur pour la page de création générale des utilisateurs.
D:\JAVA\Project\securitySample\src\main\java\com\example
└─controller
└─UserRegController.java
UserRegController.java
UserRegController.java
package com.example.web.controller;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.example.persistence.entity.UserInfo;
import com.example.service.AuthService;
import com.example.web.form.AuthForm;
@Controller
@RequestMapping("/userReg")
public class UserRegController {
@Autowired
AuthService authService;
final static Map<String, String> CHECK_ITEMS =
Collections.unmodifiableMap(new LinkedHashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("Rouleau 1", "ROLE_Role1");
put("Rouleau 2", "ROLE_Role2");
put("Rouleau 3", "ROLE_Role3");
}
});
@GetMapping("/index")
public String index(Model model) {
List<UserInfo> userInfoList = authService.findUserAll();
model.addAttribute("userInfoList", userInfoList);
return "userReg/index";
}
@GetMapping("/registered")
public String registeredGet() {
return "userReg/registered";
}
@GetMapping("/insert")
public String insertGet(Model model) {
model.addAttribute("authForm", new AuthForm());
model.addAttribute("checkItems", CHECK_ITEMS);
return "userReg/insert";
}
@PostMapping("/insert")
public String insertPost(Model model, RedirectAttributes attributes,
@Valid AuthForm authForm, BindingResult bindingResult, HttpServletRequest request) {
if (bindingResult.hasErrors()) {
model.addAttribute("checkItems", CHECK_ITEMS);
model.addAttribute("signupError", true);
return "userReg/insert";
}
try {
authService.insertUser(authForm);
} catch (DataIntegrityViolationException e) {
model.addAttribute("checkItems", CHECK_ITEMS);
model.addAttribute("signupError", true);
return "userReg/insert";
}
attributes.addFlashAttribute("message", "S'est enregistré.");
return "redirect:/userReg/registered";
}
@GetMapping("/{id}/update")
public String updateGet(Model model, @PathVariable("id") String id) {
AuthForm authForm = authService.userRegById(id);
model.addAttribute("authForm", authForm);
model.addAttribute("checkItems", CHECK_ITEMS);
return "userReg/update";
}
@PostMapping("/{id}/update")
public String updatePost(Model model,
RedirectAttributes attributes,
@Valid AuthForm authForm, BindingResult bindingResult, HttpServletRequest request) {
if (bindingResult.hasErrors()) {
model.addAttribute("checkItems", CHECK_ITEMS);
model.addAttribute("signupError", true);
return "userReg/update";
}
try {
authService.updateUser(authForm);
} catch (DataIntegrityViolationException e) {
model.addAttribute("checkItems", CHECK_ITEMS);
model.addAttribute("signupError", true);
return "userReg/update";
}
attributes.addFlashAttribute("message", "Cela a changé.");
return "redirect:/userReg/registered";
}
@GetMapping("/{id}/delete")
public String deleteGet(Model model, @PathVariable("id") String id) {
AuthForm authForm = authService.userRegById(id);
model.addAttribute("authForm", authForm);
model.addAttribute("checkItems", Arrays.asList(authForm.getAuthority()));
return "userReg/delete";
}
@PostMapping("/{id}/delete")
public String deletePost(Model model, @PathVariable("id") String id,
RedirectAttributes attributes,
@Valid AuthForm authForm, BindingResult bindingResult, HttpServletRequest request) {
try {
authService.deleteUser(authForm.getUserId());
} catch (DataIntegrityViolationException e) {
model.addAttribute("signupError", true);
return "userReg/delete";
}
attributes.addFlashAttribute("message", "Il a été supprimé.");
return "redirect:/userReg/registered";
}
}
Créez une vue de la page générale de création d'utilisateur.
D:\JAVA\Project\securitySample\src\main\webapp\WEB-INF\templates
└─userReg
├─delete.html
├─index.html
├─insert.html
├─register.html
├─registered.html
└─update.html
delete.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<head th:insert="fragment/frag01 :: htmlhead"></head>
<title>Écran de suppression de l'utilisateur</title>
</head>
<body>
<h1>Suppression de l'utilisateur</h1>
<form method="post" action="#" th:action="@{delete}" th:object="${authForm}">
<div>
<label for="userId">Identifiant de connexion</label>
<span th:text="*{userId}"></span>
<input type="hidden" th:field="*{userId}">
</div>
<div>
<label for="userNameJP">Nom d'utilisateur (japonais)</label>
<span th:text="*{userNameJP}"></span>
<input type="hidden" th:field="*{userNameJP}">
</div>
<div>
<button type="submit">Effacer</button>
<a th:href="@{/userReg/index}">Annuler</a>
</div>
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<head th:insert="fragment/frag01 :: htmlhead"></head>
<title>Écran de la liste des utilisateurs enregistrés</title>
</head>
<body>
<h1>Liste des utilisateurs enregistrés</h1>
<a href="insert.html" th:href="@{insert}">s'inscrire</a>
<div>
<table border="1">
<thead>
<tr>
<th>Identifiant d'utilisateur</th>
<th>Nom d'utilisateur</th>
<th>Nom du département</th>
<th>statut</th>
<th>rouleau</th>
<th>commander</th>
</tr>
</thead>
<tr th:each="userInfo : ${userInfoList}" th:object="${userInfo}">
<td th:text="*{userId}"></td>
<td th:text="*{userNameJP}"></td>
<td th:text="*{sectionNameJP}"></td>
<td th:if="*{enabled}">Peut être utilisé</td>
<td th:unless="*{enabled}">Utilisation interdite</td>
<td>
<th:block th:each="userRoles : *{userRolesList}" th:object="${userRoles}">
<th:block th:utext="*{authority} + '<br />'"></th:block>
</th:block>
</td>
<td>
<a th:href="@{*{userId} + '/update'}">Éditer</a>
<a th:href="@{*{userId} + '/delete'}">Effacer</a>
</td>
</tr>
</table>
</div>
</body>
</html>
insert.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<head th:insert="fragment/frag01 :: htmlhead"></head>
<title>Écran d'enregistrement de l'utilisateur</title>
</head>
<body>
<h1>Enregistrement de l'utilisateur</h1>
<form method="post" action="#" th:action="@{insert}" th:object="${authForm}">
<div th:if="${signupError}">
<em>Je n'ai pas pu m'inscrire.</em>
</div>
<div>
<label for="userId">Identifiant de connexion</label>
<input type="text" autofocus="autofocus" th:field="*{userId}">
</div>
<div th:insert="userReg/register :: register"></div>
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<div th:fragment="register" th:remove="tag">
<div>
<label for="password">mot de passe</label>:
<input type="password" th:field="*{password}">
<em th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Password Error</em>
</div>
<div>
<label for="userNameJP">Nom d'utilisateur (japonais)</label>
<input type="text" th:field="*{userNameJP}">
</div>
<div>
<label for="userId">Nom du département (japonais)</label>
<input type="text" th:field="*{sectionNameJP}">
</div>
<div>
<label>
<input type="checkbox" id="enabled" th:field="*{enabled}">Activation
</label>
</div>
<div>
<label class="control-label col-sm-2">rouleau</label>
<div th:each="item : ${checkItems}">
<label>
<input type="checkbox" name="authority" th:value="${item.value}" th:text="${item.key}" th:field="*{authority}">
</label>
</div>
<span th:if="${#fields.hasErrors('authority')}" th:errors="*{authority}" class="help-block">error!</span>
</div>
<div>
<button type="submit">enregistrement</button>
<a th:href="@{/userReg/index}">Annuler</a>
</div>
</div>
</html>
registered.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<head th:insert="fragment/frag01 :: htmlhead"></head>
<title>Message d'enregistrement de l'utilisateur</title>
</head>
<body>
<h1><span th:text="${message}">message</span></h1>
<a th:href="@{index}">Revenir à la liste des utilisateurs</a>
</body>
</html>
update.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
<head th:insert="fragment/frag01 :: htmlhead"></head>
<title>Écran d'édition de l'utilisateur</title>
</head>
<body>
<h1>Modifier l'utilisateur</h1>
<form method="post" action="#" th:action="@{update}" th:object="${authForm}">
<div th:if="${signupError}">
<em>Impossible de mettre à jour.</em>
</div>
<div>
<label for="userId">Identifiant de connexion</label>
<span th:text="*{userId}"></span>
<input type="hidden" th:field="*{userId}">
</div>
<div th:insert="userReg/register :: register"></div>
</form>
</body>
</html>
Téléchargé sur GitHub. https://github.com/t-skri1/SpringSample03
Ceci termine la page générale de création d'utilisateur. Le projet est maintenant terminé. Veuillez le compiler et l'exécuter. Veuillez également essayer la différence de comportement en fonction du rouleau.
C'était juste une douleur de ne pas être déployé à chaud. J'y suis habitué, mais j'ai senti qu'Eclipse ne me convenait pas mieux. N'y a-t-il pas beaucoup de demande maintenant? Est-ce difficile à faire parce que ce n'est pas un ressort de démarrage? La prochaine fois, j'essaierai de développer une application Web avec Boot avec Visual Studio Code.
Recommended Posts