首页 > 其他分享 >SpringMVC 05: SpringMVC中携带数据的页面跳转

SpringMVC 05: SpringMVC中携带数据的页面跳转

时间:2022-09-02 16:23:11浏览次数:54  
标签:05 SpringMVC springframework user 跳转 import 页面

SpringMVC默认的参数对象

  • SpringMVC默认的参数对象是指,不用再另行创建,相当于SpringMVC内置对象,可以直接声明并使用
  • 默认的参数对象有:HttpServletRequest,HttpServletResponse,HttpSession,Model,Map,ModelMap
  • 注意:Model,Map,ModelMap和HttpServletRequest对象一样都使用请求作用域,所以在页面跳转时,只可以采用转发方式
  • 如果要采用重定向的方式完成页面跳转而且还要保证数据传递的正确性,只能使用HttpSession

进行携带数据的页面跳转

  • SpringMVC的项目配置和前面SpringMVC博集中(指SpringMVC 02)配置相同
  • webapp/index.jsp:网站的首页,用来向后端发送一个简单的携带数据的get请求
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index.jsp</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/data.action?name=饺子">携带数据进行页面跳转</a>
</body>
</html>
  • webapp/admin/main.jsp如下:作为请求的最终响应页面,测试在经过页面跳转后,后端放入对应作用域中的数据是否还有效
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>main.jsp</title>
</head>
<body>
<h2>显示页面跳转时携带的数据......</h2>
    <!-- 在经过页面跳转后,在跳转到的页面里,尝试获取之前存放的数据-->
	request: ${requestUser}<br>
	httpSession: ${sessionUser}<br>
	model: ${modelUser}<br>
	map: ${mapUser}<br>
	modelMap: ${modelMapUser}<br>
    
    <!-- 尝试直接获取请求地址中携带的参数数据-->
	param: ${param.name}
</body>
</html>
  • 创建SpringMVC控制器:DataAction。在控制器的action方法中利用SpringMVC内置对象,将数据存放到相应作用域中
package com.example.controller;

import com.example.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

@Controller
public class DataAction {
    @RequestMapping("/data")
    //这几个参数都是SpringMVC内置的,可以直接声明使用
    public String data(HttpServletRequest request, HttpSession httpSession, Model model, Map<Object, Object> map, ModelMap modelMap){
        
        //User实体类含有两个属性:name(String), age(int)。无参构造方法。全属性的有参构造方法,getter,setter,toString方法
        User user = new User("荷包蛋", 20);
        //将user对象利用各SpringMVC内置对象存放到相应作用域中
        request.setAttribute("requestUser", user);
        httpSession.setAttribute("sessionUser", user);
        model.addAttribute("modelUser", user);
        map.put("mapUser", user);
        modelMap.addAttribute("modelMapUser", user);
        //最后完成页面转发跳转
        return "main";
    }
}
  • 当控制器中的action方法以转发的方式跳转到webapp/admin/main.jsp页面时
  • 部署并启动tomcat进行测试
  • 网站首页(left),响应页面(right):可见对于放入相应作用域中的数据,在经过页面转发跳转后仍然可以获取到之前存放的数据
  • 而且对于param也可以在响应的页面中直接获取到随着前端请求携带而来的数据(携带而来的数据放在请求域中,转发是一次请求,请求域还在,自然可以获取到)

image

  • 当控制器中的action方法以重定向的方式跳转到webapp/admin/main.jsp页面时
package com.example.controller;

import com.example.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

@Controller
public class DataAction {
    @RequestMapping("/data")
    public String data(HttpServletRequest request, HttpSession httpSession, Model model, Map<Object, Object> map, ModelMap modelMap){
        User user = new User("荷包蛋", 20);
        request.setAttribute("requestUser", user);
        httpSession.setAttribute("sessionUser", user);
        model.addAttribute("modelUser", user);
        map.put("mapUser", user);
        modelMap.addAttribute("modelMapUser", user);
        
        //最后完成页面的重定向跳转
        return "redirect:/admin/main.jsp";
    }
}
  • 网站首页(left),响应页面(right):可见对于放入相应作用域中的数据,在经过页面重定向跳转后只有session域中可以获取到之前存放的数据
  • 因为本例中的重定向是两次请求,凡是放在第一次请求域中的数据,在第二次请求发起后,之前存放的数据对于第二次请求来说已经失效,无法访问原来存放的数据,而由于浏览器并未关闭,则session域仍然有效,可以正确获取之前存放在session域中的数据

image

标签:05,SpringMVC,springframework,user,跳转,import,页面
From: https://www.cnblogs.com/nefu-wangxun/p/16650370.html

相关文章

  • SpringMVC异常处理
    基于配置的异常处理SpringMVC提供了一个处理控制器,在方法执行过程中所出现的异常的接口:HandlerExceptionResolver,该接口的实现类有:DefaultHandlerExceptionResolver和Sim......
  • SpringMVC 04: SpringMVC中4种页面跳转方式
    转发和重定向的页面跳转方式页面跳转方式,本质上只有2种方式:转发+重定向但在SpringMVC的具体实现上,转发可以细分为:普通的页面转发+经由action方法的页面转发重定向......
  • 【面试题】Vue路由跳转的四种方式用法及区别
    Vue路由跳转的四种方式用法及区别点击打开视频讲解更加详细一、router-link<router-link:to="{name:'home'}"><router-link:to="{path:'/home'}">//name,path都行......
  • 05 | JAVA字符串
    字符串Strings1="Hello!";实际上字符串在String内部是通过一个char[]数组表示的,因此,按下面的写法也是可以的:Strings2=newString(newchar[]{'H','e','l','l......
  • SpringMVC 03: 请求和响应的乱码解决 + SpringMVC响应Ajax请求
    请求或响应的中文乱码问题tomcat9解决了get请求和响应的中文乱码问题,但是没有解决post请求或响应的中文乱码问题tomcat10解决了get和post请求以及响应的中文乱码问题......
  • SpringMVC视图
    SpringMVC中的视图SpringMVC中的视图是view接口,视图的作用是用来渲染数据,将模型model中的数据展示给用户,SpringMVC视图的种类很多,默认有转发视图:InternalResourceView和重......
  • SpringMVC支持ant风格
    SpringMVC中的ant风格?:表示任意单个字符*:任意0个或多个字符**:表示任意的一层或多层目录注:在使用的时候,只能使用//xxx的方式......
  • SpringMVC学习笔记(一)——简介
    1.MVC模式是什么1.1MVC模式简介MVC模式,全称为Model-View-Controller(模型-视图-控制器)模式,它是一种软件架构模式,其目标是将软件的用户界面(即前台页面)和业务逻辑分离,使......
  • 1[代码解析005] 关于一次bug排查解析 | new出一个对象其属性默认值是?
    1、代码片段//子单据状态更新List<OutboundOrderDetails>updateOutboundOrderDetailsList=Lists.newArrayList();outboundOrderDetailsLis......
  • SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式
    响应get和post请求SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应项目结构和配置文件与SpringMVC博客集中的"SpringMVC01"保持一致在webapp/......