参数传递
通过url?key=value或者request.setParameter(key, valye)的方式只能传递字符串;
但是有的时候,我们在页面之间需要传递对象,这就要用到setAttribute(key, value)。如下:
对象传递失效? 不是,由于作用域的问题导致
一、内置对象(隐式对象)的作用域。
1.1、JSP九大隐式对象
1.2、在不同的页面中传递对象, 可以通过setAttribute(key, value)设置。通过getAttribute(key)获取。
1.2.1、可以传递对象的内置对象有:
- PageContext
- request(HttpRequestServlet)
- Session(HttpSession)
- Application(ServletContext)
1.3、pageContext
pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。
这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。
这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。
其中一个重要的方法就是removeArribute(),它可接受一个或两个参数。比如,pageContext.removeArribute(“attrName”)移除四个scope中相关属性,但是下面这种方法只移除特定scope中的相关属性:
pageContext.removeAttribute("attrName", PAGE_SCOPE);
