JSP——九大内置对象

部分转自: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-88591进行编码,并将编码存发到一个字节数组中,然后再将这个数组转化为字符串对象即可。

StringtextContent=request.getParameter(“boy”);
Byteb[]=textContent.getBytes(“ISO-8859-1”);
textContent=newString(b);

     Request常用的方法如下:

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

例如:StringstrNamerequest.getParameter("name");

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

例如:StringstrProtocol=request.getProtocol();

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

例如:StringstrServlet=request.getServletPath();

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

  • getHeader():获取HTTP头文件中的acceptaccept-encodingHost的值。例如: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>

    setAttributegetAttribute用于在web组件之间共享信息。getparameter方法用于接收服务器通过setpost方法传输的数据
注意没有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:把响应发送到另一个位置进行处理。在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用ResponsesendRedirect(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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值