forward & redirect
绑定参数方法、重定向路径
Binding:将请求中的字段按照名字匹配的原则填入对象模型(模型对象和页面数据的绑定)。
案例:课程添加及保存的维护界面。
描述:创建增加课程的方法,并跳转课程增加的界面,设定访问该方法的路径为admin,请求限定为request,限制有一个请求参数add(意思是浏览器访问时候路径后+?add),注意:edit.jsp中标签的name属性应当和模型对象中的Course属性名称一致,
随后Controller中添加增加课程的方法,该方法通过在方法里设置Course对象来获取前端form表单提交的数据,这里通过返回"redirect:view2/"+course.getCourseId();就可以重定向到viewCourse2的方法并进行添加课程的展示,添加日志信息确定是否拦截到了表单的数据信息,并把它绑定到了模型对象中log.debug("Info of Course:");log.debug(ReflectionToStringBuilder.toString(course)),ReflectionToStringBuilder是apache.lang包中Builder的一个类,进行日志输出进行程序的调试很常见,将课程的内容以键值对的形式,输出在日志当中,这样就可以查看是否映射到了Course对象中。
映射多目录结构JSP:相对路径即可。
@ModelAttribute:放在方法参数的注解,也可以完成数据绑定的功能,当@ModelAttribute放在方法参数上时,和使用这个标签没有区别。当将@ModelAttribute放在方法上标识的时候,表示执行这个controller类中的@RequestMapping标注的方法前都要先执行标有@ModelAttribute的方法。
重定向和请求转发
RelectionToStringBuilder.toString(course)
SpringMVC 重定向实现方式:
return "redirect:{视图url}"
binding:jsp中标签的name属性应当和模型对象model中的Course属性名称一致
return "forward:view2/"+course.getId();//请求转发
* 请求转发要注意请求的方式,转发不会改变请求的方式,它是一个请求,这儿到达save路径的请求是一个post请求,转发给view2路径时也是一个post请求,所以view2中的接收方法也要是post才行,之前定义的get是会报错的;
* 请求重定向本质上是两个请求了,服务端处理完会让客户端再次发送一个请求到重定向的路径,两个请求互不干扰;
* 请求转发只需要请求一次服务器,可以提高访问速度。
* 重定向可以跳转到任意服务器,可以用在系统间的跳转。
页面空间的name属性应和model一致
1、重定向
Binding:将请求中的字段按照名字匹配的原则填入对象模型(模型对象和页面数据的绑定)。
案例:课程添加及保存的维护界面。
描述:创建增加课程的方法,并跳转课程增加的界面,设定访问该方法的路径为admin,请求限定为request,限制有一个请求参数add(意思是浏览器访问时候路径后+?add),注意:edit.jsp中标签的name属性应当和模型对象中的Course属性名称一致,
随后Controller中添加增加课程的方法,该方法通过在方法里设置Course对象来获取前端form表单提交的数据,这里通过返回"redirect:view2/"+course.getCourseId();就可以重定向到viewCourse2的方法并进行添加课程的展示,添加日志信息确定是否拦截到了表单的数据信息,并把它绑定到了模型对象中log.debug("Info of Course:");log.debug(ReflectionToStringBuilder.toString(course)),ReflectionToStringBuilder是apache.lang包中Builder的一个类,进行日志输出进行程序的调试很常见,将课程的内容以键值对的形式,输出在日志当中,这样就可以查看是否映射到了Course对象中。
映射多目录结构JSP:相对路径即可。
@ModelAttribute:放在方法参数的注解,也可以完成数据绑定的功能,当@ModelAttribute放在方法参数上时,和使用这个标签没有区别。当将@ModelAttribute放在方法上标识的时候,表示执行这个controller类中的@RequestMapping标注的方法前都要先执行标有@ModelAttribute的方法。
页面控件名称与模型名称一致 1. 绑定参数
return “redirect: ”重定向
forward 转发
log.debug(ReflectionToStringBuilder.toString(object))将对象以键值对的形式输出
@ModelAttrbute 方法参数级别 2.绑定参数
记录:spring mvc 中,前端能传什么数据类型到后端controller 可以自定义数据类型吗?spring mvc如何把json数据传到后端生成对象?
如果前后端分离开发,前后端之间的数据交互就应该全部是通过json,spring mvc中能够直接把前端传过来的json数据通过@requestBody注解转化成你需要的数据类型,同时@responseBody也能把你后端的数据类型转化成json数据传到前端
@ModelAttribute 模型对象和页面数据之间的绑定,前台页面的标签的name属性值必须与Model类中的属性值一致
ReflectionToStringBuilder 输出Model类的相关信息
SpringMVC通过使用redirect/forward来实现重定向/请求转发
绑定实例代码
Spring MVC中 Controller中实现重定向
return "redirect:view2/"+course.getCourseId();
模型对象和页面数据之间的绑定 @ModelAttribute
@ModelAttribute 参数绑定
ReflectionToStringBuilder.toString();
model 绑定
spring MVC 请求重定向和转发
Binding
object to String
ridict:相对路劲
Servlet中: 请求重定向:response.sendRedirect("url"); 请求转发:request.getRequestDispatcher("url").forward(request,response); 在Spring MVC提供了非常简便的方式实现请求重定向与转发的操作,直接在Controller的方法中返回字符串即可. 请求重定向:return "redirect:url" 请求转发:return "forward:url" 请求重定向或请求转发到Controller的其他方法中. @RequestMapping("/login") public String login(){ return "view1" } @RequestMapping("/mvc") public String test(){ return "redirect:/hello/login"; } 当访问http://locahost:8080/项目名/hello/mvc时,就会进入test()方法处理,然后被请求重定向到login()方法中处理,最后返回名为view1页面. Controller的方法可以直接return "add"即返回名为add的视图,或请求重定向、请求转发到其他Controller方法中处理.