springMVC入门-04

  这一讲介绍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>

对应使用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";
}

对应跳转到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>

对应请求为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;
    }
}

对应在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";
}

时间: 2024-08-07 16:42:54

springMVC入门-04的相关文章

SpringMVC入门

介绍 SpringMVC是一款Web MVC框架. 它跟Struts框架类似,是目前主流的Web MVC框架之一. 本文通过实例来介绍SpringMVC的入门知识. 实例 本文所写的实例是一个员工的CRUD demo. 用idea编写,基于maven, Web框架使用SpringMVC,视图采取Freemarker技术,数据库使用MySQL,用Hibernate4存储数据. 本文关于其他一些内容 如maven的pom文件内容,spring常规bean,事务,数据源的配置等不会详细描述,可自行下载

springmvc入门之HelloWorld篇

springmvc是一个基于spring的mvc框架,各种优点啥的用过就知道了.下面开始讲HelloWorldController的实现. 1.开发环境搭建<导jar包+配置文件> 1.1 新建web工程springmvc,导入springmvc所需的jar包,因为springmvc是基于spring的,所以必须包含spring的jar包,我用的版本是spring3.1.0.导入以下jar包: 1.2 配置web.xml <!-- spring mvc配置 处理*.action和*.do

2017-5-23 SpringMVC入门(一)

2017-5-23 SpringMVC入门(一) SpringMVC Maven Java 1.依赖引入 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.ap

Spring-MVC入门实例 (一)

Spring MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了.Spring MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. Struts2 VS  Spring MVC Struts2  特点 也是比较优秀的MVC构架,优点非常多比如良好的结构.但这里想说的是缺点,Struts2由于采用了值栈.OGNL表达式.struts2标签库等,会导致应用的性能下降.Struts2的多层拦截器.多实例action性能都很好

SpringMVC入门之注解式控制器

上面一篇写的是配置式的控制器现在已经不推荐使用了,其实注解式控制器和它的差不多只不过 更简洁而已! 1.还是在web.xml中进行配置DispatcherServlet <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-para

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久

框架 day68 SpringMVC入门(框架原理,springmvc和mybatis整合)

第一天:注解开发基础(springmvc入门) springmvc框架原理(掌握) DispatcherServlet前端控制器.HandlerMapping处理器映射器.HandlerAdapter处理器适配器.ViewResolver视图解析器 springmvc入门程序 目标:加深对springmvc三大组件的认识 查询商品信息 重点掌握注解的HandlerMapping处理器映射器.HandlerAdapter处理器适配器(掌握) springmvc和mybatis整合(掌握) 通过一个

SpringMVC 入门教程知识

SpringMVC 入门知识 一.SpringMVC入门介绍 springMVC代替struts2去整合hibernate实现功能的框架.使用springMVC有两个配置文件需要配置,一 个是applicationContext.xml.另一个是web.xml,在applicationContext.xml里面配置事务管理器以及属性注入等.web.xml里面要添加一个springMVC的servlet的注册和映射(DispatcherServlet),这个servlet是 springMVC的核

SpringMVC入门配置和简单实现

web.xml的配置 <!-- springmvc中央控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-n