Spring MVC学習ノート6——簡単なユーザー管理(2)の追加と検証を実現する.
6729 ワード
Spring MVC学習ノート6——簡単なユーザー管理(2)user modelの添削を実現する【validation追加】
ユーザを追加:
1.トップページの要求はクラスの頭に書いてください.
「UserController.java」ファイルの中で:トップページの要求は/userで、だからRequest Mapping(「/user」)、下位の要求はclassの中のmethodに書いています.
ブラウザの最初の要求は{url}/user/usersです.
list.jspページに対応するには、このマッピングはpublic String Listに書いてあります.
ブラウザのuser/addに初めてアクセスする場合は、GET要求であり、先にadd.jspをマッピングして、add関連フォームを表示します.user/addページで、「提出」をクリックした後、POST要求です.後端の操作は:1.合法かどうか判断して、もしそうであれば、レコードを追加して、リストページに戻ります.いいえ、メッセージを表示します.
3.1初めてログインし、GET要求:
Validataを追加して、ユーザーの入力が適法かどうかを確認します.
Step 1.First step is plug-n jar package.
JSR 303
google and download:bean-validator.jar
paste it to/WebContent/WEB-INF/lib/
Step 2.File:edu/bit/model/User.java
3.1 Creat Model:
//add Tag into the origginal code ad below:
次のブログを詳しく翻訳します.model.addAttributeの使い方について.
http://krams915.blogspot.com/2010/12/spring-3-mvc-using-modelattribute-in.html
ユーザを追加:
1.トップページの要求はクラスの頭に書いてください.
「UserController.java」ファイルの中で:トップページの要求は/userで、だからRequest Mapping(「/user」)、下位の要求はclassの中のmethodに書いています.
@RequestMapping("/user")
public class UserController {
//1. save a value here
private Map<String,User> users=new HashMap<String, User>();
//2. , users ,
public UserController(){
users.put("sdy", new User("sdy", "888", " ", "[email protected]"));
users.put("hxm", new User("hxm", "889", " ", "[email protected]"));
users.put("cqh", new User("cqh", "818", " ", "[email protected]"));
users.put("yhl", new User("yhl", "808", " ", "[email protected]"));
}
2.ブラウザの最初の要求について、ユーザリストを取得するブラウザの最初の要求は{url}/user/usersです.
list.jspページに対応するには、このマッピングはpublic String Listに書いてあります.
//3. list , model() users
@RequestMapping(value= "/users", method=RequestMethod.GET)
public String List(Model model){
model.addAttribute("userss",users); //transfer "userss" to ${userss} in /user/list.jsp
return "user/list";
}
list.jspページコードはこのままusersを使用します. <c:forEach items="${userss}" var="um"><span style="white-space:pre"> </span><!-- ${userss} -->
${um.value.nickname } <!-- // -->
...<a href="${um.value.username}"> ${um.value.username } </a> <!-- //sdy -->
-- ${um.value.password }
-- ${um.value.email }<br/>
</c:forEach>
3.ブラウザがuser/addに入るのは、GET要求です.ブラウザはuser/addで「提出」をクリックし、user/addのPOST要求です.ブラウザのuser/addに初めてアクセスする場合は、GET要求であり、先にadd.jspをマッピングして、add関連フォームを表示します.user/addページで、「提出」をクリックした後、POST要求です.後端の操作は:1.合法かどうか判断して、もしそうであれば、レコードを追加して、リストページに戻ります.いいえ、メッセージを表示します.
3.1初めてログインし、GET要求:
//4. ,GET , add ,
/*@RequestMapping(value="/add", method=RequestMethod.GET)
public String add(Model model){ // model driven
// model driven, 5 post , add.jsp :myuser.getUsername()
model.addAttribute("User000",new User()); // 1 ,key = User000
<span style="white-space:pre"> </span>// add.jsp User, 22 :“... new User(" ", ...”
return "user/add";
} */
@RequestMapping(value="/add", method=RequestMethod.GET)
public String add(@ModelAttribute("userk") User user) { // 2 : model ,key name = userk
return "user/add";
}
3.2ページで「提出」をクリックし、POST要求: @RequestMapping(value="/add", method=RequestMethod.POST)
//public String add(User myuser, String abc){
public String add(@Validated User user, BindingResult mybr){ //add Validation here, Validate
if (mybr.hasErrors()){
// , add , add。jsp
return "user/add";
}
//users is an object:
users.put(user.getUsername(), user); // use "user.getUsername()" to get username
return "redirect:/user/users"; //client jump to /user/users
}
/user/add+GET要求時に戻るview:add.jsp <%@taglib uri="http://www.springframework.org/tags/form" prefix="sf"%> <!-- TagLibrary-->
<!-- prefix = sf(springform) form . Action, /add -->
<sf:form metod="post" modelAttribute="userk">
Username: <sf:input path="username"/><sf:errors path="username"></sf:errors><br/>
Password: <sf:input path="password"/><sf:errors path="password"></sf:errors><br/>
Nickname: <sf:input path="nickname"/><br/>
Email:<sf:input path="email"/><sf:errors path="email"></sf:errors><br/>
<input type="submit" value=" "/>
</sf:form>
===以下はadd.jspの内容が合法かどうかを検証することです.Validataを追加して、ユーザーの入力が適法かどうかを確認します.
Step 1.First step is plug-n jar package.
JSR 303
google and download:bean-validator.jar
paste it to/WebContent/WEB-INF/lib/
Step 2.File:edu/bit/model/User.java
>>Line: 14
>>@NotEmpty(message="username cannot be empty!")
public String getUsername(){
return username;
}
>>import org.hibernate.validator.constraints.NotEmpty;
As the same,we can use@Size(min=1,max=10,message=「password length must be 1-10」) >>import org.hibernate.validator.constraints.Size;
We can also use@Email(message=「invalid email format!」) >>import org.hibernate.validator.constraints.Email
Step 3:File:「UserController.java」 3.1 Creat Model:
//RequestMapping(value="/add", method=RequestMethod.GET)
//public String add(Model model){
>>
public String add(@ModelAttribute("userk") User user){ //Another kind of Create model for add.jsp @@
3.2 //public String add(User myuser, String abc){
public String add(@Validated User myuser, BindingResult bResult){
//add Validation here, Validate
if (bResult.hasErrors()){
// , add , add.jsp
return "user/add";
}
>>import org.springframework.validation.annotation.Validated;
Step 4:File:「add.jsp」//add
<sf:form metod="post" modelAttribute="userk"><span style="white-space:pre"> </span><!--userk UserController.java userk model -->
Username: <sf:input path="username"/><sf:errors path="username"></sf:errors><br/>
Password: <sf:input path="password"/><sf:errors path="password"></sf:errors><br/>
Nickname: <sf:input path="nickname"/><br/>
Email:<sf:input path="email"/><sf:errors path="email"></sf:errors><br/>
<input type="submit" value=" "/>
</sf:form>
質問があります.Step 3の(@ModelAttribute(user)User kuser)の中の「user」はどこのuserに対応していますか?これはよく分かりません.次のブログを詳しく翻訳します.model.addAttributeの使い方について.
http://krams915.blogspot.com/2010/12/spring-3-mvc-using-modelattribute-in.html