springmvc后台基于@ModelAttribute获取表单提交的数据

 更新时间:2019年10月14日 14:31:00   作者:LeftBody  
这篇文章主要介绍了springmvc后台基于@ModelAttribute获取表单提交的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、通过注解ModelAttribute直接映射表单中的参数到POJO。在from中的action写提交的路径,在input的name写参数的名称。

POJO

package com.demo.model;

public class user {
  private String username;
  private String password;
  private int nsex;


  public String getUsername() {
    return username;
  }

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

  public String getPassword() {
    return password;
  }

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


  public void setNsex(int nsex) {
    this.nsex = nsex;
  }

  public int getNsex() {return nsex;}
}

FORM

<%--
 Created by IntelliJ IDEA.
 User: wym
 Date: 2019/10/8
 Time: 23:17
 To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!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>Login</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login" method="post">
  用户名:<input type="text" name="username"/> <br><br>
  密码:<input type="password" name="password"/> <br><br>
  <input type="submit" value="提交"/>
</form>
</body>
</html>

CONTROLLER

package com.demo.controller;


import com.demo.model.user;
import com.demo.service.Userservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpSession;

@Controller
public class LoginController {
  @Autowired
  private Userservice userService;

  @RequestMapping(value="/login", method= RequestMethod.POST)
   public String hello(@ModelAttribute user u, HttpSession session){

      session.setAttribute("user", u);
    user user = userService.findbyname(u.getUsername());
    if(user == null)
      return "loginfail";
    else if(!user.getPassword().equals(u.getPassword()))
      return "falsepaswd";
    else
    return "helloworld";
  }


}

注意!!这里只有input的参数name名称和pojo中的成员域名称完全相同才可以通过@ModelAttribute进行直接映射,否则无法被赋值的参数将会以默认值的方式呈现。

2.显然不可能form获取的内容总是某个pojo的属性,完全有可能是单独出现的。这时可以使用@RequestParam获取参数。

public String hello(@RequestParam(value="username") String A, @RequestParam(value="password") String B, HttpSession session){
    session.setAttribute("a", A);
    session.setAttribute("b", B);
    user user = userService.findbyname(A);
    if(user == null)
      return "loginfail";
    else if(!user.getPassword().equals(B))
      return "falsepaswd";
    else
      return "helloworld";

  }

这时候只需跟在@RequestParam后的参数和form的name一致即可,String的名称可以随便取。

3.可以直接啥注解都不加,只需保证参数名称和form的name即可

public String hello( String username, String password, HttpSession session){
    session.setAttribute("a", username);
    session.setAttribute("b", password);
    user user = userService.findbyname(username);
    if(user == null)
      return "loginfail";
    else if(!user.getPassword().equals(password))
      return "falsepaswd";
    else
      return "helloworld";

  }

4.通过HttpServletRequest接收

public String hello( HttpServletRequest req, HttpSession session){
    username=req.getParameter("username");
    password=req.getParameter("password");
    session.setAttribute("a", username);
    session.setAttribute("b", password);
    user user = userService.findbyname(username);
    if(user == null)
      return "loginfail";
    else if(!user.getPassword().equals(password))
      return "falsepaswd";
    else
      return "helloworld";

  }

此外,还有一些其他的方式接受数据,例如通过@RequestBody等方式传递json数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java 数据结构与算法系列精讲之单向链表

    Java 数据结构与算法系列精讲之单向链表

    单向链表特点是链表的链接方向是单向的,访问要通过顺序读取从头部开始。链表是使用指针构造的列表,是由一个个结点组装起来的,又称为结点列表。其中每个结点都有指针成员变量指向列表中的下一个结点,head指针指向第一个结点称为表头,而终止于最后一个指向nuLL的指针
    2022-02-02
  • Java8新特性之lambda的作用_动力节点Java学院整理

    Java8新特性之lambda的作用_动力节点Java学院整理

    我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作解开lambda最强作用的神秘面纱。
    2017-06-06
  • Java外观模式解读,让你的代码优雅又高效

    Java外观模式解读,让你的代码优雅又高效

    外观模式(Facade Pattern)是一种常用的结构型设计模式,它为复杂的子系统提供一个简单的接口,隐藏复杂的实现细节,本文就来讲讲它是如何简化代码,提高可维护性的
    2023-05-05
  • SpringBoot后端进行数据校验JSR303的使用详解

    SpringBoot后端进行数据校验JSR303的使用详解

    这篇文章主要介绍了SpringBoot后端进行数据校验JSR303的使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • intellij idea使用git stash暂存一次提交的操作

    intellij idea使用git stash暂存一次提交的操作

    这篇文章主要介绍了intellij idea使用git stash暂存一次提交的操作,具有很好的参考价值希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java中实现两个线程交替运行的方法

    Java中实现两个线程交替运行的方法

    这篇文章主要介绍了Java中实现两个线程交替运行的方法,本文将给大家分享操作流程,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Java日常练习题,每天进步一点点(34)

    Java日常练习题,每天进步一点点(34)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • ssm 使用token校验登录的实现

    ssm 使用token校验登录的实现

    这篇文章主要介绍了ssm 使用token校验登录的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    这篇文章主要介绍了Springboot Mybatis-Plus数据库单元测试实战(三种方式),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java 抽象类与接口的对比

    Java 抽象类与接口的对比

    这篇文章主要介绍了Java 抽象类与接口的对比,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-08-08

最新评论