接下来就来解释一下这些常用的内置对象
一 Request:
1 访问请求参数:加个问号? eg: <a href="index.jsp?id=1></a>
获得访问参数: request.getParameter("id") 【其中参数不存在,返回null; 未指定参数值,返回字符串“”】
2 在作用域中管理属性
设置值 request.setAttribute(String name,Object object);
name:变量名(转发后就是通过这个值来获取数据) object:这个指定的值
获取值: request.getAttribute("name");
3 获取cookie
cookie: 指代小段文本信息,在网络服务器上生成,并发送给浏览器
获取其中的集合:getCookie
获取名字: getName();
获取值: getValue()
将一个cookie发送给客户端: 使用response对象的addCookie()
重点:
在想cookie保存信息是,其中包括中文,则需转码 java.net.URLEncoder类的encoder()方法
eg; String user=URLEncoder.encoder(request.getParameter("user",utf-8);
如果要读取则需要解码,调用java.net.URLDecoder类的decode()方法
eg: user=URLDecoder.decode("");
4 获取客户端的信息
getHeader(String name) 获取头信息
getMethod() 获取提交的方法 例如 post get head
5 显示国际化信息
这里的信息属于 java.util,Local
eg:
<% java.util.Locale local=request.getLocal(); String str=""; if(locale.equals(java.util.locale.US)){ str="Hello" } if(locale.equals(java.util.locale.CHINA)){ str="你好" } %>
二 response
1 重定向网页
这里就以此来说明一下重定向和内部转发的一些区别
1、内部跳转的时候实际上是通过服务器端将请求转发到另外的页面或者servlet中,这个时候跳转到的目标页面或者servlet可以获取到请求对象, 也可以获取到请求中的属性和参数。而外部跳转的时候实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服 务器第二次拿到的request对象已经不是第一次请求的request对象了,所以无法获取到第一次请求里的参数和属性。
2、内部跳转的url地址栏不会发生变化,外部跳转url则会发生变化。
3、内部跳转无法跳转到工程以外的jsp或者servlet,外部跳转则可以。
4、内部跳转实现的方法:
request.getRequestDispatcher("XXX.jsp或者servlet").forward(request,?response),
request.getRequestDispatcher("XXX.jsp或者servlet").forward(request,?response),
而外部跳转实现的方法:
response.sendRedirect("XXX.jsp或者servlet")。
2 处理Http文件头
对于我们一般浏览网页的时候,浏览器会先判断这个网页之前是否有缓存,有就直接调用,这样就能提升速度。
但是对于安全性高的一些网页则需设置禁用缓存
(1) 设置禁用缓存:response.setHeader("Cache-control","no-store") response.setDateHeader("Expires",0);
(2) 设置自动刷新 response.setHearder("refresh","10");
(3) 设置定时跳转 resposne.setHeader("refresh","5;URL=login.jsp");
(4) 设置缓冲区:response.setBufferSize(32); //缓冲大小为32KB
三 Session
由于Http协议是无状态的,所以通过Session可以记录这一过程的内容
1 创建及获取客户的会话
创建:session.setAttribute(String name,Object obj);
获取:session.getAttribute(String name);
2 移除会话绑定的对象
移除:session.removeAttribute(String name);
销毁:session.invalidate();
3 会话的超时管理
因为系统设置每次时长是有限制的,一般为20-30min
setMaxInactiveInterval()//设置session的有效时长,以秒为单位
四 Application:
这个内置对象相比于其他的内置对象要长
在各对象的配置可以在 web.xml里的<context-param>来配置
常用方法说明
getInitParameter(String name) : 返回已命名的参数值 //例如可以获取里面的url
getAttributeNames() : 返回已定义的应用程序初始化参数名的枚举
当然还有其他的内置对象就不详解了
例如 Out 中的out.clearBuffer() 清理缓存
还有 config 可以通过 pageContext对象的getServletConfig来获取
page 是指生命周期在当前页面范围内。 request 是指生命周期在一次请求范围内,如GET和POST【其中response也差不多】。 session 是指生命周期在一个会话范围内。 application 是指生命周期在整个WEB应用程序从启动到关闭的范围内。