JSP之间参数传递

在实际开发中,有时候需要用一个JSP打开另一个JSP,通常还会需要带一些参数在新打开的页面显示或处理,这里整理出一些打开方式和对应的参数接收方法:

一、打开方式

1、通过form表单

<body>
	<form action='page.jsp' method='get'>
		 <input type='text' name='name' value='value'/>
		 <button type='submit'>提交</button>
	</form>
</body>

2、通过open命令

<body>
    <button type='submit' οnclick="window.open('page.jsp?name=value')">提交</button>
</body>
<script type="text/javascript">
	function openPage(){
		window.open('page.jsp?name=value');
	}
</script>
<body>
	<button type='submit' οnclick="openPage()">提交</button>
</body>

3、通过location命令

<body>
	<button type='submit' οnclick="location.href='page.jsp?name=value'">提交</button>
</body>
<script type="text/javascript">
	function openPage(){
		location.href='page.jsp?name=value';
	}
</script>
<body>
	<button type='submit' οnclick="openPage()">提交</button>
</body>

4、其他方法

1)在jsp中编写java代码,使用request的转发方法或response的重定向方法

2)使用jstlforward标签

3)有些前端框架,根据在js原有方法的基础上封装了一些打开页面的方法,如:miniUI的“mini.open()”等,具体可参照框架对应的API

二、接收方式

以上几种方式中,除了form表单提交且method选择posty外,其他方式都是将数据直接跟在url地址后面,根据获取后的用途不同,通常可以有以下两种方式获取:

1、在页面中获取并显示

<body>
	<%=request.getParameter("name") %>
	${param.name }
</body>

Tips:如果使用EL表达式,不能直接使用属性名直接获取,需要使用param.属性名

2、在js中获取并使用

<script type="text/javascript">
	$(function(){
		//获取url中"?"符后的字串,含"?"
		var urldata = location.search;
		var name = '';
		if(urldata!=''){
			var aData = urldata.substr(1).split('&');
			for(var i = 0;i < aData.length ; i++){
				if('name' == aData[i].split('=')[0]){
					name = aData[i].split('=')[1];
				}
			}
			$("#p").val(name);
		}
	});
</script>
<body>
	value:<input id='p' type='text' name='name'/>
</body>

三、对比和建议

1openlocation的区别在于open在新页面打开,而location是将原页面覆盖后打开,实际开发中可根据需要进行选择。

2、若传递过去的参数只需要在新的页面对应位置显示,建议使用EL表达式进行接收,并且参数复制的时候,进行判断,防止页面出现nullundefined

3post方式传参在js中的接收,需要借助其他技术,一般不建议使用

4、大量数据的传递,建议使用post方式,防止url过大浏览器报错。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值