2.6.6 request对象 2. 操作request范围的属性
2. 操作request范围的属性
HttpServletRequest还包含如下两个方法,用于设置和获取request范围的属性。
| 设置获取request作用域的属性 | 描述 |
|---|---|
setAttribute(String attName, Object attValue) |
将attValue设置成request范围的属性。 |
Object getAttribute(String attName) |
获取request范围的属性 |
forward请求是 请求参数 请求属性不会丢失
当forward用户请求时,请求的参数和请求属性都不会丢失。
draw.jsp
看如下JSP页面,这个JSP页面是个简单的表单页,用于提交用户请求。
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
first.jsp
该页面向first.jsp页面请求后,balance参数将被提交到first.jsp页面,下面是first.jsp页面的实现代码。
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
first.jsp页面首先获取请求的取钱数,然后对请求的钱数进行判断。如果请求的钱数小于500,则允许直接取钱;否则将请求转发到second.jsp。转发之前,创建了一个List对象,并将该对象设置成request范围的info属性。
second.jsp
接下来在second.jsp页面中,不仅获取了请求的balance参数,而且还会获取request范围的info属性。second.jsp页面的代码如下:
1 | <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> |
如果页面请求的钱数大于500,请求将被转发到second.jsp页面处理,而且在second.jsp页面中可以获取到balance请求参数值,也可获取到request范围的info属性,这表明:forward用户请求时,请求参数和request范围的属性都不会丢失,即forward后还是原来的请求,并未再次向服务器发送请求。
如果请求取钱的钱数为654,则页面的执行效果如图2.28所示。