request的getParameter()和getAttribute()+url传中文

两个都是通过request对象获取参数的方法,两者获取参数的作用域是不同的。

1.getParameter(“参数名称”)

request.getParameter()是获取一个表单或者是跳转路径所包含的参数值,
返回结果为String字符串,当表单中包含多个同名参数时,只能获取第一个,如果获取所有的参数值可使用getParameterValues()方法,此方法返回的是一个数组。
此外,getParameter()是没有对应的setParameter()方法的。
声明类为HttpServletRequest。
获取表单的参数

		<form name="form" method="post" action="/index.do"> 
		  用户姓名:<input type="text" name="username" value="张三"> 
		  性别:<input type="text" name="sex" value="男"> 
		  身高1:<input type="text" name="height" value="180"> 
		  身高2:<input type="text" name="height" value="185"> 
		  <input type="submit" name="submit" value="提交"> 
		</form> 
		String username = getParameter("username"); ------------  张三
		String height= getParameter("height"); ------------  180
		
		String[] height=request.getParameterValues("height");
		System.out.println(java.util.Arrays.toString(height)); ----------- [180,185]

获取url的参数

		127.0.0.1:8080/test/index.do?username=zhangsan&sex=boy
		String username = getParameter("username"); -----------  zhangsan
		String height= getParameter("height"); ----------  空(url未包含此参数)

2.getAttribute(“参数名称”)

request.getAttribute()是获取session作用域中的参数;
返回结果为符合规范的任意类型的数据,String、Map、List均可。
request.getAttribute()获取的值可以通过request.setAttribute(“参数名称”,参数)来设置的。
声明类为HttpServletRequest。

		String username = "张三";
		request.setAttribute("name",username);
		String name = request.getAttribute("name");  ----------  张三
拓展

当获取url的值中包含中文时,需要对url进行转码,获取到值之后,再对获取的值进行转码utf-8即可,转码方式如下。
url路径传中文参数

127.0.0.1:8080/test/index.do?username=encodeURI(encodeURI("张三"))&sex=encodeURI(encodeURI("男"))
String username = java.net.URLDecoder.decode(username, "UTF-8"); -----------张三
String sex= java.net.URLDecoder.decode(sex, "UTF-8"); -----------男

在最后解释下,当谷歌搜索框搜索时会出现%20的情况就是输入内容中包含空格,encode转码后成为%20了,涨姿势了吧。
在这里插入图片描述

<script type="text/javascript">
	document.write(encodeURI("百 度"); ----------------  百%20度
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值