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原创文章,未经本站允许不得转载。