springmvc后台往页面传值

2019-08-01  本文已影响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}
上一篇下一篇

猜你喜欢

热点阅读