页面传值--最佳答案6种方式:

一. 使用QueryString变量    QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。

         Response.Redirect( "target.aspx?param1=hello¶m2=hi ")         接收页面:   string   str   =   Request.QueryString["param1"];                                string   str1   = Request.QueryString["param2];二.使用Cookie对象变量(Cookie是存放在客户端的)       设置Cookie:   HttpCookie cookie_name = new HttpCookie("name");                         cookie_name.Value = Label1.Text;                         Reponse.AppendCookie(cookie_name);

          获取Cookie:                       string name= Request.Cookie["name"].Value.ToString();

三. 使用Session变量(session是存放在服务器端的)  设置Session:      Session["name"] ="hello";        获取Session:        string name = Session["name"].ToString();四.使用Application 对象变量  Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。         设置Application :    Application["name"] = ="hello";        获取Application :     string   name = Application["name"].ToString();五. PostBackUrl()方法     default.aspx页面:

Code1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />2default2.aspx页面:

Code1 if (PreviousPage != null)2        {3            TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");4           Response.write(textBox1.Text );5        }

六.使用Server.Transfer方法    这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!

【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】

JSP 页面传值方法总结:4种

阅读目录

  • 1. URL 链接后追加参数
  • 2. Form
  • 3. 设置 Cookie
  • 4. 设置 Session

JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧。

试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式。

回到顶部

1. URL 链接后追加参数

<a href="next.jsp?paramA=A&paramB=B...">URL 后面追加参数</a><jsp:include page="next.jsp"><jsp:param name="paramA" value="A"/></jsp:include> <jsp:forward page="next.jsp"><jsp:param name="paramA" value="B"/></jsp:forward> response.sendRedirect("next.jsp?paramA=A&paramB=B...")window.location = "next.jsp?paramA=A&paramB=B..."

上述几种代码执行时都将携带参数跳转到 next.jsp 页面中。

在 next.jsp 页面中获取对应参数的方式如下:

//内嵌的 java 代码
<%String paramA = request.getParameter("paramA"); %>//如果引入了 EL
{param.paramA}

优点:简单性和多浏览器支持(没有浏览器不支持URL)。

缺点:

1)传输的数据只能是字符串,对数据类型和大小都有一定的限制;

2)传输数据的值会在浏览器地址栏里面被看到,安全性等级低。

回到顶部

2. Form

    <form action="next.jsp" method="post">  <input type="text" name="paramA" value="A"> <input type="hidden" name="paramB" value="B">  <input type="submit" value="提交">  </form>  

在 next.jsp 页面中获取对应参数的方式与 (1)是类似的。

优点:

1)简单性和多浏览器支持(同样没有浏览器不支持 form);

2) 可以提交的数据量比 URL 方式要大的多;

3)传输的值会在浏览器的地址栏中显示出来,但是有一点黑手段的同样能从页面源码中将参数列表构造出来;

缺点:

1)传输的数据也只能是字符串,对数据类型有一定的限制;

回到顶部

3. 设置 Cookie

用客户端的认证凭证小小 Cookie 当然也能实现 JSP 页面的传值。

    <%  Cookie c=new Cookie("paramA","A");  c.setMaxAge(60*60);  //cookie 有效期1分钟response.addCookie(c);  //将cookie 添加到 http响应中%>

想要在 next.jsp 页面读取 cookie,需要调用 request.getCookies() 方法来获得一个javax.servlet.http.Cookie 对象的数组。

然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值。

//内嵌的 java 代码
<%Cookie cookie = null;// 获取cookies的数据,是一个数组Cookie[] cookies = request.getCookies();if(cookies != null ){for (int i = 0; i < cookies.length; i++){cookie = cookies[i];out.print("参数名 : " + cookie.getName());out.print("<br>");out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");out.print("------------------------------------<br>");}}else{out.println("<h2>没有发现 Cookie</h2>");}
%>//EL 获取方式
${cookie.paramA.value}

优点:

1)Cookie 的值能够持久化,即使客户端机器关闭,下次打开还是可以得到里面的值;

2) Cookie 可以帮助服务器端保存多个状态信息,但是不用服务器端专门分配存储资源,减轻了服务器端的负担。

缺点:

1)虽然安全性相比 URL 和 Form 要提高了许多,但是也存在黑手段获取客户端 cookie,暴露客户信息。

回到顶部

4. 设置 Session

个人认为 session 和 cookie 一个在服务端一个在客户端。

在它们中添加键值对后,不仅仅是提供了页面之间的传递,其实是一种数据共享的解决方案。

 <%       session.setAttribute("paramA","A");  response.sendRedirect("next.jsp"); %>

想要在 next.jsp 读取 session 的方法:

//内嵌java 片段
<%=session.getAttribute("paramA") %>//EL 获取方式
{session.paramA}

Session 的优缺点可以参照 Cookie。

【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】

跨页面传值的几种简单方式3种

方法一:

通过URL传值

eg:

location.href="跨页面1-2.html?age=18&gender=man";

在下个页面接收:

//1、location.search获取get请求的参数   获取到的数据,是以?开头的
var search=location.search;
//2、如果还想要获取确定的数据,可以解析字符串
function parse(search){//从第二个字符开始截取   ,获取到第二个开始后面所有的字符var str=search.substring(1);var result={};//分割字符串  -->产生字符串数组var strs=str.split("&");//遍历数组中的每一个元素strs.forEach(function(v){//伪代码:v="age=18"var keyvalue=v.split("=");var name=keyvalue[0];var value=keyvalue[1];result[name]=value;})return result;
}var r=parse(search);

方法二:

使用h5的localStorage,或者sessionStorage存储对象类型

存储对象的正确的方式:
var p2={name:"周瑜",age:16};
var s2=JSON.stringify(p2);      //将对象"序列化"JSON数据(字符串格式)localStorage.setItem("p2",s2);  //以字符串格式存储信息var s2_2=localStorage.getItem("p2");    //获取存储的信息,也是字符串格式var p2_2=JSON.parse(s2_2);      //JSON数据反序列化为对象

localStroage和sessionStorage使用大致相同,他们的不同之处在于,localstroage是永久保存,而sessionstroage是会话存在,

当会话结束,sessionstroage保存值也会清空。

方法三:

使用cookie保存:

原生cookie

//1、保存一条数据
document.cookie="name=abc";
document.cookie="age=18";
//2、获取所有数据
var cookie=document.cookie;
console.log(cookie);  //"name=abc; age=18; PHPSESSID=fr1njdv6apf3neoj5nehntrps7"
//之后可以解析字符串,获取指定的数据内容//3、设置cookie的有效期
document.cookie="id=666;expires="+new Date("2017-10-22 08:00");

jQuery.cookie.js插件

 //第一种类型:会话cookie//    //1、设置值
//    $.cookie("phone","13188886666");
//    $.cookie("email","123@qq.com");//    //2、获取值
//    var phone=$.cookie("phone");
//    console.log(phone);//    var email=$.cookie("email");
//    console.log(email);    //第二种类型:设置长期cookie(具有指定有效期)
//    $.cookie("address","广东深圳市",{
//        expires:7               //expires不仅仅可以是日期类型的对象,也可以是以天为单位的数字
//    });//    $.cookie("tel","0755-88888888",{
//        expires:1/24              //cookie值就会保存一小时
//    });//    $.cookie("birthday","1.1",{
//        expires:new Date("2018-01-01 08:00")        //对于这样的过期时间,已经在内部处理好了时区问题
//    });    //删除指定的cookie
$.removeCookie("birthday");

使用cookie可用来跨页面传值-状态保持

转载于:https://www.cnblogs.com/chenhongshuang/p/8678472.html

【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...相关推荐

  1. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  2. ASP.NET 2.0中的跨页面提交

    简介 在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面.例如FirstPage.aspx中的button只能提交到FirstPage.aspx,而不能提交到 ...

  3. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  4. 跨页面访问ViewState

    跨页面访问ViewState仅仅适用于通过Post方法或者Server.Transfer方法从一个页面重定向到另一个页面的情况,如果你使用Response.redirect方法将无法实现跨页面访问Vi ...

  5. 一种通用的数据仓库分层方法

    0x00 概述 数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用.而目前网络中大部分可以被检索到相关文章只是简单地提及数据分层的设计,或缺少明确而详细的说明, ...

  6. mysql数据库预处理_一种MySQL数据库中间件预处理方法与流程

    本发明属于通信领域,特别涉及一种MySQL数据库中间件预处理方法. (二) 背景技术: 通常来说,MySQL集群和应用程序之间需要通过一个中间件来实现通信.中间件的作用是,对于应用程序来说,不需要关心 ...

  7. 一种日志采集装置及方法

    摘要 本发明提供了一种日志采集装置及方法,其中,日志采集装置包括:日志监控模块,用于监控当前服务器上的多个应用系统的日志文件:确定各日志文件新增的记录,并保存各日志文件以及新增的记录:数据传输服务模块 ...

  8. 小程序如何做成html的滚动字幕,小程序两种滚动公告栏的实现方法

    先上效果图: 横向滚动栏实现: 网上的几种方案或多或少都有一些问题: 1.setData定时器更新text view的margin-left方法,由于setData的毫秒延时,动画播放起来一卡一卡: ...

  9. php执行只读文件,php实现以只读方式打开文件的方法

    php实现以只读方式打开文件的方法 这篇文章主要介绍了php实现以只读方式打开文件的方法,实例分析了php中fopen函数的功能及使用技巧,需要的朋友可以参考下 本文实例讲述了php实现以只读方式打开 ...

最新文章

  1. opencv矩阵运算(1)
  2. ResourceBundle的路径问题
  3. AD服务器不愿意处理该请求
  4. 带权图的最短路径算法(Dijkstra)实现
  5. JAVA输出希腊union_Java Geometry.union方法代码示例
  6. CuteEditor 6.0 在线HTML编辑器的领航者
  7. pic12f1823单片机入门_PIC单片机入门教程V1.1
  8. C语言,最新猴子摘桃(递归方法)
  9. Hive之数据类型、查询操作
  10. 从电子印章到印控一体化,企业印章管理更安全高效
  11. mysql capi函数详解_CAPI函数描述(G-N)
  12. 智慧创造财富,第十五期【新营销·创富大会】圆满落幕!
  13. 机顶盒开发助手Tvbox
  14. (转)Android兼容8.0后APP图标变为原生小机器人图标
  15. Python3记录--个人常用函数及资源(持续更新)
  16. React 项目配置 Win10 WSL
  17. 牛顿法求解无约束最优化问题
  18. 批处理bat提示 文件名、目录名或卷标语法不正确
  19. [SW]SolidWorks API SDK二次开发学习心得01--开发方式
  20. DelayQueue使用示例

热门文章

  1. 利用getLayoutParams()方法和setLayoutParams()方法
  2. JavaScript中window.open用法实例详解
  3. Eclipse下编写C++程序——CDT环境搭建
  4. 使用Java处理除法运算的陷阱
  5. Java泛型的实现原理
  6. golang中的TestMain
  7. a[0]和a 的区别?
  8. 《深入理解计算机系统》读书笔记四:操作系统的抽象
  9. C语言文件操作解析(二)
  10. STS Eclipse IDEA 指定启动JDK版本