赞
踩
在springboot开发中控制层使用注解@Controller时,加有@GetMapping(@PostMapping或@RequestMapping)注解的方法返回值对应的是一个视图,而使用@RestController返回值对应的是json数据,而@Controller+@ResponseBody的作用相当于@RestController。
常用的Controller层作用和最终返回的结果:
作用:控制器类,处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model返回给对应的View进行展示
返回结果:
1.返回json数据,可以跟@ResponseBody注解使用
2.返回字符串路径,作为视图跳转解析器
在src/main/resources/config/application.properties配置文件中配置
然后在src/mian/java/包名/controller控制层下创建DemoController类,代码为:
- /**
- * SpringBoot整合thymeleaf
- * @author JackLin
- *
- */
- @Controller
- public class DemoController {
-
- @RequestMapping("/show")
- public String showInfo(Model model) {
- model.addAttribute("msg", "Thymeleaf第一个案例!!");
- model.addAttribute("key", new java.util.Date());
- return "index";
- }
-
- @RequestMapping("/show2")
- public String showInfo2(Model model) {
- model.addAttribute("sex", "男");
- model.addAttribute("id", "2");
- return "index2";
- }
- @RequestMapping("/show3")
- public String showInfo3(Model model) {
- List<Users> list = new ArrayList<>();
- list.add(new Users(1,"张山",20));
- list.add(new Users(2,"李四",21));
- list.add(new Users(3,"JackLin",22));
- model.addAttribute("list", list);
- return "index3";
- }
- @RequestMapping("/show4")
- public String showInfo4(Model model) {
- Map<String, Users> map = new HashMap<>();
- map.put("i1", new Users(1,"张山",20));
- map.put("i2", new Users(2,"李四",22));
- map.put("i3", new Users(3,"龙武",23));
-
- model.addAttribute("map", map);
- return "index4";
- }
- @RequestMapping("/show5")
- public String showInfo(HttpServletRequest request,Model model) {
-
- request.setAttribute("req", "HttpServletRequest");
- request.getSession().setAttribute("sess", "HttpSession");
- request.getSession().getServletContext().setAttribute("app", "Application");
- return "index5";
- }
-
- }
启动程序后在浏览器输入localhost:8080/show访问页面即为templates文件夹下的各个html文件
这里的访问效果就不一一显示了,直接开浏览器输入localhost:8080/show可以返回你想要的页面(show可以是你自己设置的页面),返回哪个页面名字就需要在templates下创建相应的HTML文件。
@RestController在实际中的应用
@RestCobtroller=@Controller+@ResponseBody合在一起使用,.@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
实例代码:【使用@RestCobtroller导致返回jsp页面失败】
-
- @RestController
- @RequestMapping(value = "/userInfo")
- public class UserController {
-
-
- @RequestMapping(value = "/getUserInfo",method = RequestMethod.GET)
- public String getUserInfo(Map<String, Object> resultMap) {
-
- User user = new User();
- user.setName("天生");
- user.setSex(0);
- user.setAge(36);
- resultMap.put("user",user);
- return "userInfo";
- }
-
上述代码实例,原本是想通过视图解析器返回到“userInfo.jsp”页面。但是在Controller层使用注解@RestController,那么配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容,即返回“userInfo”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。