getParameter(String)和getAttribute()这两个方法都是从request对象中得到参数的方法。但实际上他们之间有着本质的区别。web
1. getParameter()是指客户端和server端之间的数据传递。咱们在从浏览器端发出一个请求到server端时(不管是GET和POST方式),全部的参数都是被包装成了String的形式以后才被传递到server端的。因此,咱们在server端的代码中就能够经过request.getPapameter(String)的方式来取得。浏览器
2. getAttribute()一贯是和setAttribute()一块儿使用的,只有先用setAttribute()设置以后,才可以经过getAttribute()来得到值,它们传递的是Object类型的数据。并且必须在同一个request对象中使用才有效。spa
何谓同一个request呢?例如,在同一个servelet中,同一个Action中(Struts),同一个JSP中等等;或者是同一个request被forward了屡次,那么每个处理这个request对象的web组件都是使用的同一个request对象;或者include的方式也是同样的。orm
从以上分析,这二者之间的区别就很明确了。getParameter()是在数据从客户端到server端以后才有效的,而getAttribute()则是server端内部的事情,只有在server端调用了setAttribute()以后,而且没有redirect,没有到客户端以前,getAttribute()才有效。server
同理,getParameterNames()和getParameterValues(String)跟getParameter(String)是同样的道理。对象