1、request:用于处理HTTP请求中的各项参数。
常用方法:
1.1) request.getParameter("参数") 获取传递的参数的时候,如果指定的参数不存在,将返回null;如果指定了参数名,没有指点参数值,返回空的字符串“”;
注意 : getParameter()编码乱码
String str = new String(request.getParameter("name").getBytes("IOS-8859-1"),"utf-8");
1.2)request.setAttribute("String name","Object object") 将数据报存在request的范围内的变量中
request.getAttribute("String name") 获取request的范围内的变量值(name在request范围内有效)
1.3)cookie:一小段文本信息,在网络服务器上生成,并发给浏览器。通过cookie可以标识用户的身份,记录用户名和密码,跟踪重复用户等。浏览器以key--value的形式,保存在客户机的某个指定目录中。
方法:request.getCookies()可以获得所有的cookie对象集合,通过getName()可以获取到指定名称的cookie;通过getValue()方法可以获取到cookie对象的值,将cookie发送到客户端,需要response.addCookie("name","value");
注意:cookie中如果保存的是中文信息,需要调用java.net.URLEncoder类的encode()方法将要保存到cookie中的信息进行编码,在读取cookie内容时,还要用java.net.URLDecoder类中的decode()方法进行解码。
1.4)request可以获取客户端的相关信息
getHeader(String name) 、getMethod() 、getProtocol()、getRequestURI()、getRequestURL、getRealPath等
1.5)显示国际化信息
浏览器可以通过request.getHeader("accept-language")获取文件的accept-language信息
通过request.getLocale()和request.getLocales()可以获取它使用的本地语言。
信息属于java.util.Local类型。(java.util.Locale类型封装了一个国家和一个国家所使用一种语言)
如:(java.util.Locale)(request.getLocal()).equals(java.util.Locale.US)
2、response对象:用于响应客户请求,向用户输出信息。
处理HTTP文件头,常用的是禁用缓存、设置页面自动刷新和定时跳转 页面;
2.1)禁用缓存:默认情况下,网页是有缓存现象,当一个浏览器再次访问相关网页时,首先判断改网页有没有变化,如果没有,则直接显示缓存中的内容,可以提高网页显示的速度。
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
2.2)设置页面自动刷新
response.setHeader("refresh","10");
2.3)设置跳转网页(5秒后跳转)
response.setHeader("refresh","5;URL=login.jsp");
2.4)设置输出缓冲
通常情况下,为了增强用户体验,一般在网页上设置缓冲区,服务器先将内容输出到一个缓冲区,然后在写入客户端。(缓冲区:被定义为暂时存放信息的一块的内容。)
写入客户端的时机:1)jsp信息全部写入缓冲区。2)缓冲区满了。3)调用out对象中的flush()方法或者response中的flushBuffer()方法。
相关设置方法:response.flushBuffer() 强制将缓冲区中的内容输除到客户端
response.getBufferSize() 获取响应所使用的缓冲区的大小,如果没有缓冲区返回0
response.setBufferSize(int size) 设置缓冲的大小
response.reset() 清楚缓冲区的内容,同时清楚状态码和报头
isCommitted() 检测服务器端是否已经把数据写入客户端
3、session对象
由于HTTP协议天生无状态,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。session的出现是为了弥补这一缺陷。
session可以在应用程序的web页面间进行跳转,保存用户的状态,使整个用户会话一直存在,直至关闭浏览器。如果长时间不向服务发送请求,session会自动消失;(生命周期:用户最后一次请求服务器开始,自动销毁或者手动销毁终止);
方法:HttpSession session = request.getSession(true);创建session
session.setAttribute(String name,Object obj);保存session信息
session.getAttribute(String name)获取session信息
session.remove(String name) 移除session对象
session.invalidate() 销毁session对象
4、application对象
application对象用于保存所有应用程序的共有的数据;服务器启动时创建,服务器关闭时销毁;
实例:通过配置web.xml中的<context-param>标记配置应用程序的初始化参数;
配置连接mysql数据中的url参数:
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/db_datebase</param-value>
</context-param>
application提供两个访问应用程序初始化参数的方法:
application.getInitParameter(String name)方法
application.getAttributeNames()方法,返回web.xml中的所有初始化参数
其余常用方法:getAttributeName(String name)、setAttribute(String key,Object obj),removeAttribute(String name)
5、out对象
见名知义,out是一个输出对象,它可以对缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。数据输出完毕后,要及时关闭输出流。
主要应用是向客户端输出信息,在输出的非字符串时候,会自动转换为字符串输出。
方法:print() println()
管理缓冲区:如果用clear()方法,响应提交了,会产生IOException异常
如果用clearBuffer()方法,即使内容提交了,也没关系
其余方法:fluse()刷新流,isAutoFlush()检测当前缓冲区已满时是否自动清空,还是抛出异常,getBufferSize()获得缓冲区大小;
6、pageContext对象
它可以获取JSP页面的request、response、session、application、exception等对象;pageContext对象创建和初始化都是由容器来完成;
原理:在启动服务器的时候,jsp页面会被编译为.java文件,在这个文件里面会有pageContext对象
7、config对象
主要用于取的服务器的配置信息,通过pageContext对象的getServletConfig()方法可以获取一个config对象。当一个servlet对象初始化时,容器把某些信息通过config对象传递给这个Servlet.
常用方法:getServletContext()、getServletName()、getInitParameter()、getInitParameterNames()
8、page对象
page对象代表JSP本身,只有在JSP页面中才是合法的。本质上是包含当前Servlet接口引用变量,可以看做this关键字别名
9、exception对象
主要用来处理JSP文件执行错误时发生的所有的异常和错误。只有在page指令中设置isErrorPage=“true”的页面才能使用。