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数据。

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

相关文章

  • Nginx启用压缩及开启gzip 压缩的方法

    Nginx启用压缩及开启gzip 压缩的方法

    这篇文章主要介绍了Nginx启用压缩及开启gzip 压缩的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Java模拟实现扑克牌洗牌和发牌的示例代码

    Java模拟实现扑克牌洗牌和发牌的示例代码

    这篇文章主要为大家详细介绍了如何利用Java模拟实现扑克牌洗牌和发牌的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-09-09
  • Java创建型设计模式之抽象工厂模式(Abstract Factory)

    Java创建型设计模式之抽象工厂模式(Abstract Factory)

    当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式,抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态
    2022-09-09
  • mybatis interceptor 处理查询参数及查询结果的实例代码

    mybatis interceptor 处理查询参数及查询结果的实例代码

    这篇文章主要介绍了mybatis interceptor 处理查询参数及查询结果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • 剑指Offer之Java算法习题精讲数组与字符串

    剑指Offer之Java算法习题精讲数组与字符串

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • IDEA中解决 git pull 冲突的方法

    IDEA中解决 git pull 冲突的方法

    这篇文章主要介绍了IDEA中解决 git pull 冲突的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • IDEA集成Gitee码云的实现步骤

    IDEA集成Gitee码云的实现步骤

    本文主要介绍了IDEA集成Gitee码云的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java正则表达式工具方法汇总

    Java正则表达式工具方法汇总

    这篇文章主要介绍了Java正则表达式工具方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Mybatis注解开发单表、多表操作的实现代码

    Mybatis注解开发单表、多表操作的实现代码

    这篇文章主要介绍了Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化,需要的朋友可以参考下
    2021-02-02
  • RocketMq 消息重试机制及死信队列详解

    RocketMq 消息重试机制及死信队列详解

    这篇文章主要为大家介绍了RocketMq 消息重试机制及死信队列详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10

最新评论