JSP 页面的转发和重定向
Spring MVC 默认以转发的形式响应 JSP,可以手动进行修改。
重定向
@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
System.out.println(id+"-"+name);
return "redirect:/index.jsp"; }
设置重定向的时候不能写逻辑视图,必须写明资源的物理路径,如“redirect:/index.jsp”
转发
@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
System.out.println(id+"-"+name);
return "forward:/index.jsp"; }
等同于
@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
System.out.println(id+"-"+name);
return "index"; }
Spring MVC 数据绑定
数据绑定:在后台业务⽅法中,直接获取前端 HTTP 请求中的参数。
HTTP 请求传输的参数都是 String 类型的,Handler 业务方法中的参数是开发者指定的数据类型,int、Integer、Object,因此需要进行数据类型的转换。
Spring MVC 的 HandlerAdapter 组件会在执行 Handler 业务方法之前,完成参数的绑定,开发者直接使用即可。
基本数据类型
@RequestMapping("/baseType")
@ResponseBody
public String baseType(int id){
return "id:"+id; }
客户端 HTTP 请求中必须包含 id 参数,否则抛出 500 异常,因为 id 不能为 null,同时 id 的值必须为数值且必须为整数,否则抛出 400 异常。
包装类
@RequestMapping("/packageType")
@ResponseBody
public String packageType(Integer id){
return "id:"+id; }
如果 HTTP 请求中没有包含 id 参数,不会报错,id 的值就是 null,会直接返回 id:null 给客户端。但是如果 id = a 或者 id = 1.5,同样会抛出 400 异常,因为数据类型无法匹配。
可以给参数列表添加 @RequestParam 注解,可以对参数进行相关设置。
@RequestMapping("/packageType")
@ResponseBody
public String packageType(@RequestParam(value = "id",required =
true,defaultValue = "0") Integer id){
return "id:"+id