现在大家都用Spring那一套东西了,JSP很少使用了,所以也是被人问到了这个问题,记录一下。

request.getParameter取得Web客户端(jsp)到web服务端的http请求数据(get/post),只能是string类型的,而且HttpServletRequest没有对应的setParameter()方法。

如利用href(url)和form请求服务器时,表单数据通过parameter传递到服务器,且只能为字符串。
当两个web组件为链接关系时,被链接组件通过getParameter来获取请求参数。

request.getAttribute():当两个web组件为转发关系时,通过getAttribute()和setAttribute()来共享request范围内的数据。attrubute中的数据是Object类型的,通过attribute传递的数据只会存在于web容器内部,仅仅是请求处理阶段。

request.setAttribute是服务器把这个对象放在该页面对应的一块内存中,当发生服务器转发时,会把这块内存拷到另一页面对应的内存中,这样getAttribute就可以取到值,session也一样,只是对象在内存的生命周期不一样。

总结:request.getAttribute()方法返回request范围内存在的对象,request.getParameter()获取http请求提交过来的数据。
一般的Web应用,基本上是post方式的传递,用getParameter取值。对于自己控制的,可以通过request.setAttribute和getAttribute实现值的传递。

对于应用struts的,getAttribute用的多一点,其他的基本用getParameter,一个可以传对象,一个只能传字符串。

最后修改:2023 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏