响应数据和结果视图
返回值类型
字符串
可实现通过视图解析器,跳转到对应名称的页面
@RequestMapping("/testString")
public String testString(Model model){
System.out.println("testString方法执行了...");
//模拟从数据库查询出User对象
User user = new User();
user.setUsername("Harlan");
user.setPassword("123456");
user.setAge(23);
//存入model对象
model.addAttribute("user", user);
//跳转到success页面
return "success";
}
视图解析器配置
<!-- 视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
同时可返回带有forward:
或redirect:
关键字进行重定向或请求转发(不会通过视图解析器,需要自己写路径)
@RequestMapping("forwardOrRedirect")
public String forwardOrRedirect(){
System.out.println("forwardOrRedirect方法执行了...");
//请求转发
return "forward:/WEB-INF/pages/success.jsp";
//重定向
return "redirect:/index.jsp";
}
Void
可通过获取Request
和Response
对象进行请求转发或重定向实现跳转
@RequestMapping("testVoid")
public void testVoid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("testVoid方法执行了...");
//请求转发
req.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(req, resp);
//重定向
resp.sendRedirect(req.getContextPath()+"success");
//直接响应
resp.setCharacterEncoding("utf-8");
resp.setContentType("test/html;charset=UTF-8");
resp.getWriter().println("Hello,World!");
}
ModelAndView
对象
ModelAndView
对象是Spring提供的一个对象,可以用来调整具体的JSP视图
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
//模拟从数据库查询出User对象
User user = new User();
user.setUsername("Harlan");
user.setPassword("123456");
user.setAge(23);
ModelAndView mv = new ModelAndView();
//存入对象
mv.addObject("user", user);
//存入视图
mv.setViewName("success");
return mv;
}
@ResponseBody
响应json
数据
@RequestMapping("/testAjax")
public @ResponseBody() User testAjax(@RequestBody User user){
System.out.println("testAjax方法执行了...");
System.out.println(user);
//模拟从数据库查询出User对象
user.setUsername("admin");
user.setPassword("123321");
user.setAge(33);
return user;
}