您的位置:首页 > Web前端 > JavaScript

JSP内置对象

2017-09-19 00:00 162 查看
在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2.0之后由ServletApi提供的9个内置对象,如下:

内置对象名称相对应的类作用域
requestjavax.servlet.ServletRequestrequest
responsejavax.servlet.ServletResponsepage
pageContextjavax.servlet.pageContextsession
sessionjavax.servlet.HttpSessionpage
applicationjavax.servlet.ServletContextapplication
outjavax.servlet.JspWriterpage
configjavax.servlet.ServletConfigpage
pagejavax.servlet.Objectpage
exceptionjavax.servlet.Throwablepage
第一部分

由此可见,JSP内置对象作用域范围,分别是:page,request,session,application

1)page范围(pageContext):一页中有效,跳转即无效。

(2)request范围:服务器跳转有效,客户端跳转无效。

(3)session范围:跳转有效,新开浏览器无效。

(4)application范围:所有用户有效,重启服务器无效。

这四个对象有3个方法:

(1) void setAttribute(String key,Object o); //设置属性

(2) Object getAttribute(String key); //取得后要向下转型。

(3) void removeAttribute(String key); //删除属性

注意:在getAttribute之后一定要转型!

举例:

pageContext.setAttribute("name","xiazdong"); //只能在单个页面中进行保存

String name = (String)pageContext.getAttribute("name"); //换了一个页面后就无法取得

注意:尽可能在满足功能的前提下,将属性设置的保存范围尽可能的小。这样能够提高性能;

第二部分:

1、介绍request对象:

(1)request.getParameter(String name):取得name元素的值。  取得来源:(1)地址重写(2)表单提交
(2)Enumeration enu = request.getParameterNames():取得全部的参数的名称,通过迭代器遍历。
(3)String[] strs = request.getParameterValues(String name):用于取得比如checkbox的多项选择。
(4)Enumeration enu = request.getHeaderNames():获得全部头信息的名字。
(5)String str = request.getHeader(String name):获得名字为name的头信息的内容。
(6)String str = request.getMethod():获得是post或get.
(7)request.setCharacterEncoding(String ):统一request的编码。 比如服务器的JSP页面设置为GBK,而浏览器为UTF-8,则会出现编码不匹配问题。
(8)request.isUserInRole(String name);  用于用户验证角色
(9)Cookie[] c = request.getCookies():获得全部的cookie。


2、介绍response对象:、

StringgetCharacterEncoding() 返回响应用的是何种字符编码
ServletOutputStreamgetOutputStream() 返回响应的一个二进制输出流
PrintWritergetWriter() 返回可以向客户端输出字符的一个对象
voidsetContentLength(intlen) 设置响应头长度
voidsetContentType(Stringtype) 设置响应的MIME类型
sendRedirect(java.lang.Stringlocation) 重新定向客户端的请求


3、介绍out对象:

out对象常用方法有

clear()清楚缓冲区的内容,clearBuffer()清楚缓冲区的内容同时将数据输出到客户端

getBufferSize()获取缓冲区的大小

最常见的是直接打印输出内容

<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>out object test</title>
</head>
<body>
<!-- 使用out对象输出-->
<%
out.print("Hello World");      //不换行
out.println("Hello World");        //换行
%>
</body>
</html>


4、介绍session对象:

(1)String getId():获得session id。session id类似于Cookie的JSessionId,是服务器自动分配的;

(2)session.setAttribute("",""):设置属性。

(3)session.getCreationTime():获得创建时间。

(4)session.getLastAccessedTime():获得最后访问时间。

(5)session.isNew():这个session是否是新的,即判断session id。

(6)session.invalidate():把session的属性设置全部清空。

5、介绍application对象:

(1)getRealPath(path):获得真实路径。

(2)getContextPath():获得虚拟路径。

(3)getInitParameter(String );

我们可以在web.xml中添加初始化参数:

<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>

6、介绍pageContext对象

表示JSP上下文,可以通过这个实例,取得request\response\session\<jsp:forward>等。

(1)pageContext.forward(String);

(2)pageContext.include(String);

(3)pageContext.getServletConfig();

(4)pageContext.getServletContext();

(5)pageContext.getRequest();

(6)pageContext.geResponse();

(7)pageContext.getSession();

也就是说,只要有了pageContext对象,就能完成一切内置对象的功能;

补充:pageConext设置任意范围的属性(很少使用)

使用函数:pageConext.setAttribute("name","value",int SCOPE); SCOPE 取值范围为PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE,APPLICATION_SCOPE四个,比如设置page范围:

pageConext.setAttribute("name","xiazdong",PageConext.PAGE_SCOPE);

只需要PageContext就能完成全部内置对象的操作;

7、介绍page对象:

page对象是指的是JSP页面的本身,她是Object对象的类,通过page对象可以调用到Servlet类定义的方法,page对象在开发中并不经常用到,这里就不讲解了!

8、介绍config对象:

config对象是ServletConfig类的一个实例,用法参考ServletConfig

9、介绍exception对象:

主要是处理页面异常和错误,实际开发中此对象使用也不多,一般都是调试项目会使用

使用这个对象必须将isErrorPage设置为true

如下

<%@ page contentType="text/html;charset=GB2312" errorPage="exceptionobject.jsp"%>
<html>
<head>
<title>pageContext object test</title>
</head>
<body>
发生错误的位置!<br>
<%
int a=5;
int b=0;
%>
输出结果=<%=(a/b)%>
</body>
</html>

打印错误代码

<%@ page contentType="text/html;charset=GB2312" isErrorPage="true"%>
<%@ page import="java.io.PrintStream"%>
<html>
<head>
<title>exception object test</title>
</head>
<body>
<%=exception.getMessage() %><br>
<%
exception.printStackTrace(new java.io.PrintWriter(out));
%>
</body>
</html>


综上总结在实际开发中,我们经常使用的是request,response,session,out,这四个!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSP Blog Java EE