JSP中四种传递参数的方法

jsp内置对象(2)-request 在 JSP 中,请求参数可以通过request对象来获取。我们可以使用如下方式从request在上面的代码中,方法接收一个字符串类型的参数,该参数是要获取的请求参数的名称。该方法会返回一个字符串,即请求参数的值。例如,在以下 JSP 页面中,我们可以获取name 阅读详情
AI摘要

本文介绍了JSP中四种常见的参数传递方法,包括form表单、request对象的setAttribute和getAttribute方法、超链接及<jsp:param>标签,并提供了详细的示例代码。

今天老师讲了jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用!

1、form表单

2、request.setAttribute();和request.getAttribute();

3、超链接:<a herf="index.jsp"?a=a&b=b&c=c>name</a>

4、<jsp:param>


下面一一举例说明:

1、form表单

form.jsp:

<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			form.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">

		<h2 style="font-family:arial;color:red;font-size:25px;text-align:center">登录页面</h2>

		<form action="result.jsp" method="get" align="center">
			姓名:<input type="text" name="name" size="20" value="" maxlength="20"><br/>
	
			密码:<input type="password" name="password" size="20" value="" maxlength="20"><br/>

			 <!--在爱好前空一个空格,是为了排版好看些-->

			&nbsp;爱好:<input type="checkbox" name="hobby" value="唱歌">唱歌
				  <input type="checkbox" name="hobby" value="足球">足球
				  <input type="checkbox" name="hobby" value="篮球">篮球<br/><br/>
			
			<input type="submit" name="submit" value="登录">
			<input type="reset" name="reset" value="重置"><br/>
		</form>

	</body>
</html>


result.jsp:

<%@page language="java" import="java.util.*" pageEncoding="GB2312"%>
<html>
	<head>
		<title>
			result.jsp file
		</title>
	</head>

	<body bgcolor="ffffff">
		<%
		  request.setCharacterEncoding("GB2312");

		  String name=request.getParameter("name");
		  name=new String(name.getBytes("iso-8859-1"),"GB2312");

		  String pwd=request.getParameter("password");
		  String[] hobby=request.getParameterValues("hobby");//注意这里的函数是getParameterValues()接受一个数组的数据

		%>
		  
		<%
			if(!name.equals("") && !pwd.equals(""))
			{
		%>
				
				您好!登录成功!<br/>
				姓名:<%=name%><br/>
				密码:<%=pwd%><br/>
				爱好:<%
						 for(String ho: hobby)
						 {
							ho=new String(ho.getBytes("iso-8859-1"),"GB2312");
							out.print(ho+" ");
						 }
				       %>
		<%
			}
			else
			{
		%>
			        请输入姓名或密码!
		<%
			}
		%>
	</body>
</html>
注意:form表单的提交方式为get,在参数传递时会遇到中文乱码的问题,一个简单的解决方法是,将接受到的字符串先转换成一个byte数组,再用String构造一个新的编码格式的String,如:

 String name=request.getParameter("name");
 name=new String(name.getBytes("iso-8859-1"),"GB2312");
如果form表单的提交方式为post,解决乱码问题的简单办法是,使用 request.setCharacterEncoding("GB2312");设置request的编码方式。

为什么会出现中文乱码问题呢?因为Tomcat服务器默认的系统编码方式为iso-8859-1,你传递参数给服务器时,使用的是默认的iso-8859-1的编码方式,但是服务器向你返回信息时,是按page指令中设置的编码方式,如:<%@page language="java" import="java.util.*" pageEncoding="GB2312"%>,这样就混合了两种编码方式,所以会出现乱码,所以解决之道就是统一传递和接收的编码方式。


2、request.setAttribute()和request.getAttribute()

set.jsp:

<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			set.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">
		<%
			request.setAttribute("name","心雨");
		%>
		<jsp:forward page="get.jsp"/>
	</body>
</html>

get.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			get.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">
		<%
			out.println("传递过来的参数是:"+request.getAttribute("name"));
		%>
	</body>
</html>

request.setAttribute()和request.getAttribute()是配合<jsp:forward>或是include指令来实现的。


3、超链接:<a herf="index.jsp?a=a&b=b&c=c">name</a>

href.jsp:

<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			href.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">
		<a href="getHerf.jsp?name=心雨&password=123">传递参数</a>
	</body>
</html>

getHref.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			getHref.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">
		<%
			String name=request.getParameter("name");
			name=new String(name.getBytes("iso-8859-1"),"gb2312");

			out.print("name:"+name);
		%>
		<br/>
		<%
			out.print("password:"+request.getParameter("password"));
		%>
	</body>
</html>

这种传递参数的方法和form表单的get方式类似,是通过地址栏传递的参数,其乱码解决方法也和form 的get方式一样。


4、<jsp:param>

param.jsp:

<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			param.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">

		<%request.setCharacterEncoding("GB2312");%>

		<jsp:forward page="getParam.jsp">
			<jsp:param name="name" value="心雨"/>
			<jsp:param name="password" value="123"/>
		</jsp:forward>

	</body>
</html>

getParam.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<html>
	<head>
		<title>
			getParam.jsp file
		</title>
	</head>

	<body style="background-color:lightblue">
		<%
			String name=request.getParameter("name");
			out.print("name:"+name);
		%>
		<br/>
		<%
			out.print("password:"+request.getParameter("password"));
		%>
	</body>
</html>

这里发现了一个奇怪的问题,还是在中文乱码的问题上,在form表单的例子中,如果传递方式为post,则只需要在接收参数的页面设置request的编码方式就可以了,即request.setCharacterEncoding("GB2312");,注意是在接收参数的页面,如果将该句放到form表单里,那么不起作用,仍然是乱码。而在本例中,为了使传递的参数不出现乱码,却是将request.setCharacterEncoding("GB2312");放在发送参数的页面中,才会正常显示中文,放在接收参数的页面中,不起作用。也许这就是<jsp:param>和form表单传递参数不同的地方。为什么会有这个不同呢?可能是因为form表单中的参数是由客户端传送到服务端上的,需要经过一个request的打包过程,但是<jsp:param>传递的参数本身就是在服务器端的,不需要经历由客户端到服务端这么一个过程,但是服务器里的参数传递是这么回事呢?这个问题,我不知道了!真是知识是一个扩大的圆圈,你知道的越多,那么不知道的就越多!努力吧!



JSP“三大请求传参方式”及“中文乱码问题解决方案”详解 使用JSP的forward或include动作,利用传参数子动作实现参数的传递,‘姓名: 阅读详情

相关推荐

【rk3566/3568】Android 11移植gms

【rk3566/3568】Android 11移植gms 1、前言 测试功能时,想去Google play store去下个应用测试,发现通过网页搜索总是下载不到正确的谷歌服务框架;于是就不得不去搞一个内置的gms。 2、移植 1、需要下载Android 11对应的gms的包 opengapps 2、看下文件目录 直接移植core里面的文件,GAPPs Optional按需添加 3、在vendor下创建google目录 ...

lin_ff的博客 7646

STM32F401RB与M95M04 EEPROM的SPI接口配置与数据存储实践

SPI(Serial Peripheral Interface)是一种高速、全双工的同步串行通信协议,广泛应用于微控制器与外围设备的数据交换。其主从架构和四线制设计(SCK、MOSI、MISO、CS)确保了通信的可靠性。在嵌入式系统中,EEPROM因其非易失性和高擦写次数成为存储配置数据的理想选择。通过STM32F401RB的SPI接口驱动M95M04 EEPROM芯片,可实现智能家居设备配置、工业参数存储等场景下的可靠数据存储。本文以STM32Cube HAL库为基础,详细解析SPI初始化和EEPROM读

weixin_34357887的博客 548

基于分段线性近似的Softmax硬件加速器设计

本文深入探讨了基于分段线性近似的Softmax硬件加速器设计。针对深度学习模型中Softmax函数在硬件实现时指数运算成本高昂的问题,提出用分段线性拟合替代传统泰勒展开,通过一次乘加操作高效完成计算,并详细分析了输入范围压缩、精度与硬件资源权衡、以及包含地址生成、参数查找、乘加计算和归一化的完整硬件架构。该方法在保证精度的同时,显著提升了AI边缘芯片的推理速度和能效。

weixin_28278377的博客 312

jsp页面传递参数

jsp面间传递参数是项目中经常需要的,这应该算是 web 基本功吧。页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数。下面介绍一下实现的方法。 HTTP是无状态的协议。Web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知该页面中的值,除非通过服务器。因此,Web页面保持状态并传递给其它页面,是一个重要的技术。 Web页面之间传递数据,是Web程序的重要功能 URL传值; (1)直接在URL请求后添加, url 链接后追加参数 如:< a href=“thexuan

qq_44485559的博客 5126

华为鸿蒙系统也能用!5分钟搞定谷歌三件套安装(附最新APK下载链接)

本文为华为鸿蒙系统用户提供了一份详尽的谷歌三件套(Google Play服务、商店及框架)手动安装指南。文章核心在于无需Root,通过ADB命令获取设备信息,并从可靠来源下载匹配版本的APK,按照正确顺序安装,从而解决海外应用依赖问题,实现5分钟快速部署。

c7d8e9的博客 6488

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 100

JSP页面间传参数值的几种方法(新手版)

1、URL传值 在HTML中传参数的写法是: <a pref="1.jsp?name1=value1&name2=value2"></a> 其中1.jsp是要跳转的页面,name1和value1是键值对,多组键值对之间用&连接,不要有空格之类的字符。在接收参数值的页面中使用request.getParameter(“n...

Q_M_X_D_D_的博客 1万+

Wio-LR1121多频段LoRa模块技术解析与应用实践

LoRa技术作为低功耗广域物联网(LPWAN)的核心通信方案,通过独特的扩频调制技术实现远距离传输与强抗干扰能力。其工作原理基于CSS(Chirp Spread Spectrum)调制,支持动态调整扩频因子(SF)和带宽(BW)来平衡传输距离与数据速率。Wio-LR1121模块作为Semtech LR1121芯片的载体,创新性地整合了sub-GHz、S-Band和2.4GHz多频段支持,配合仅1.35μA的睡眠电流,为跨境物联网部署提供了硬件基础。在智慧农业、工业监测等场景中,开发者可通过SPI接口快速集成

weixin_33742618的博客 416

jsp中四种传递参数的方法

jsp中四种传递参数的方法如下: 1、form表单 2、request.setAttribute();和request.getAttribute(); 3、超链接:<a herf="index.jsp...

weixin_39037804的博客 987

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2971

基于STM32、HAL库的ADE7880ACPZ-RL电能计量芯片驱动程序设计

@retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)* @retval 状态 (ADE7880_OK或ADE7880_ERROR)PA6 (MISO) <--> SDO (SPI数据输出)PB0 (CS) <--> /CS (片选,低有效)

corlin6688的博客 668

Jsp中四种传递参数的方法

Jsp中四种传递参数的方法 1、form表单 2、request.setAttribute();和request.getAttribute(); 3、超链接:name 4、 下面一一举例说明: 1、form表单 form.jsp:                                   form.jsp file                 

malinchong313的博客 1914

Nvidia Orin Driveos Camera 介绍及调试详解

自动驾驶-nvidia orin driveos Camera 驱动详解及调试

u011803281的博客 2991

了jsp中四种传递参数的方法

原文 :  http://blog.youkuaiyun.com/hackerain/article/details/6776083 jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用! 1、form表单 2、request.setAttribute();和request.getAttribute(); 3、超链接:name 4、 下面

HuiSirBlog 418

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jsp传递参数的四种方法

1、form表单 接受:request.getParameter("name"); 2、scop.setAttribute();和           接受:scop.getAttribute();或el表达式 3、超链接:<a herf="index.jsp"?a=a&b=b&c=c>name</a> 接受: request....

dengbiantian2801的博客 1474

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jsp中四种传递参数的方法&&web中参数字符编码的修改统一

文章来源http://www.jb51.net/article/107715.htm 为转载 jsp中四种传递参数的方法 jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用! 1、form表单 2、request.setAttribute();和request.getAttribute(); 3、超链接:name 4、 下面一一举例说明:

junruit的博客 1454

102-----JSP中四种传递参数的方法

JSP中四种传递参数的方法 标签: jspstringinput服务器importinclude 2011-09-14 23:04 22266人阅读 评论(0) 收藏 举报  分类:   J2EE(34)  版权声明:本文为博主原创文章,未经博主允许不得转载。 今天老师讲了jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用!

lixiao1048的博客 335
上一篇: <jsp:include>和<%@include%>的区别
下一篇: 位图排序算法(一),java版
hackerain
博客等级 码龄16年 753粉丝 220原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值