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

JSP——九大内置对象

2017-12-12 17:41 204 查看
部分转自:http://blog.csdn.net/icarus_wang/article/details/51107470
http://blog.csdn.net/icarus_wang/article/details/51107771 http://blog.csdn.net/icarus_wang/article/details/51108267
部分摘抄于:刘中兵.开发者突击:JavaWeb主流框架整合开发(J2EE+Struts+Hibernate+Spring)(第2版)



   JSP中一共预先定义了9个这样的对象,分别为:

Request:请求对象;

Response:响应对象;

Session:会话对象;

Application:应用程序对象;

Out:输出对象;

Config:配置对象;

Page:页面对象;

PageContext:页面上下文对象;

Exception:例外对象。

 
 
 
(一)Request:请求对象
    该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存发到一个字节数组中,然后再将这个数组转化为字符串对象即可。
 
StringtextContent=request.getParameter(“boy”);
Byteb[]=textContent.getBytes(“ISO-8859-1”);
textContent=newString(b);

     Request常用的方法如下:

getParameter(StringstrTextName):获取表单提交的信息。

例如:StringstrName=request.getParameter("name");

getProtocol():获取客户使用的协议。

例如:StringstrProtocol=request.getProtocol();

getServletPath():获取客户提交信息的页面.

例如:StringstrServlet=request.getServletPath();

getMethod():获取客户提交信息的方式。

getHeader():获取HTTP头文件中的accept、accept-encoding和Host的值。例如:StringstrHeade=request.getHeader("accept");

getRermoteAddr():获取客户的IP地址。

getRemoteHost():获取客户机的名称。

getServerName():获取服务器名称。

getServerPort():获取服务器的端口号。

getParameterNames():获取客户端提交的所有参数的名字。

isUserInRole():判断认证后的用户是否属于某一成员组

    其余方法:

getAttribute():获取指定属性的值,如该属性值不存在返回Null

getAttributeNames():获取所有属性名的集合

getCookies():获取所有Cookie对象

getCharacterEncoding():获取请求的字符编码方式

getContentLength():返回请求正文的长度,如不确定返回-1

getHeaders():获取指定名字报头的所有值,一个枚举

getHeaderNames():获取所有报头的名字,一个枚举

getInputStream():返回请求输入流,获取请求中的数据

getParameterValues:获取指定名字参数的所有值

getQueryString():获取以get方法向服务器传送的查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getSession():获取和请求相关的会话

removeAttribute():删除请求中的一个属性

setAttribute():设置指定名字参数值

    request对象演示,完成一个简单的用户注册信息界面,将注册信息发送到欢迎界面上:
    用户注册界面表单设置:

<form action="do_register.jsp" method="post">
    用户名:
    <input type="text" name="userName"><br>
    技能:
    <input type="checkbox" name="skills" value="java">java
    <input type="checkbox" name="skills" value="python">python
    <input type="checkbox" name="skills" value="ruby">ruby
    <input type="checkbox" name="skills" value="golang">golang
    <br>
    <input type="submit" value="提交">
    <input type="reset" value="重置">
</form>


   用户注册信息处理界面使用getParameter方法将用户的表单信息提取出来
Stringname=request.getParameter("userName");
String[]skillArr=request.getParameterValues("skills");
//将skillArr数组转换成字符串:
Stringskills="";
if(skillArr!=null&&skillArr.length>0){
    for (String skill:skillArr
         ) {
        skills=skills+skill+" ";
    }
}
//将数据使用setAttribute保存起来
request.setAttribute("userName",name);
request.setAttribute("skills",skills);
//使用jsp的forword指令将页面跳转到welcome.jsp
<jsp:forwardpage="welcome.jsp"></jsp:forward>

    setAttribute和getAttribute用于在web组件之间共享信息。getparameter方法用于接收服务器通过set和post方法传输的数据
注意没有setparameter方法
    welcome.jsp页面配置:
 

<html>
<head>
<title>技能展示界面</title>
</head>
<body>
信息展示界面:<br><br>
<%--<%=%>这是表达式<%%>这是jsp程序处理--%>
姓名:<%=request.getAttribute("userName")%><br>
技能:<%=request.getAttribute("skills")%>
</body>
</html>


(二)Response:响应对象
   response对象主要用于对客户端的请求进行回应。以及处理http的连接信息,例如设置http文件头,设置cookie对象等。
    response对象方法:

addCookie:添加一个Cookie对象

addHeader:添加Http文件指定名字头信息

containsHeader:判断指定名字Http文件头信息是否存在

encodeURL:使用sessionid封装URL

flushBuffer:强制把当前缓冲区内容发送到客户端

getBufferSize:返回缓冲区大小

getOutputStream:返回到客户端的输出流对象

sendError:向客户端发送错误信息

sendRedirect:把响应发送到另一个位置进行处理。在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。

例如:response.sendRedirect(“index.jsp”);

setContentType:设置响应的MIME类型,动态响应contentType属性当一个用户访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性时text/html,那么JSP引擎将按照这个属性值做出反应。如果要动态改变这换个属性值来响应客户,就需要使用Response对象的setContentType(Strings)方法来改变contentType的属性值。

格式:response.setContentType(Strings);参数s可取text/html,application/x-msexcel,application/msword等。

setHeader:设置指定名字的Http文件头信息

(三)Session:会话对象

Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
Session对象的常用方法

Public String getId():获取Session对象编号。

Public void setAttribute(String keyObject obj):将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。

Public Object getAttribute(Stringkey):获取Session对象中含有关键字的对象。

Public Boolean isNew():判断是否是一个新的客户。

getAttributeNames:获取session中全部属性名字,一个枚举

getCreationTime:返回session的创建时间

getLastAccessedTime:返回最后发送请求的时间

getMaxInactiveInterval:返回session对象的生存时间单位千分之一秒

invalidate:销毁session对象

removeAttribute:删除指定名字的属性

    session对象的应用:
//登陆表单设置:
<form action="do_login.jsp" method="post">
userName:<input type="text" name="userName"><br/>
password:<input type="password" name="password"><br/>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>


   
登陆逻辑处理界面

//使用getParameter获取到用户名和密码:
String userName=request.getParameter("userName");
String password=request.getParameter("password");
//对用户名和密码进行判断:
if (userName!=null&&password!=null){
session.setAttribute("userName",userName);
response.setHeader("refresh","2;URL=welcome.jsp");
}


在欢迎界面使用getAttribute获取当前的用户名:

<%if(session.getAttribute("userName")!=null){%>
<%--getAttribute方法是使用指定的key获取session中的value值。获取到的是一个object对象
在使用的时候需要根据具体的类型进行类型转换。
这里取出的是一个字符串,直接调用会使用他的toString方法,因此不用进行转换--%>
欢迎 <%=session.getAttribute("userName")%>
<a href="logout.jsp">注销</a>
<%}else{%>
请先登陆
<a href="login.jsp">登陆</a>
<%}%>
//判断session对象是否是新创建
<%if (session.isNew()){%>

<br/>
<br/>
欢迎新用户
<%}else{%>
<br/>
<br/>
欢迎老用户
<%}%>


在登出界面里清除session对象信息,并跳转到欢迎界面中去

session.invalidate();//清除掉session对象
response.setHeader("refresh","2;URL=welcome.jsp");


(四)Application:应用程序对象

服务器启动后就产生了这个Application对象,当客户在所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,直到服务器关闭。但是与Session对象不同的是,所有客户的Application对象都是同一个,即所有客户共享这个内置的Application对象。

setAttribute(Stringkey,Objectobj):将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。

getAttribute(Stringkey):获取Application对象中含有关键字的对象。

getInitParameter():返回应用对象中指定名字的初始参数值

getServletInfo():返回Servlet编译器中当前版本信息

setAttribute():设置应用对象中指定名字的属性值

    可以使用application对象来实现页面访问次数记录的功能:
<%
Object obj=application.getAttribute("counter");
if (obj==null){
application.setAttribute("counter",new Integer(1));
out.println("该页面被访问了1次<br/>");
}else {
int countValue=new Integer(obj.toString());
countValue++;
out.println("该页面被访问了"+countValue+"次<br/>");
application.setAttribute("counter",countValue);//java会自动装箱

}
%>


(五)out:输出对象

Out对象是一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。
其常用方法如下:

out.print():输出各种类型数据;

out.newLine():输出一个换行符;

out.close():关闭流。

out.flush():输出缓冲区数据

out.clear():清除缓冲区中数据,但不输出到客户端

out.clearBuffer():清除缓冲区中数据,输出到客户端

out.getBufferSize():获得缓冲区大小

out.getRemaining():获得缓冲区中没有被占用的空间

out.isAutoFlush():是否为自动输出

(六)Config:配置对象
   一般我们使用Config对象来获取一些初始化配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。此外,还可以通过getServletContext()方法取得ServletContext。一个ServletContext对象,它能给出Servlet如何与服务器交互的信息。ServletContext对象是服务器传给这个Servlet的。在ServletConfig接口定义中ServletContext对象是其中的一部分。
getServletContext():返回所执行的Servlet的环境对象
getServletName():返回所执行的Servlet的名字
getInitParameter():返回指定名字的初始参数值
getInitParameterNames():返回该JSP中所有的初始参数名,一个枚举

(七)Page:页面对象

   Page对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。page对象有点类似与java编程中的this指针,他指向了当前jsp页面本身。page对象是java.lang.object类的一个实例。
   page对象拥有一个toString方法,下面是官方定义的方法介绍:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//包名+类名+@+hashcode值

   page对象的方法:

toString():将当前项目的信息打印出来

getClass():返回当前的object类

hashCode():返回page对象的hashCode值

equals():用于比较对象是否与当前对象相同

(八)PageContext:页面上下文对象

   JSP引入了一个名为PageContext的类,通过通过它可以访问所有的jsp内置对象。。pageContext变量存储与当前页面相关联的PageContext对象的值。PageContext类拥有getRequest,getResponse,getOut,getSession等方法。如果需要访问多个与页面相关的对象,传递pageContext要比传递request,response,out等的独立引用更容易。

Forward():重定向到另一页面或Servlet组件

getAttribute():获取某范围中指定名字的属性值

findAttribute():按范围搜索指定名字的属性

removeAttribute():删除某范围中指定名字的属性

setAttribute():设定某范围中指定名字的属性值

getException():返回当前异常对象

getRequest():返回当前请求对象

getResponse():返回当前响应对象

getServletConfig():返回当前页面的ServletConfig对象

getServletContext():返回所有页面共享的ServletContext对象

getSession():返回当前页面的会话对象

(九)Exception:例外对象

   Exception对象代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@pageisErrorPage="true"%>”的JSP文件中使用,这是因为JSP文件运行时产生的错误对象被向外向外抛出,只能被使用了“<%@pageisErrorPage="true"%>”标记从而具有拦截错误对象功能的JSP所拦截。最常用的方法就是getMessage,用以获得错误信息,此外还会用到getLocalizedMessage和printStackTrace。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: