zoukankan      html  css  js  c++  java
  • springmvc后台获取表单提交的数据——@ModelAttribute等方式

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

    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;}
    }
    POJO
    <%--
      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>
    FORM
    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";
        }
    
    
    }
    CONTROLLER

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

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

     1     public String hello(@RequestParam(value="username") String A, @RequestParam(value="password") String B, HttpSession session){
     2         session.setAttribute("a", A);
     3         session.setAttribute("b", B);
     4         user user = userService.findbyname(A);
     5         if(user == null)
     6             return "loginfail";
     7         else if(!user.getPassword().equals(B))
     8             return "falsepaswd";
     9         else
    10             return "helloworld";
    11 
    12     }

    这时候只需跟在@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数据。

  • 相关阅读:
    Useful for Android the development engineer from Github
    Compile a native C Android application
    android-non-ui-ui-thread-communications-part-5-5
    android-non-ui-to-ui-thread-communications-part-4-of-5
    Android Non-UI to UI Thread Communications(Part 3 of 5)
    webpack 配置的相关标准化
    eslint 配置规则
    移动端自己实现table的思路
    前端 转pdf的方法
    关于git 提交的一些规范
  • 原文地址:https://www.cnblogs.com/lbrs/p/11668954.html
Copyright © 2011-2022 走看看