码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC入门-04

时间:2015-03-04 00:56:20      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

  这一讲介绍springMVC使用rest风格添加数据的实现。在之前的一讲中添加一个链接跳转到add.jsp页面,对应代码如下所示: 

技术分享
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户列表</title>
</head>
<body>
<a href="add">添加</a>
    <c:forEach items="${users}" var="um" >
        ${um.value.username }
        ----${um.value.nickname }
        ----${um.value.password }
        ----${um.value.email }<br/>
    </c:forEach>
</body>
</html>View Code
View Code

    对应使用get方式跳转的url为http://localhost:8080/springMVC001/user/add。对应controller类中需要跳转到add.jsp页面,其中需要初始化一个user对象。对应add方法如下所示:

技术分享
// 链接到add页面时是GET请求,会访问这段代码
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(@ModelAttribute("user") Users user) {
    // 开启modelDriven
    //两种方式往add.jsp页面初始化一个user实例:
    //方式一:在入参中使用Model,然后在方法中新建一个user对象;
    //方式二:在入参中使用ModelAttribute注解方式新建一个user对象,此处使用该方式。
    // model.addAttribute(new User());
    return "user/add";
}
View Code

    对应跳转到add.jsp页面,为一个表单结构,需要使用spring提供的表单标签,对应代码如下所示:

技术分享
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 此时没有写action,直接提交会提交给/add -->
<!-- controller类中需要初始化一个User对象在前台表单中使用-->
<!-- 将表单中的值添加到modelAttribute的属性值user中 -->
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
    Username:<sf:input path="username"/><sf:errors path="username"/><br/>
    Password:<sf:password path="password"/><sf:errors path="password"/><br/>
    Nickname:<sf:input path="nickname"/><br/>
    Email:<sf:input path="email"/><sf:errors path="email"/><br/>    
    <input type="submit" value="添加用户"/>
</sf:form>
</body>
</html>
View Code

    对应请求为post请求,且没有表单action,则跳转到RequestMethod为post的add方法中,之前add.jsp页面中存在对输入的服务器校验,需要针对User对象使用bean-validator.jar进行校验,对应代码如下所示:

技术分享
package zttc.itat.entity;

import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

public class Users {
    private String username;
    private String password;
    private String nickname;
    private String email;
    
    public Users() {
    }

    @NotEmpty(message="用户名不能为空")
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Size(min=1,max=10,message="密码的长度应该在1和10之间")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    @Email(message="邮箱的格式不正确")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Users(String username, String password, String nickname, String email) {
        super();
        this.username = username;
        this.password = password;
        this.nickname = nickname;
        this.email = email;
    }
}
View Code

   对应在controller类中需要将post请求得到的user对象进行前台验证,使用BindingResult来得到验证的结果,如果结果有误,则跳转到add.jsp页面,对应代码如下所示:

技术分享
// 在具体添加用户时,是post请求,就访问以下代码
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated Users user, BindingResult br,
) throws IOException {// 一定要紧跟Validate之后写验证结果类
    if (br.hasErrors()) {
        // 如果有错误直接跳转到add视图
        return "user/add";
    }
    users.put(user.getUsername(), user);
    return "redirect:/user/users";
}
View Code

 

springMVC入门-04

标签:

原文地址:http://www.cnblogs.com/birdman-oscar/p/4312165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!