0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spring Frameworkを使ってみる(4)

Last updated at Posted at 2020-06-07

入力値チェックの実装

pomを編集

pom.xmlへ追記します。

pom.xml
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
		</dependency>
		
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>5.2.4.Final</version>
		</dependency>

チェック順序用インターフェースの作成

チェックする順序のインターフェースを作成します。
第一チェックを「CheckOrder1.java」
第二チェックを「CheckOrder2.java」
まとめたチェックを「CheckOrder.java」として、「src/main/java/com/example/HelloWorld/Validation」の中に作成します。

CheckOrder1.java
package com.example.HelloWorld.Validation;

    public interface CheckOrder1 {
 
}
CheckOrder2.java
package com.example.HelloWorld.Validation;
 
    public interface CheckOrder2 {
 
}

LoginFormを編集

LoginForm.java
package com.example.HelloWorld;
 
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
 
import org.hibernate.validator.constraints.NotEmpty;
 
import com.example.HelloWorld.Validation.CheckOrder1;
import com.example.HelloWorld.Validation.CheckOrder2;
 
public class LoginForm {
    @NotEmpty(groups={CheckOrder1.class},message="ユーザ名を入力してください。")
    private String loginName;
 
    @NotEmpty(groups={CheckOrder1.class},message="パスワードを入力してください。")
    @Size(min=8,max=16,groups={CheckOrder2.class},message="パスワードは{min}文字以上{max}文字以下です。")
    @Pattern(regexp="[a-zA-Z0-9]*",groups={CheckOrder2.class},message="パスワードは英数である必要があります。")
    private String loginPassword;
 
public String getLoginName() {
    return loginName;
}
 
public void setLoginName(String loginName) {
    this.loginName = loginName;
}
 
public String getLoginPassword() {
    return loginPassword;
}
 
public void setLoginPassword(String loginPassword) {
    this.loginPassword = loginPassword;
    }
}

LoginControllerを編集

LoginController.java
package com.example.HelloWorld;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.example.HelloWorld.Validation.CheckOrder;
 
@Controller
public class LoginController {
	@RequestMapping(value = "/login", method = RequestMethod.POST)
		public String login(Model model, @Validated(CheckOrder.class) @ModelAttribute("loginForm") LoginForm loginForm, BindingResult result) {
			if(result.hasErrors()) {
				return "index";
			}
	 
			model.addAttribute("loginName", loginForm.getLoginName());
			return "top";}
}

index.jspを編集

index.jsp
<!DOCTYPE html>
 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form"%>
 
<html>
<head>
<meta charset="utf-8">
<title>ログイン</title>
</head>
<body>
<f:form modelAttribute="loginForm" action="login" method="post">
<div>
ユーザ名:<input type="text" id="loginName" name="loginName">
<f:errors path="loginName" element="div" cssStyle="color:red" />
</div>
<div>
パスワード:<input type="text" id="loginPassword" name="loginPassword">
<f:errors path="loginPassword" element="div" cssStyle="color:red" />
</div>
<div>
<input type="submit" value="ログイン">
</div>
</f:form>
 
</body>
</html>

上記設定が完了したら、サーバーを立ち上げます。

試しで入力が間違えると、下記の画面が表示されます。
image.png

次回

データベースへのアクセスについて説明します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?