《Spring MVC》 第四章 域对象、视图、转发和重定向

简介: 《Spring MVC》 第四章 域对象、视图、转发和重定向

前言

介绍Spring MVC的域对象、视图、转发和重定向

1、域对象共享数据

Spring MVC 提供了多种域对象共享数据的方式,其中最常用的方式如下:

1.1、使用 Servlet API 向 request 域对象中共享数据

服务端代码:

@RequestMapping("toLogin")
public String toLogin(HttpServletRequest request){
    request.setAttribute("welcome","hello tiger!");
    return "login";
}

前端代码:

<h1 th:text="${welcome}"></h1>

1.2、使用 ModelAndView 向 request 域对象中共享数据

服务端代码:

@RequestMapping("toLogin")
public ModelAndView toLogin(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("welcome","hello tiger!");
    modelAndView.setViewName("login");
    return modelAndView;
}

前端代码:

<h1 th:text="${welcome}"></h1>

1.3、使用 Model 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(Model model){
    model.addAttribute("welcome","hello tiger!");
    return "login";
}

1.4、使用 Map 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(Map<String,Object> map){
    map.put("welcome","hello tiger!");
    return "login";
}

1.5、使用 ModelMap 向 request 域对象中共享数据

@RequestMapping("toLogin")
public String toLogin(ModelMap modelMap){
    modelMap.addAttribute("welcome","hello tiger!");
    return "login";
}

1.6、使用 Servlet API 向 session 域中共享数据

@RequestMapping("toLogin")
public String toLogin(HttpSession session){
    session.setAttribute("welcome","hello tiger!");
    return "login";
}
<h1 th:text="${session.welcome}"></h1>

1.7、使用 Servlet API 向 application 域中共享数据

@RequestMapping("toLogin")
public String toLogin(HttpSession session){
    ServletContext application = session.getServletContext();
    application.setAttribute("welcome","hello tiger!");
    return "login";
}
<h1 th:text="${application.welcome}"></h1>

1.8、thymeleaf集合遍历

<tr th:each="e:${userList}">
<td th:text="${e.userName}"/>
<td th:text="${e.gender}"/>
</tr>

2、视图

在 Spring MVC 中,视图扮演着十分重要的角色,它主要负责整合 Web 资源、对模型数据进行渲染,并最终将 Model 中的数据以特定的形式展示给用户。

实现类 说明
ThymeleafView Thymeleaf 视图。当项目中使用的视图技术为 Thymeleaf 时,就需要使用该视图类。
InternalResourceView 转发视图,通过它可以实现请求的转发跳转。与此同时,它也是 JSP 视图。RedirectView重定向视图,通过它可以实现请求的重定向跳转。
FreeMarkerView FreeMarker 视图.
MappingJackson2JsonView JSON 视图。
AbstractPdfView PDF 视图 。

视图划分为两大类:逻辑视图和非逻辑视图

2.1、逻辑视图

逻辑视图最大的特点就是,其控制器方法返回的 ModelAndView 中的 view 可以不是一个真正的视图对象,而是一个字符串类型的逻辑视图名

  • 直接在控制器方法中返回字符串类型的逻辑视图名
  • 在控制器方法中通过 ModelAndView 提供的 setViewName() 方法设置逻辑视图名

2.2、非逻辑视图

非逻辑视图,则与逻辑视图完全相反,其控制方法返回的是一个真正的视图对象

@RequestMapping("toLogin")
public ModelAndView toLogin(HttpSession session){
    ModelAndView modelAndView = new ModelAndView();
    UserInfo userInfo = new UserInfo();
    userInfo.setUserName("tiger");
    userInfo.setGender("man");
    modelAndView.addObject(userInfo);
    modelAndView.setView(new MappingJackson2JsonView());
    return modelAndView;
}

导入以下json解析关联的包

3、转发和重定向

3.1、转发

return "forward:/login"
modelAndView.setViewName("forward:/login");

3.2、重定向

return "redirect:/login"
modelAndView.setViewName("redirect:/login");


目录
相关文章
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
这篇文章详细解释了在IntelliJ IDEA中如何使用Mute Breakpoints功能来快速跳过程序中的后续断点,并展示了如何一键清空所有设置的断点。
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
|
3月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
21天前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
27天前
|
Java Spring
获取spring工厂中bean对象的两种方式
获取spring工厂中bean对象的两种方式
23 1
|
28天前
|
前端开发 Java Spring
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
91 2
|
28天前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
50 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
30天前
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
20 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
30天前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
85 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向