Spring MVC 学习笔记6 —— 实现简单的用户管理(2)添加和验证

Spring MVC 学习笔记6 —— 实现简单的用户管理(2)对user model的增删改查【添加validation】

增加用户:

1. 顶级页面请求写在class头里
在“UserController.java”文件中:顶级页面请求是/user, 故 RequestMapping("/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", "宋冬野", "song@song.com"));
		users.put("hxm", new User("hxm", "889", "黄蓄明", "hung@song.com"));
		users.put("cqh", new User("cqh", "818", "曹清华", "chen@song.com"));
		users.put("yhl", new User("yhl", "808", "杨环路", "yang@song.com"));
	}
	
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. 先判断是否合法,如果是,就增加一条记录,并回到list页面。如果不是,显示提示信息。

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 验证用户输入是否合法:

Step1. First step is plug-in jar package.
JSR 303
google and download: bean-validator.jar
paste it to /WebContent/WEB-INF/lib/


Step2. 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
Step3: 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;
Step4: File :"add.jsp"

//add <sf:errors></sf:errors> Tag into the original code ad below:

	<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>


 

有个疑问就是Step3里的(@ModelAttribute("user") User kuser) 中的 "user" 是对应哪里的user,这个没搞清楚。

下一篇博文详细翻译关于model.addAttribute的使用方法。
http://krams915.blogspot.com/2010/12/spring-3-mvc-using-modelattribute-in.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值