4中属性page、request、session、application;
page,只在一个页面中保存属性,跳转之后无效。
request,只在一次请求中保存,服务器跳转后依然有效。
session,在一次会话范围中,无论任何跳转都可以使用,但是新打开的浏览器无法使用。
application,在真个服务器上保存,所有用户可以使用。
以上4个内置对象都支持下表的属性操作方法。
no. | 方法 | 类型 | 描述 |
1 | public void setAttribute(String name, Object o) | 普通 | 设置属性的名称和内容 |
2 | public Object getAttribute(String name) | 普通 | 根据属性名称取得属性 |
3 | public void removeAttribute(String name) | 普通 | 删除指定的属性 |
page属性范围(pageContext)
<%pageContext.setAttribute("name","fzy"); %>
<%String name=(String)pageContext.getAttribute("name");%>
<%=name%>
request属性范围
注意一点是,通过<jsp:foward page="aa.jsp"/>下个页面可以获得页面设置的属性值。 通过超链接<a herf="aa.jsp">jsp</a> 下个页面不会获得属性值。
request.setAttribute();
request.getAttribute();
session属性范围
通过超链接或者跳转都可以获得属性值。
session.setAttribute();
session.getAttribute();
application属性范围
通过超链接或者跳转都可以获得属性值。
application.setAttribute();
application.getAttribute();
深入研究page属性范围
public voidsetAttribute(String name, Object value , int scope);
NO. | 方法 | 类型 | 描述 |
1 | public static final int PAGE_SCOPE | 常量 | 表示page属性范围,默认 |
2 | public static final int REQUEST_SCOPE | 常量 | 表示request属性范围,默认 |
3 | public static final int SESSION_SCOPE | 常量 | 表示session属性范围,默认 |
4 | public static final int APPLICATION_SCOPE | 常量 | 表示application属性范围,默认 |
<%page.setAttribute("name","fzy" ,PageContext. REQUEST_SCOPE);%>可以实现请求跳转。
request对象
request内置对象是使用最多的一个对象,器主要作用是接受客户端发送而来的请求信息。例如请求的参数,发送的头信息等。
简单介绍一下几个常用的方法。
public String getParameter(String name)接受客户端发来的请求参数。
public String[ ] getParameterValues(String name); 取的客户端发来的一组请求参数内容
public Enumeration getParameterNames(); 取得全部请求参数的名称
public String getRemoteAddr() 得到客户端的IP地址
public Httpsession getSession() 取得当前的session对象
public String getContextPath() 取得上下文资源路径
public Enumeration getHeaderNames()取得全部请求的头信息名称
public String getMethod()取得用户提交的方式。
request.setCharacterEncodint("GBK"): 设置统一编码
在接受参数请求时,单一的参数可以使用getParameter()接受, 而像复选框就需要使用getParameterValues()来接受参数
get和post方法区别
使用get方法提交的内容会在浏览器地址栏进行显示,所以信息长度大小有限制一般是 4-5K左右。post提交的请求不会在地址栏显示,直接显示的是目标地址。
request内置对象还有一个灵活的方法是getParameterNames(),获得所有请求参数的名称,此方法返回的是一个Enumeration,所以需要使用hasMoreElements()方法判断是否有内容以及使用nextElement()方法取出内容。
response对象
response对象主要作用是对客户端请求的回应,将web服务器处理后结果发回给客户端。
response常用的方法有
NO | 方法 | 类型 | 描述 |
1 | public void addCookie(Cookie cookie) | 普通 | 向客户端增加cookie |
2 | public void setHeader( String name, String value) | 普通 | 设置回应的头信息 |
3 | public void sendRedirect( String location) throws IOException | 普通 | 页面跳转 |
通常读者会经常遇到3秒返回首页也是用的refersh。 <%response.setHeader("refresh" ," 3;URL=hello.htm");%>
页面的跳转也可以用 response.sendRedirect("hello.htm");
下面是<jsp:forward page=""/> 和response.sendRedirect(); 两种方法第一种<jsp:forward page=""/>是服务器端跳转,跳转后地址栏的信息不会变化,执行到这段代码就会立即跳转,所以要注意当有操作数据库的时候要等数据库操作操作完在执行跳转。;第二种response.sendRedirect();属于客户端跳转,地址栏信息会变化,当整个代码段都执行完后才跳转。
但是从实际开发来看服务器端跳转要比客户端跳转更常用。