SpringMVC接收参数
和ServletAPI紧耦方法(使用原生ServletAPI)
使用原有的request对象进行获取
只需要在方法内容声明request形参即可,servlet在调用的时候会自动赋值。
按照request的使用方式正常使用即可
Springmvc参数优点:
没有参数,不赋值,正常执行
有参数,则给参数进行赋值,然后执行
会对所有控制器方法参数进行注入.如果能注入就注入,不能注入不注入.
@RequestMapping("demo")
public String demo(HttpServletRequest request){
System.out.println(request.getParameter("id"));
System.out.println(request.getParameter("name"));
return "index.jsp";
}
和ServletAPI解耦方式.
接收非对象类型参数
2.1.1
只要提供与请求参数名
相同的方法参数
称
,SpringMVC
帮助注入
@RequestMapping("demo")
public String demo(String name, int id){
System.out.println(name+"---"+id);
return "index.jsp";
}
如果请求参数和方法参数名称不同,可以在方法参数前添加@RequestParam
@RequestParam("name")在方法的每个不同名参数前使用注解@RequestParam("请求参数名")
@RequestParam(value=””)设置获取哪个请求参数赋值给方法参数
@RequestParam(defaultValue=””)当请参数值为null或者 或空字符串的时候会将默认值赋值给方法参数。
@RequestParam(required=true)要求请求参数中必须有这个参数,没有报错400。
false是默认值,是否有这个参数没有要求.
required和defaultValue不能一起使用。
@RequestMapping("demo2")
public String demo2(@RequestParam(required=true) String name,int id){
}
3.接收对象类型参数.引用类型
只要请求参数名和对象(People)中属性名相同,自动赋值.
如果方法参数为引用类型,则在方法调用的时候直接给参数进行创建对象。
实现方式
<form action="demo3" method="post">
<input type="text" name="id"/>
<input type="text" name="name"/>
<input type="submit" value="提交"/>
</form>
@RequestMapping("demo3")
public String demo3(People peo){
System.out.println(peo.toString());
return "index.jsp";
}
如果请求参数中没有对象中属性,也会帮助实例化.
只要写在方法参数中,SpringMVC只要能给这个方法参数赋值,一定给赋值.
使用restful传值
4.1 前台页面使用指定的格式进行数据请求发送;后台使用指定的格式进行变量占位接收请求数据;
在jsp中设定格式(restful多和超链接结合使用)
名称} : 占位符,其中名称自定义
把占位符中内容赋值给方法参数.
如果占位符中名和方法参数名称不对应@PathVariable(value=”占位符名称”)
使用restful传值时注意控制器方法返回值,建议以/开始,使用全路径,其中/表示项目根目录(WEBContent)
<a href="demo5/123/zhangsan">跳转</a>
@RequestMapping("demo5/{id}/{name}")
public String demo5(@PathVariable int id,@PathVariable String name){
System.out.println(id+" "+name);
return "/index.jsp";
}
数组类型数据
如果前台有复选框且name=”demo”
<input type=”checkbox” name=”demo” value=”1”/>
<input type=”checkbox” name=”demo” value=”1”/>
<input type=”checkbox” name=”demo” value=”1”/>
在控制器中通过@RequestParam(value=”demo”)接收
public
return “index.jsp”
}
接收前台传递过来的JSON字符串数据
前台代码
其中var a的类型必须是字符串,值两次不要忘记单引号
6.1.2 contentType:'application/json' 必须写,否则数据不是json
$(function(){
$("button").click(function(){
var a ='{"ids":[{"id":1},{"id":2}]}';
$.ajax({
url:'demo1',
contentType:'application/json',
data:a,
success:function(data){
alert(data);
},
type:'post'
});
})
})
使用@RequestBody可以把内容转换为json数据
@RequestMapping("demo1")
public String demo1(@RequestBody Demo1 demo1) throws IOException{
// ServletInputStream is = req.getInputStream();
// int i = 0 ;
// while((i=is.read())!=-1){
// System.out.println((char)i);
// }
System.out.println(demo1);
return "/index.jsp";
}
木子璇总结时刻:欢迎小伙伴们提出建议哦,如有错误,望大神指出哦,谢谢啦。