JSP常用的内置对象有request,response,session,application,out.
其中两个重要的request和response对象提供了服务器和浏览器通信方法的控制。
1.request对象(请求对象)
作用:封装用户提交的信息,获取封装信息等
1.1.获取用户提交信息
request.getParameter(String s);//获取提交信息
如果该方法获取是得到空对象会出现NullPointerException异常,处理该异常
String s=request.getParameter("s");
if(s==null){s="";}
1.2.处理汉字信息
(1)对信息重新编码
request将获取的信息重新编码,用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后将这个数组转换成字符串。
String str=request.getParameter("s");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
String str=new String(request.getParameter("s").getBytes("ISO-8859-1"),"utf-8");
(2)request设置编码
request在获取信息之前使用setCharacterEncoding()方法将自己的编码设置成utf-8
request.setCharacterEncoding("utf-8");
1.3常用方法
(1)getProtocol()获取用户向服务器提交信息所使用的通信协议,比如http/1.1
(2)getServletPath()获取用户请求的JSP页面文件的目录
(3)getContextPath()获取用户请求的当前Web服务目录
(4)getContentLength()获取用户提交的整个信息的长度
(5)getMethod()获取用户提交信息的方式,比如post或get
(6)getHeader(String s)获取HTTP头文件中由参数s指定的头名字的值。s可取值:accept,accept-language,content-type,accept-encoding,user-agent,host,content-length,connection,cookie等。
(7)getHeaderNames()获取头名字的一个枚举
(8)getHeaders(String s)获取头文件中指定头名字的全部值得一个枚举
(9)getRemoteAddr()获取用户的IP地址
(10)getServertName()获取服务器的名称
(11)getRemoteHost()获取用户机的名称(如果不能获取就获取IP地址)
(12)getServerPost()获取服务器的端口号
(13)getParmaeterNames()获取用户提交的信息体部分中name参数值的一个枚举
1.4作用域内管理属性
在进行请求转发操作时,把一些数据带到转发后的页面处理。这时,就可以使用request对象的setAttribute()方法将数据设置在request范围内存取。在request作用域中,设置转发数据的方法使用格式如下:request.setAttribute("key",value);
参数key为String类型的键名。在转发后的页面取数据时,通过这个键名来获取数据;参数value为Object类型的键值,代表需要保存在request范围内的数据。在requet作用域中,获取转发数据的方法使用格式如下:
Object object=request.getAttribute("name");
1.5获取Cookie
request对象中的getCookies()方法获取Cookie中的数据,
格式: Cookie[] cookie= request.getCookies();
该方法返回值是Cookie数组。
2.response对象(响应对象)
作用:对用户的请求做出动态响应,向用户端发送数据
2.1动态响应contentType属性
使用setContentType(String s)来改变contentType的属性
2.2页面重定向
在某些情况下响应用户时,需要将用户重新引导至另外一个页面,可以使用sendRedirect(URL url)方法实现。
JSP页面还可以使用response对象中的sendError()方法指明一个错误状态,该方法接受一个错误及一条可选的错误信息。该信息将在内容主体上返回给客户。
例如: response.sendError(500,”请求页面存在错误”);
上两个方法都中止当前的请求和响应。
response对象中用于重定向的方法如下:
sendError(int number):使用指定的状态码向客户发送错误响应。
sendError(int number,String msg):使用指定的状态码和描述性消息向客户发送错误响应。
sendRedirect(String location):指定的重定向位置URL并向客户发送重定向响应,可以使用相对URL。
response状态码
1xx:主要是实验性质的
2xx:用来表示请求成功
3xx:用来表明在请求之前应采取进一步的行动
4xx:当浏览器给出无法满足的请求时,返回该状态代码
5xx:用来表示服务器出现问题
2.3缓冲区输出
缓冲可以有效地在服务器与客户之间传输内容。
HttpServletResponse对象为支持jspWriter对象而启用了缓冲区配置。response对象可以为JSP页面设置缓冲区容量,检测缓冲区的状态。
response对象中用于相应缓冲的方法如下:
flushBuffer():强制把缓冲区中内容发送给客户。
getBufferSize():返回响应所使用的实际缓冲区大小,如果没使用缓冲区,则该方法返回0。
setBufferSize(int size):为响应的主体设置首选的缓冲区大小。
boolean isCommitted():表示响应是否已经提交,提交的响应已经写入状态码。
reset():清除缓冲区存在的任何数据,同时清除状态码。
3.session对象(会话对象)
HTTP是一种无状态协议,一个用户向服务器发起请求,然后服务器返回响应,在服务器端部保留连接的有关信息。
作用:记录有关连接的信息
3.1创建与获取客户端的session
session.setAttribute(String key ,Object obj)
将Object指定的对象obj添加到session对象中,如果添加对象的关键字相同,则先添加的对象被清除。
session.getAttibue(String key)
获取关键字是key的对象。由于任何对象都可以添加到session对象中,取回对象时应强制转化为原来的类型。
java.util.Enumeration getAttributeNames()
获取在session中所有对象的名称,该方法返回一个枚举类型的对象
3.2移除删除session对象
removeAttribute()移除相应的对象移除,语法如下:
void removeAttribute(java.lang.String name)
参数name为String类型的值,代表移除的对象的名称。
invalidate()方法删除已经保存到session中所有对象。invalidate()方法的语法如下:
void invalidate()
3.3超时管理
session.getLastAccessedTime()获取客户端最近访问服务器端的保存时间
session.getMaxInactiveInterval()获取客户端停止访问服务器端的保存时间
session.setMaxInactiveInterval(int value)设置客户端停止时session在服务器端的保存时间
3.4其他方法
session.getId() 获取session对象的编号。
session.getCreationTime() session的创建时间。
session.getLastAccessedTime() 最近请求的时间。
session.getMaxInactiveInterval() 两次请求间隔多长时间此session对象被取消。
session.isNew() 是否是新创建的session对象。
4.application对象(多客户端共享对象)
作用:保存所有应用系统中的公共数据,web服务器启动并自动创建application对象后,只要没有关闭服务器,appliaction对象一直存在,所有用户可以共享appliaction对象。
4.1常用方法
setAttribute(String key, Object obj) 将Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引
getAttribute(String name) 获取指定的属性值。
removeAttribute(String name) 删除指定Application的值。
getAttributeNames()获取一个包含所有可用属性名的枚举。 getContext(String uripath) 获取指定资源的application对象
getResource(String path)获取指定资源(文件及目录)URL路径
getResourceAsStream(String path) 获取指定资源的输入流
getServlet(String name) 返回指定的Servlet。
log(String msg) 把指定消息写入Servlet的日志文件。
getRealPath(".") 返回文件的当前路径。
getRealPath("/") 返回服务器的主目录。
5.out对象(输出对象)
作用:向web浏览器内输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值是8KB。
5.1常用方法
print()/println()输出各种类型数据。
clearBuffer()清除缓冲区的数据,并将数据写入客户端。
clear()清除缓冲区的当前内容,但不将数据写入客户端。
flush()输出缓冲区中的数据。
newLine()输出一个换行符号。
close()关闭输出流。
6.page对象(页面对象)
6.1常用方法
getClass()获取page对象的类。
hashCode()获取page对象的hash码。
equals(Object obj)判断page对象是否与参数中的obj相等
copy(Object obj)把此page对象复制到指定的Object对象中
clone()克隆当前的page对象
toString()把page对象转换成String类型的对象
7.pageContext对象(页面上下文对象)
作用:取得任何范围的参数,通过pageContext对象可以获取JSP页面的out、request、response、session、application等对象,或者可以重新定向客户的请求等。
7.1常用方法
setAttribute(String name, Object attribute) :设置默认页面范围或特定对象范围之中的已命名对象。
getAttribute(String name[,int scope] ):获取name对象的属性,可选参数scope表示在特定范围内。
removeAttribute(String name [,int scope]):删除指定范围内的某个属性。
forward(String relativeUrlPath):重定向到其它的页面。
include(String relativeUrlPath):在当前位置包含另一文件。
release():释放pageContext对象所占用的资源。
getServletContext():获取当前页的ServletContext对象。
getException():获取当前页的Exception对象。
8.config对象(配置对象)
作用:取得服务器的配置信息。config对象被封装为javax.servletConfig接口,通过pageContext.getServletConfig()方法可以获取一个config对象。
8.1常用方法
getServletContext()获取当前的Servlet上下文。
getInitParameter(String name)获取指定的初始参数的值。
getInitParameterNames()获取所有的初始参数的值。
getServletName()获取当前的Servlet名称。
8.2获取初始化参数
1)、在web.xml文件中配置初始化参数:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>sanyang</servlet-name> <jsp-file>/index.jsp</jsp-file> <init-param> <!--设置初始化参数--> <param-name>email</param-name> <param-value>wy9wy163@163.com</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>sanyang</servlet-name> <url-pattern>/index.jsp</url-pattern> </servlet-mapping> </web-app>
2)、在JSP页面中通过config对象中的getInitParameter()方法获取在web.xml文件中初始化的参数,程序代码如下:
<%@ page contentType="text/html; charset=gb2312"%> <body> <center> 邮箱地址:<%=config.getInitParameter("email")%> </center> </body>
9.exception对象(异常对象)
9.1错误机制
exception异常对象指的是web应用程序所能够识别并能够处理的问题。在Java语言中,通过“try/catch”的关键在来处理异常信息情况,如果在JSP页面中出现没有捕捉到的异常信息,那么系统会自动生成exception对象,并把这个对象传送到page指令元素中设定的错误页面中,然后在错误提示页面中处理相应的exception对象。
Exexception对象只能在错误页面中才可以使用,并在页面指令元素里存在isErrorPage=true的页面。
9.2常用方法
getMessage()获得当前的错误信息
getLocalizedMessage()本地化语言的异常错误
printStackTrace()以标准错误的形式输出一个错误和错误的堆载跟踪
fillInStackTrace()重写异常的执行栈轨迹
toString()关于异常错误的简单信息描述
9.3设置错误指定页面
首先,建立一个自定义的错误页面“error.jsp”,即在该页面的开始部分<%@ page%>标识符中添加代码: <%@ page isErrorPage=”true”%>
然后,将其他页面指向该错误页面。在<%@page%>标识符中添加代码: <%@ page errorPage=”error.jsp”%>