经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Spring MVC 响应视图(六)
来源:cnblogs  作者:黄浩#  时间:2018/11/8 9:56:53  对本文有异议

完整的项目案例: springmvc.zip

目录

 

实例

除了依赖spring-webmvc还需要依赖jackson-databind(用于转换json数据格式)

  1. <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.6</version>
    </dependency>

项目结构:

配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6.  
  7. <!-- 请求总控器 -->
  8. <servlet>
  9. <servlet-name>dispatcher</servlet-name>
  10. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  11. <init-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:dispatcher-servlet.xml</param-value>
  14. </init-param>
  15. </servlet>
  16. <servlet-mapping>
  17. <servlet-name>dispatcher</servlet-name>
  18. <url-pattern>/</url-pattern>
  19. </servlet-mapping>
  20. </web-app>
View Code

配置dispatcher-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  7.  
  8. <context:component-scan base-package="edu.nf.ch06.controller"/>
  9.  
  10. <mvc:annotation-driven/>
  11.  
  12. <mvc:default-servlet-handler/>
  13.  
  14. <!-- springmvc提供了很多种视图解析器来完成不同的视图解析工作,
  15. 例如内部资源视图解析器、模板引擎的视图解析器、XML视图解析器等等
  16. ,而在配置文件中是可以同时配置多个视图解析器的,那么Springmvc
  17. 在做视图响应的时候,会根据配置文件中的配置的所有视图解析器按照顺序
  18. 进行匹配,直到找到一个合适的视图解析器来完成解析。当有多个视图解析器存在时,
  19. 可以通过order属性来指定解析器的优先级(<property name="order" value="0"/>)-->
  20. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  21. <property name="prefix" value="/WEB-INF/jsp/"/>
  22. <property name="suffix" value=".jsp"/>
  23. </bean>
  24.  
  25. </beans>

请求控制器Controller

(RedirectAttributesController)

  1. package edu.nf.ch06.controller;
  2. import edu.nf.ch06.entity.Users;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.ModelAttribute;
  6. import org.springframework.web.bind.annotation.PostMapping;
  7. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  8. /**
  9. * @author wangl
  10. * @date 2018/10/31
  11. * 使用RedirectAttributes解决重定向传参的问题
  12. * 这个对象是在Springmvc 3.1的版本加入的
  13. */
  14. @Controller
  15. public class RedirectAttributesController {
  16. /**
  17. * 重定向一个JSP页面,使用addAttribute的方式
  18. * 将参数绑定在重定向的url后面带回到页面
  19. * @param user
  20. * @param redirectAttributes
  21. * @return
  22. */
  23. @PostMapping("/redirect3")
  24. public String redirectPage(Users user, RedirectAttributes redirectAttributes){
  25. redirectAttributes.addAttribute("user", user.getUserName());
  26. return "redirect:redirectattr.jsp";
  27. }
  28. /**
  29. * 重定向一个新的请求,使用FlushAttribute的方式,
  30. * 将数据存入一个FlushMap中,它利用了Session的机制保存,
  31. * 在重定向完成之后会自动清除这个对象
  32. *
  33. * @param user
  34. * @param redirectAttributes
  35. * @return
  36. */
  37. @PostMapping("/redirect4")
  38. public String redirectReq(@ModelAttribute("user") Users user, RedirectAttributes redirectAttributes){
  39. redirectAttributes.addFlashAttribute("user", user);
  40. return "redirect:redirectAction";
  41. }
  42. /**
  43. * 从redirect4的请求重定向到这个方法
  44. * @param user
  45. * @return
  46. */
  47. @GetMapping("/redirectAction")
  48. public String getRedirectAttr(@ModelAttribute("user") Users user){
  49. System.out.println(user.getUserName());
  50. return "index";
  51. }
  52. }
View Code

(ResponseBodyController)

  1. package edu.nf.ch06.controller;
  2. import edu.nf.ch06.entity.Users;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. import org.springframework.web.bind.annotation.RestController;
  7. /**
  8. * @author wangl
  9. * @date 2018/10/31
  10. */
  11. //@Controller
  12.  
  13. /**
  14. * @RestController是在spring4.0后新加入的一个注解,
  15. * 同样用于标注一个类为控制器组件,如果当前控制器中所有的
  16. * 请求处理方法都需要以ResponseBody的方式响应,那么
  17. * 就是用这个注解,而不需要再每一个方法上都标注@ResponseBody注解
  18. */
  19. @RestController
  20. public class ResponseBodyController {
  21. /**
  22. * 使用@ResponseBody标注,
  23. * 表示将方法的返回值以Response输出流写回客户端,
  24. * 这时,springmvc就会将序列化的数据放入响应体中并写回
  25. * @return
  26. */
  27. @GetMapping("/getUser")
  28. public Users getUser(){
  29. Users user = new Users();
  30. user.setUserName("user1");
  31. user.setAge(21);
  32. return user;
  33. }
  34. }
View Code
  1. RequestBodyController
  1. package edu.nf.ch06.controller;
  2. import edu.nf.ch06.entity.Users;
  3. import org.springframework.web.bind.annotation.PostMapping;
  4. import org.springframework.web.bind.annotation.RequestBody;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7. * @author wangl
  8. * @date 2018/10/31springmvc
  9. */
  10. @RestController
  11. public class RequestBodyController {
  12. /**
  13. * 接收ajax提交的数据并做类型转换映射
  14. * @param user
  15. * @return
  16. */
  17. @PostMapping("/addUser")
  18. public String addUser(Users user){
  19. System.out.println(user.getUserName());
  20. System.out.println(user.getAge());
  21. return "success";
  22. }
  23. /**
  24. * 是用@RequestBody标注参数,
  25. * 表示将接收的json文本数据进行格式转换后映射到实体中
  26. * @param user
  27. * @return
  28. */
  29. @PostMapping("/addUser2")
  30. public String addUser2(@RequestBody Users user){
  31. System.out.println(user.getUserName());
  32. System.out.println(user.getAge());
  33. return "success";
  34. }
  35. }
View Code
  1. UserController
  1. package edu.nf.ch06.controller;
  2. import edu.nf.ch06.entity.Users;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.servlet.ModelAndView;
  7. import org.springframework.web.servlet.view.RedirectView;
  8. import java.util.Map;
  9. /**
  10. * @author wangl
  11. * @date 2018/10/31
  12. */
  13. @Controller
  14. public class UserController {
  15. /**
  16. * 转发视图
  17. */
  18. @GetMapping("/forwrd1")
  19. public ModelAndView forward1(){
  20. //通过ModelAndView转发
  21. return new ModelAndView("index");
  22. }
  23. @GetMapping("/forwrd2")
  24. public String forward2(){
  25. //通过ModelAndView转发
  26. return "index";
  27. }
  28. /**
  29. * 重定向视图
  30. * @return
  31. */
  32. @GetMapping("/redirect1")
  33. public ModelAndView redirect1(){
  34. //在ModelAndView的构造方法传入一个RedirectView的视图对象来完成重定向
  35. //return new ModelAndView(new RedirectView("redirect.jsp"));
  36. //简化
  37. return new ModelAndView("redirect:redirect.jsp");
  38. }
  39. @GetMapping("/redirect2")
  40. public String redirect2(Users user){
  41. return "redirect:redirect.jsp";
  42. }
  43. }
View Code

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号