热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端session怎么传值_10年程序猿总结,SpringMVC多种传值方式

前端传到Controller:方法1通过HttpServletRequest。写法如下:HttpServletRequest类是Servlet中的类型&

前端传到Controller:

方法1

通过HttpServletRequest 。

写法如下:

4faee82360ff8f82d83dcd1c9587a639.png

HttpServletRequest类是Servlet中的类型,代表了一个Servlet请求。无论Post还是Get请求,都能通过这种方式获取到。

可以通过Post方法,使用Postman工具模拟一个post请求,都可以将值传到Controller。

这招可以获得COOKIE以及Session数据。

还可以通过注解@Autowired,将HttpServletRequest 自动的注入进来,不必担心多线程下的并发问题,因为这里HttpServletRequest注入的是一个AOP proxy ,而不是一个普通bean 。每次请求过来,都会检查线程本地属性,来获取真正的Request对象。这些都是Spring自动配置的默认场景。

但是不推荐使用这个方法,因为这种方法破坏了对一个注入对象的常规理解,造成混乱。

代码如下:

64026ff1e380cbf3558df5cbf6f1bdcf.png

方法2

使用路径变量。

写法如下:

d70017079e95008ef949d6e24f13f184.png

@RequestMapping中的{}中即为路径变量,该变量还需要在方法的参数值出现,并且标记@PathVariable。

通过URL匹配的方式既可以实现传值,这是REST风格的一种传值方式。

上面的例子,只需输入URL:

http://127.0.0.1:8080/WebApp/print/ZhangSan/30

controller接收到传值,输出:

name:ZhangSan

age:30

@RequestMapping("/print/{name}/{age}")是@RequestMapping(Value="/print/{name}/{age}")的缩写形式,本质上是一样的。

方法3

参数名匹配的方式:

8241adf37f4c6c784bdcc33b4e776772.png

或者:

819019d63e68ba89402a79b5ae6fb2a5.png

当请求传入的参数名字和controller

中代码的名字一样的时候,两种方式都可以,区别在于使用了注解@RequestParam,可以设置一个默认值来处理到null值。

@RequestParam(value=“name”, defaultValue=“John”)

但是如果请求中参数的名字和变量名不一样的时候,就只能使用@RequestParam注解。

Controller代码只能如下的写法

@RequestMapping(value="/print")

public String PrintInfo(@RequestParam(“user_name”) String name, @RequestParam(“user_age”)int age) {

}

尽量使用@RequestParam注解,因为这样可以清晰的知道该参数来自Request,可读性高。

方法4

传递请求头中的参数,需要用到@RequestHeader注解,该注解将Header中的值绑定到参数上,可以获取一个,多个或者所有的参数。

例如

3a94fb29ae1476890e04ebd917901cfb.png

或者

90b08e560e4663de944198e46d52dae1.png

方法5

使用到@RequestBody注解,得到整个RequestBody的信息

ac6e1c17b742fa59f13389368511a74e.png

@RequestBody可以将Json数据直接映射程Java对象。例如:

方法6

采用@ModelAttribute注解,命名匹配,Post中的参数值和Model中的参数值一致的话,会自动绑定到该值。

9aca5413d3a5cee33f7d063f38f03e0b.png

然后当Post的值中有name和age时,Controller中的user对象会自动附上值。

Controller传递到JSP

方法1

使用ModelAndView类,代码如下:

25aa689529610aab02f641f6ac1c5f15.png

JSP页面中:

b99652d3894510c2af9f486c540e12b0.png

ModelAndView 初始化的时候,设置了view的名字,同时也把对象存起来,直接传给view。简单实用。

方法2

使用Model或者ModelMap

(Model是一个接口,ModelMap实现了Model接口)

该方法和ModelAndView方法相似,只是Model和View分开来了,通过返回一个String来找到View,Model是注入到Controller的一个参数,通过对它添加属性,在jsp端读取值。代码如下:

2164faf152739034bd3117e580c3f9b7.png

JSP页面中:

081f8937bb385e66212bd45026c013f3.png



推荐阅读
  • 本文详细探讨了在微服务架构中,使用Feign进行远程调用时出现的请求头丢失问题,并提供了具体的解决方案。重点讨论了单线程和异步调用两种场景下的处理方法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 探讨了在 Spring MVC 框架下,JSP 页面使用 标签时遇到的数据无法正确显示的问题,并提供了可能的原因和解决方案。 ... [详细]
author-avatar
是不是有谁代替我陪在你身旁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有