美文网首页
springmvc后台往页面传值

springmvc后台往页面传值

作者: 咩咩籽 | 来源:发表于2019-08-01 14:55 被阅读0次

    先说说页面往后台传值的方法,欢迎补充:
    一、form表单提交(常用)
    二、JQuery中的ajax提交(常用)
    三、通过url字符串拼接向后台提交数据

    再来说说后台获取值的常用方法:

    任意一种方法
    <form action="login">  
        帐号:<input type="text" name="loginName" > <br/>  
        密码:<input type="text" name="password" > <br/>  
        <input type="submit" value="登录">  
    </form> 
    
    方法1:参数直接获取
    
    ps: 函数参数名与请求参数名保持一致。
    
    @RequestMapping("/login")  
    public String login(String loginName,String password){  
        System.out.println("方法1:参数直接获取");  
        System.out.println("loginName:"+loginName);  
        System.out.println("password:"+password);         
        return "loginSuccess";  
    }  
    
    方法2:对象获取
    
    ps:建立一个对象,属性名对应请求参数名保持一致,并生成相应的getter()和setter()方法。
    
    建立对象User:
    
    package com.test.pojo;  
      
    public class User {  
        private String loginName;         
        private String password;   
      
        public String getLoginName() {  
            return loginName;  
        }  
      
        public void setLoginName(String loginName) {  
            this.loginName = loginName;  
        }  
          
        public String getPassword() {  
            return password;  
        }  
      
        public void setPassword(String password) {  
            this.password = password;  
        }  
    }  
    
    开始接收:
    
    @RequestMapping("/login")  
    public String login(User u){  
        System.out.println("方法2:对象获取");  
        System.out.println("loginName:"+u.getLoginName());  
        System.out.println("password:"+u.getPassword());          
        return "loginSuccess";  
    }  
    
    方法3:@RequestParam参数绑定获取
    
    ps:方法1的变种,但该接收参数名可以随意,通过注解@RequestParam指明即可。
    
    请求URL为:
    
    http://localhost:8080/springmvc/hello/100?loginName=wangwu&password=123456
    
    对于上面这个url,controller里面可以这么写:
    
    @RequestMapping("/login")  
    public String login(@RequestParam("loginName") String name,@RequestParam("password") String pwd){  
        System.out.println("方法3:参数绑定获取");  
        System.out.println("loginName:"+name);  
        System.out.println("password:"+pwd);          
        return "loginSuccess";  
    } 
    
    方法4:@PathVariable获取请求路径中的参数
    
    这个注解能够识别URL里面的槽位,如下面的{id},我们看下面的一个URL
    
    http://localhost:8080/springmvc/hello/101?param1=10&param2=20
    对于上面的一个url可以这样写:
    
    @RequestMapping("/hello/{id}")
        public String getDetails(@PathVariable(value="id") String id,
        @RequestParam(value="param1", required=true) String age,
        @RequestParam(value="param2", required=false) String count){
    .......
    }
    
    向前台传值(除了使用ModelAndView方式外,可以在声明方法的时候声明也可以在代码中声明。还可以使用Map、Model和ModelMap的方式,必须在方法中声明),如下ModelAndView可行,Map不行:
        public String showdXxnr(String tsxxmx) {
    //         ModelAndView model=new ModelAndView();
    //         model.addObject("name", "李四");
    //         model.setViewName("/xxts/xxnr");
             Map<String, Object> map=new HashMap<String, Object>();
    ······
    }
    
    使用Map、Model和ModelMap的方式
    
    @RequestMapping("/test")
    public String test(Map<String,Object> map,Model model,ModelMap modelMap,HttpServletRequest request){
        //1.放在map里  
        map.put("names", Arrays.asList("cai","zhi","ci"));
        //2.放在model里 建议使用
        model.addAttribute("time", new Date());
        //3.放在request里  
        request.setAttribute("request", "requestValue");
        //4.放在modelMap中 
        modelMap.addAttribute("city", "ChengDu");
        modelMap.put("gender", "male");
        return "hello";
    }
    JSP写法:
    使用EL表达式
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    time:${requestScope.time}
    names:${requestScope.names }
    city:${requestScope.city }
    gender:${requestScope.gender }
    request:${requestScope.request}
    

    相关文章

      网友评论

          本文标题:springmvc后台往页面传值

          本文链接:https://www.haomeiwen.com/subject/rsgqdctx.html