原文地址:http://www.cnblogs.com/java-class/p/6358964.html

  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。

JSP 页面传值方法总结(转)的更多相关文章

  1. JSP 页面传值方法总结

    JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式. 1. URL 链接后追加参数 <a href=&quo ...

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

    阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...

  3. 向jsp页面传值时出现乱码

    在一个html页面中用表单向jsp页面传值: 这是html页面 <html> <head> <title>MyBeans.html</title> &l ...

  4. iOS阶段学习第32天笔记(页面传值方法介绍)

    iOS学习(UI)知识点整理 一.界面传值方法 1.方法一  Block传值  通过SubView视图的Block向View视图传值改变View视图的背景色 实例代码: 1)SubViewContro ...

  5. Springmvc controller和jsp页面传值对象类型问题和普通问题

    一:JSP-->controller 1.当jsp页面传递的值是对象类型时候比如User.name User.age的user对象传递,需要以下操作 jsp页面提供对应标签的value必须存在且 ...

  6. JSP页面传值出现中文乱码的问题

    在接收值的jsp页面代码的body里添加: <%request.setCharacterEncoding("utf-8"); %>  //这里是设置utf-8为jsp页 ...

  7. JSP 页面传值

    使用session会话传值并重定向页面 //得到用户提交的值 String name = request.getParameter("username"); String pwd ...

  8. 【JavaWEB SSH】jsp页面传值后台Controller 部分值绑定不上实体类

    //前端ajax代码 1 var oldpassword = $('#old_password').val(); var password = $('#L_pass').val(); var user ...

  9. web 页面传值方法

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

随机推荐

  1. Servlet 中为多项选择题判分---String类的indexOf()方法妙用

    首先来看一下String类的indexOf()方法的用法: public class FirstDemo1 { /** *API中String的常用方法 */ // 查找指定字符串是否存在 publi ...

  2. Logback 基础知识

    1.Logback使用logback 是log4j的替代者,其需要slf4j.其配置文件主要有以下三种1. logback.groovy2. logback-test.xml3. logback.xm ...

  3. Android - DrawerLayout

    Android DrawerLayout 的使用 Android L Android Studio 1.4 从主视图左侧能抽出一个导航栏,效果图:  点击后弹出新界面:  新界面也可以抽出左侧导航栏 ...

  4. 学习笔记TF028:实现简单卷积网络

    载入MNIST数据集.创建默认Interactive Session. 初始化函数,权重制造随机噪声打破完全对称.截断正态分布噪声,标准差设0.1.ReLU,偏置加小正值(0.1),避免死亡节点(de ...

  5. Actor模型原理

    1.Actor模型 在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用 ...

  6. tensorflow l2_normalize函数

    1.l2_normalize函数 tf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None) 解释:这个函数的作用是利用 L2 范数对指定维度 dim 进 ...

  7. Linux,activemq-cpp之消息过滤器

    假设过滤器字符串如下: filt1=aaaa filt2=bbbb filt3=cccc activeMQ-cpp中消息过滤器,在发送消息的producer.cpp中,对message进行属性设置,m ...

  8. (转)流量加速插件 FinalSpeed介绍及一键安装教程

    原文章连接:https://blog.kuoruan.com/82.html 1 介绍 官方介绍:FinalSpeed是高速双边加速软件,可加速所有基于tcp协议的网络服务,在高丢包和高延迟环境下,仍 ...

  9. 【javascript】继承

    1. js 其实是一个非面向对象的语言,通过对象的深浅复制完成继承 2. 继承方法 继承的方法有两种 1)prototype 原型模式 举个例子 var Animal = function () { ...

  10. 会话跟踪技术之——cookie

    1.cookieForm <%@ page language="java" contentType="text/html; charset=UTF-8" ...