Jsp通过request.setAttribute向前台传递变量
背景
梳理维护的程序时,发现以下代码:
/*jsp*/
<input type="hidden" name="hidURL" value="${fileURL}" />
<input type="hidden" name="fileName" value="${fileName}" />
<input type="hidden" name="returnMsg" value="${msg}" />
对${fileURL}是上传到服务器文件的绝对路径。其值得来源搞不懂。
经过查阅,是servlet的request.setAttribute向前台传变量的方法。后台包含了如下代码。
/*servlet*/
request.setAttribute("fileURL", uploadPath);
request.setAttribute("fileName", tempFileName);
request.setAttribute("msg", "success");
梳理相关的知识点:
- ${msg}是jsp的EL(express language,表达式语言),可以直接计算表达式或取request里的变量的值。
- servlet通过request.setAttribute设置request的值;前台jsp通过EL获取值,实现前后台互动(ps:ajax和jquery方式更简单点,ajax获取服务器返回值,jquery设置dom对象值;c#.net里也有类似的实现)。
- jsp本身就是servlet(是servlet的升级),所以可以直接获取HttpServletRequest里的属性值。
- jsp支持4中作用域:page(仅当前页)、request(整个请求\响应过程)、session(会话级,贯穿多个request,关闭浏览器生效)、application(整个应用,可跨越浏览器存在)。
参考示例
获取对象的话可以这样:
Java后台: 设置request的属性值
- // 返回课程包装类的数据--用于页面显示
- request.setAttribute("courseDto", courseDto);
HTML/jsp页面: 可以直接用el表达式获取到request中设置的属性值
- <div class="static-item">
- <div class="meta">难度级别</div>
- <div class="meta-value">${courseDto.course.courseGrade }</div>
- </div>
JavaScript: 获取request.setAttribute的对象,两种方式
第一种:
- <strong>var courseDto = '<%=request.getAttribute("courseDto")%>';
- alert(courseDto);</strong>
第二种:
- <strong>var courseDto = '${courseDto}';
- alert(courseDto);</strong>
打印出来的对象:
但是我现在想要获取的是courseDto中的一个属性值,
我想在js中直接用
alert(courseDto.course.coourseId);
来显示,结果是不行的。
网上查了一些资料说是:
- 1、把js直接写在了JSP页面,所以能获取到。如果单独把JS抽离出来是不可能获取到的。前者服务端解析能或许到,后者客户端解析获取不到。
- 2、js里是在客户端执行的,不能直接获取,因为EL表达式是在服务器的时候被解析的,所以可以获取到。一个是客户端的东西,一个是服务器端的东西。
- 3、jsp能取到,那是因为他本身就是servlet。js不可能有方法直接获取到HttpServletRequest里面的属性值。
- 4、setAttribute是服务器行为,到了客户端就无效了,也谈不上如何用。除非你在jsp的时候就写到js变量里,或者使用ajax请求你需要的数据。
尽管如此,但是还是有办法解决的,如下:
获取request.setAttribute对象的属性值
就是在HTML/jsp页面设置一个隐藏域,然后再通过就是获取
HTML: <input type="hidden" value="${student.name}" id="stuName"/>
JavaScript:var stuName = $('#stuName').value ;
参考:
《js/jquery怎么取后台request.setAttribute的对象或者属性值?》
《JSP的原理、JSP的执行过程》
jsp 的四个作用域 :page、request、session和application的区别
Jsp通过request.setAttribute向前台传递变量相关推荐
- 后台通过request.setAttribute向前台传值,前台如何去获取其中的对象或属性值
讲这些,我们先来了解一下request.setAttribute和request.setAttribute()这两种方法的作用. request.getAttribute("nameOfOb ...
- JSP内置对象request——setAttribute/getAttribute的使用
学习本文章前需知getRequestDispatcher的使用 前言 一.setAttribute是什么? 二.使用步骤示例 1.建ArrayList和HashMap 2. 使用setAttribut ...
- 使用request对象进行数据传递
在进行请求转发时,需要把一些数据传递到转发后的页面进行处理,需要使用request对象的setAttribute方法将数据保存到request范围内的变量中 使用: request对象可以视为一个域, ...
- request.setAttribute()用法
小问题: JSP1代码 String [] test=new String[2]; test[0]="1"; test[1]="2"; request.setA ...
- request.setAttribute()
讲这些,我们先来了解一下request.setAttribute和request.setAttribute()这两种方法的作用. request.getAttribute("nameOfOb ...
- java中的setattribute_JSP request.setAttribute()详解及实例
javascript request.setAttribute()详解 request.setAttribute()怎么用的? JSP1代码 String [] test=new String[2]; ...
- 避坑——request.getSession().setAttribute与request.setAttribute的区别
刚开始不理解这个区别,导致每次前台取到的验证码总是有差别:坑---所以也记录下 equest.setattrbute()顾名思义只能在一个request内有效,如果重定向回客户端,将取不到值.requ ...
- request.getParameter()与request.setAttribute()的区别
request.getParameter(),request.setAttribute()区别如下: (1)request.getParameter()取得是通过容器的实现来取得通过类似post,ge ...
- JSP中Request属性范围
JSP属性范围,通过以下几个测试代码来学习request属性的范围 测试一(JSP动态指令方式传参): 测试内容: <jsp:param .../>添加参数,通过<jsp:forwa ...
最新文章
- c语言求出两个最大素数,求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法。通式分别为 f(x, y) = f(y, x%y...
- 如何杀死进程及子进程
- c++11 变长参数的使用(制作一个多参数多类型求和函数)
- C语言strstr()函数(在主字符串里查找子字符串,返回第一次找到的子字符串以及后面的字符串)
- 医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5
- 让您的Xcode键字如飞
- 莫烦Matplotlib可视化第二章基本使用代码学习
- 【软件开发底层知识修炼】十一 链接器-链接脚本
- struts2 resultType为chain时 传值
- Python深度学习:常见优化算法
- wps页码从指定页开始_wps怎么自动生成页码以及设置页码从第三页开始
- 计算机网络基础知识总结,就这一篇了
- 稻城智慧旅游太极计算机,智慧旅游,让梦中的“香格里拉”离我们更近
- Session-判断用户登陆验证码是否正确
- 全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复“顶尖程序员”下载PDF资料)
- UUI Make StartUp Disk
- 【Excel学习笔记13】对一个单元格内容进行条件分列,分列成多列
- C#人民币大小写转换
- Docker Privileged access
- 【建议收藏】17个XML布局小技巧
热门文章
- 《SGM-Nets: Semi-global matching with neural networks》
- 魅蓝s6 android系统版本,魅蓝s6处理器相当于骁龙多少-与非网
- oracle 12cdba pdf,【C26】《深入理解Oracle12c数据库管理》PDF 下载
- Java动态代理InvocationHandler的一点感悟
- set echo on/off,set term on/off,set feedback off,set heading off命令
- 5大抖音变现模式,看懂你就知道如何抖音如何吸粉
- 逆水寒土豪最多的服务器,逆水寒土豪到底多有钱?几个人可以承包一个服!
- 高僧与少女的私生子!看懂了,你离成功就不远!
- Linux下QT更改系统时间并同步到硬件时钟
- HTML百度地图开发者平台的使用,实现简单位置定位