getParameter()和getAttribute()的区别

getParameter() getAttribute()
返回字符串 返回任意类型(可以是对象类型)
获取的是客户端设置的数据 获取的是服务器设置的数据
HttpServletRequest类只有getParameter()方法,服务器端不能添加参数,只能分析request页面的文本,取得设在表单或url的值。 HttpServletRequest类有setAttribute()【将值放入到request对象内存中】和getAttribute()【服务器重定向到其他页面时获取对应值,达到一次请求多个页面共享对象】
从Web客户端传到Web服务器端,代表HTTP请求数据 传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享
获取POST/GET传递的参数值,读取提交的表单中的值 用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用 用于服务器端重定向时,即在sevlet中使用了forward函数,或struts中使用了mapping.findForward。getAttribute只能收到程序用setAttribute传过来的值。

两个Web组件之间为链接关系时:被链接的组件通过getParameter()方法来获得请求参数。
例:a.jsp和b.jsp为链接关系,a.jsp向b.jsp传递当前的用户名字

a.jsp使用get和post方式发送请求

<!--get方式,通过url连接键值对-->
	<a href="authenticate.jsp?username=weiqin">authenticate.jsp </a> 
<!--post方式,通过name传递-->
	<form name="form1" method="post" action="authenticate.jsp"> 
	  	姓名:<input type="text" name="username"> 
		<input type="submit" name="Submit" value="提交"> 
	</form> 

b.jsp中通过request.getParameter(“username”)方法来获得请求参数username

<!--获得Form元素,默认字符编码为ISO-8859-1,在执行操作之前,设置request的编码格式-->
<% 
	request.setCharacterEncoding("utf-8");
	String username=request.getParameter("username"); 
%> 

getParameter()和getAttribute()的区别
当两个Web组件之间为转发关系时:通过getAttribute()方法来转共享request范围内的数据。
例:a.jsp和b.jsp为转发关系,a.jsp向b.jsp传递当前的用户名字

a.jsp调用setAttribute()方法:

<% 
	String username=request.getParameter("username"); 
	request.setAttribute("username",username); 
%> 
<jsp:forward page="b.jsp" /> 

b.jsp中通过getAttribute()方法获得用户名字

<% String username=(String)request.getAttribute("username"); %> 
b: <%=username %> 

getParameter()和getAttribute()的区别

java自定义的Parameter的概念。

getParameter()定义在ServletRequest上,而不是HttpServletRequest上。
getParameter()获得的是:querystring【键值对形式在url地址上连接值】和body【用x-www-form-encoded编码的】的key/value对的并集。如果这些key有重复(比如url里写a=1,body里写a=2),使用getParameterValues既可以返回一个列表(a=[1,2])。如果body是其他格式,如multipart/form-data, getParameter就什么也拿不到,必须用其他的可以parse form data格式的库来做。
HttpServletRequest读取body的通用方法是从inputstream里直接读。但是如果body是x-www-form-data格式,并且开发者先调用了getParameter,底层的实现实际上是从request inputstream去读取所有数据并且解析。也就是说,当第一次调用getParameter后,开发者如果自己再去读取inputstream,就直接会遇到EOF。

getParameter()和getAttribute()的区别getParameter()和getAttribute()的区别 是草莓味的啊 发布了25 篇原创文章 · 获赞 2 · 访问量 2138 私信 关注
上一篇:spring security 获取当前登录用户


下一篇:VMWare 16网络桥接模式克隆Ubuntu 20.04后IP地址相同