La méthode du contrôleur Spring MVC peut recevoir diverses informations en tant qu'arguments en plus des paramètres saisis à l'écran.
@Secured En ajoutant l'annotation «@ Secured», vous pouvez spécifier l'autorité liée à l'URL.
@Controller
@RequestMapping("/sbadmin2/")
@Secured("IS_AUTHENTICATED_FULLY")
public class SbAdmin2Controller {
@RequestMapping("/index.html")
public ModelAndView index() {
return new ModelAndView("SbAdmin2Controller/index");
}
@Secured("ROLE_STAFF")
@RequestMapping("/forms.html")
public ModelAndView forms() {
return new ModelAndView("SbAdmin2Controller/forms");
}
}
// /sbadmin2/index.html est accessible si vous êtes connecté
// /sbadmin2/forms.connexion html et ROLE_Accessible si les privilèges STAFF sont attribués
@RequestParam
Si vous spécifiez l'annotation @ RequestParam
, vous pouvez recevoir les paramètres de requête inclus dans l'URL et les paramètres de publication inclus dans le corps du message.
@GetMapping("/hello")
public String hello(@RequestParam("name") String name) {}
// /hello?name=string
@RequestPart
Si vous spécifiez l'annotation @ RequestParam
, vous pouvez recevoir des fichiers image / vidéo et JSON.
@GetMapping("/hello")
public String hello(@RequestPart("data") String data) {}
const data = new FormData()
data.append('file', file)
data.append('jsonValue', new Blob([JSON.stringify(sampleObject)], {type : 'application/json'}))
axios.get('/hello', data)
@PathVariable
Vous pouvez spécifier l'annotation @ PathVariable
pour recevoir les paramètres dynamiques contenus dans l'URL.
@GetMapping("/hello/{userId}")
public String hello(@PathVariable("userId") Integer userId) {
@RequestHeader
Si vous spécifiez l'annotation @ RequestHeader
, vous pouvez recevoir chaque élément contenu dans l'en-tête de la demande.
@GetMapping("/hello")
public String hello(@RequestHeader("User-Agent") String userAgent) {
RequestHeader
GET /hello?userId=10 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json
X-XSRF-TOKEN: 00000-000-0000-0000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Referer: http://localhost:8080/hello?userId=10
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en-US;q=0.9,en;q=0.8
Cookie: [email protected];
JSESSIONID=sfdgfhgjh;
XSRF-TOKEN=00000-000-0000-0000
@RequestBody
Si vous spécifiez l'annotation @ RequestBody
, vous pouvez obtenir le contenu du corps de la requête tel quel.
@PostMapping("/hello")
public String hello(@RequestBody String body) {
POST /hello HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 22
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost:8080/hello
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en-US;q=0.8,en;q=0.6
user=scott&password=tiger
@DateTimeFormat
Spécifiez l'annotation @ DateTimeFormat
pour spécifier le format de la représentation sous forme de chaîne de la date et de l'heure de réception.
@GetMapping("/hello/{date}")
public String hello(@PathVariable("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) java.util.Date date) {}
@Autowired Il injecte automatiquement des beans qui correspondent au type du champ donné. Si plusieurs beans correspondent au type, ils peuvent être identifiés de manière unique à l'aide de l'annotation @Qualifier.
Référence: Vérification de la différence entre @Autowired, @Inject, @Resource @Validated Spécifiez l'annotation «@ Validated» pour activer la validation.
@PostMapping("/hello")
public String hello(@RequestBody @Validated String name)
@AuthenticationPrincipal
Spécifiez l'annotation @ AuthenticationPrincipal
afin que les informations de l'utilisateur authentifié soient automatiquement transmises à son argument.
@RequestMapping("/hello")
public String hello(@AuthenticationPrincipal AppUserDetail userDetail) {
log.info("debug: {}", userDetail);
return "user";
}
Recommended Posts