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¶m2=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}