JSP学习笔记(3)-JSP内置对象

有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这些对象就是JSP的内置对象。
  JSP常用的内置对象有request,response,session,application,out.
  其中两个重要的request和response对象提供了服务器和浏览器通信方法的控制。
JSP学习笔记(3)-JSP内置对象

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”%>

上一篇:Web 开发人员必备的随机 JSON 数据生成工具


下一篇:Zookeeper(四)Hadoop HA高可用集群搭建