Spring MVC中forward请求转发2种方式(带参数)
Spring MVC中forward请求转发只需要请求一次服务器,可以提高访问速度,同时参数传递可以借助HttpServletRequest来处理,由于是处理同一个请求,所以request对象还是同一个,中文也不会出现乱码现象。
ViewResolver请求转发
@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET }) public String testredirect(HttpServletResponse response){ return "forward:/index"; }
带参数
@RequestMapping(value="/testredirect",method = { RequestMethod.POST, RequestMethod.GET }) public String testredirect(HttpServletRequest request){ request.setAttribute("username", "51gjie"); //把username参数传递到request中 return "forward:/user/index"; }
ModelAndView请求转发
@RequestMapping(value="/restredirect",method = { RequestMethod.POST, RequestMethod.GET }) public ModelAndView restredirect(String userName){ ModelAndView model = new ModelAndView("forward:/main/index");//默认forward,可以不用写 return model; }
带参数
@RequestMapping(value="/toredirect",method = { RequestMethod.POST, RequestMethod.GET }) public ModelAndView toredirect(String userName){ ModelAndView model = new ModelAndView("/user/userinfo"); model.addObject("userName", userName); //把userName参数带入到controller的RedirectAttributes return model; }
forward请求转发流程:客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来。整个过程是一个请求,一个响应。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。