返回值类型:String、void、ModelAndView。
一)字符串
Controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
<a href="${pageContext.request.contextPath}/returnValue/returnString">String</a>
//指定逻辑视图名,经过视图解析器解析为jsp物理路径:/WEB-INF/page/success.jsp @RequestMapping("/returnString") public String returnString(){ System.out.println("return String"); return "success"; }
二)void
Servlet原始API可以作为控制器方法的参数
<a href="${pageContext.request.contextPath}/returnValue/returnVoid">void</a>
@RequestMapping("/returnVoid")
public void returnVoid(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
System.out.println("return void");
//在Controller是方法上可以定义request和response,使用request和response指定响应结果。
//1,使用request转向页面
httpServletRequest.getRequestDispatcher("/WEB-INF/page/success.jsp").forward(httpServletRequest,httpServletResponse);
//2,使用response页面重定向
httpServletResponse.sendRedirect("returnString");
//3,使用response指定响应结果,如响应json数据
httpServletResponse.setCharacterEncoding("utf-8");
httpServletResponse.setContentType("application/json;charset=utf-8");
httpServletResponse.getWriter().write("json数据");
}
三)ModelAndView
ModelAndView是SpringMVC提供的一个对象,该对象也可以用作控制器方法的返回值。
该对象中有两个方法:


<a href="${pageContext.request.contextPath}/returnValue/returnModelAndView">ModelAndView</a>
@RequestMapping("/returnModelAndView")
public ModelAndView returnModelAndView(ModelAndView modelAndView){
modelAndView.setViewName("success");
modelAndView.addObject("message","return ModelAnd View");
return modelAndView;
}
页面上可以使用${requestScope.message}获取。
转发和重定向
forward转发
@RequestMapping("/forward")
public String testForward(){
System.out.println("forward method");
return "forward:/WEB-INF/page/success.jsp";
}
需要注意的是,如果用了forward:则路径必须写成实际视图url,不能写逻辑视图。它相当于“request.getRequestDispatcher("url").forward(request,response)”。使用转发,既可以转发到jsp, 也可以转发到其他的控制器方法。
redirect 重定向
@RequestMapping("/redirect")
public String testRedirect(){
System.out.println("redirect method");
return "redirect:returnString";
}
它相当于“response.sendRedirect(url)”。需要注意的是,如果重定向到jsp页面,则jsp页面不能写在WEB-INF目录中,否则无法找到。
posted on
浙公网安备 33010602011771号