Web中Servlet ,request.getAttribute()和request.getParameter()的原理和区别和用法

Servlet作用域从小到大是这样排列的,page,request,session,pageContext。
page只是作用于当前请求的页面
request是一次请求,根据HTTP无状态,所以可以知道每一次请求对象是不同的。
session是一次会话,比如有些网站需要登录后才能查看资源,从登录到你关闭浏览器后,这就是一次会话,session是存在服务端的。还有一种情况,有时你在一个网页上长时间没操作,再操作会让你重新登录,这也是session的问题,服务器那边设置了session失效的时间。
pageContext是在整个Web应用上都是有效的,可以理解为所有的网页,因为这个对象是常常用来共享资源的,也就是用户1提交了一个资源,放到了pageContext作用域中,其它用户也可以看到这个资源。

request.getAttribute():是request时设置的变量的值,
用request.setAttribute(“name”,“您自己的值”);来设置值,
request.getParameter(): 用来提取客户端传过来的参数信息
request.getParameter是用来接受来自get方法或post方法的参数

ok 只能接受java.lang.String 也就是说String hotel_id = request.getParameter("hotel_id"); request.getAttribute 是用来接受来自servlet的变量或Action(其实Action就是特殊的Servlet) 在Action中,request.setAttribute("ret",ret); 只能接受java.lang.Object List ret = (List)request.getAttribute("ret"); 你只用JSP,根本用不到request.getAttribute() request.getAttribute()和request.getParameter()的区别是

request.getAttribute()获得的是对象类型,而request.getParameter()获得的是字符串类型

EL表达式中,param和requestScope的区别

在看param和requestScope之前,不妨先了解下在java下request的情况:

  1. request对象通常用来接收客户端提交到服务端的数据,如:在servlet或者action中可以用request.getParameter()的方法获取获取参数内容;

  2. requestScope通常是在servlet或者action的服务端中通过request.setAttribute()方法把数据放到request对象中供客户端获取,然后客户端获取的方法就是requestScope.getAttribute()。

  3. getParameter:

可以获取URL中传递过来的String参数,如:http://www.baidu.com?username=abc 中的abc;

提示:对于POST/GET提交的表单,在服务器端我们都可以通过request.getParameter获取表单中的值。

当我们在进行一个请求重定向(redirect)的时候,我们可以通过request.setParameter传递参数,如果用request.setAttribute在重定向页面是取不到值的。

(待验证,因为HttpServletRequest中没有setParameter方法。)

  1. getAttribute:

获取的是一个对象(Object)。

当我们进行一个请求转发(forward)的时候,可以使用request.setAttribute传递参数。

  1. requestScope作为El表达式中的使用:

是EL表达式中的一个隐含对象,类似request,如:${requestScope.username} 表示在request域中取得username属性所对应的值,相当于request.getAttribute(“username”)。

  1. param,El表达式中的使用:

${param.username} 可理解为:request.getParameter(“username”);

结论:

${param.name} 等价于 request.getParamter(“name”),这两种方法一般用于服务器从页面或者客户端获取的内容,这些内容都是String的。

${requestScope.name} 等价于 request.getAttribute(“name”),一般是从服务器传递结果到页面,在页面中取出服务器端保存的值!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
request.getAttribute() 和 request.getParameter() 是在 Java Web 开发用来获取客户端请求参数的两个方法,它们的区别如下: 1. request.getAttribute(): - 用于获取服务器端存储在请求的属性值。 - 这些属性通常是在服务器端代码设置的,可以通过 setAttribute() 方法将属性值存储在 request 对象。 - 属性值的作用范围是在同一个请求,即在 forward 或 include 的情况下,多个 Servlet 之间共享属性值。 - 可以通过 request.getAttribute() 方法根据属性名获取属性值。 2. request.getParameter(): - 用于获取客户端请求的参数值。 - 这些参数通常是通过表单提交或者 URL 查询字符串传递到服务器端的。 - 参数值的作用范围是在当前请求,即在当前 Servlet 获取参数值。 - 可以通过 request.getParameter() 方法根据参数名获取参数值。 总结: - request.getAttribute() 用于获取服务器端存储的属性值,而 request.getParameter() 用于获取客户端请求的参数值。 - request.getAttribute() 获取的是在同一请求共享的属性值,而 request.getParameter() 获取的是当前请求的参数值。 - request.getAttribute() 需要在服务器端代码设置属性值,而 request.getParameter() 获取的是客户端传递的参数值。 需要注意的是,request.getParameter() 返回的是字符串类型的参数值,而对于表单的多选框或者多个同名参数,可以使用 request.getParameterValues() 方法来获取多个参数值。而 request.getAttribute() 返回的是 Object 类型的属性值,需要进行类型转换才能使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值