Java开发必备技能——JSP篇:JSP内置对象详细介绍以及重点方法讲解 附部分实例
认识内置对象
JSP内置对象又称JSP隐私对象、预定义变量,是指在JSP页面中内置的不需要定义就可以在网页中直接使用的对象。
定义内置对象原因
有些内置对象能够存储参数,有些能够提高提供输出,还有些能提供其他功能,JSP程序员使用这些内置对象的频率比较高,为了提高程序员的开发效率,JSP规范预定了内置对象。
9种内置对象
(1)out 对象:负责管理对客户端的输出。
(2)request 对象:负责得到客户端的请求信息。
(3)response 对象:负责向客户端发出响应。
(4)session 对象:负责保存同一客户端一次会话过程中的一些信息。
(5)application 对象:表示整个应用的环境信息。
(6)exception 对象:表示页面上发生的异常,可以通过它获得页面异常信息。
(7)page 对象:表示的是当前JSP页面本身,就像Java类定义中的this一样。
(8)pageContext 对象:表示的是此JSP的上下文。
(9)config 对象:表示此JSP的ServletConfig。
高频对象详细讲解
1、out对象
out对象是javax.servlet.jsp.JspWriter 类的实例
主要作用如下:
(1)用来向客户端输出各种数据类型的内容。
<!--主要方法-->
out.print() <!--输出完毕后不换行-->
out.println() <!--输出完毕后会结束当前行,下一个输出语句将会在下一行开始输出-->
注:在输出中换行,在页面上并不会换行。在页面上换行应该打印字符串<br>
(2)对应用服务器上的输出缓冲区进行管理。
<!--主要方法-->
out.close()<!--关闭输出流,从而强制终止当前页面的剩余部分向浏览器输出-->
out.clearBuffer()<!--清除缓冲区里的数据,并且把数据写到客户端去-->
out.clear()<!--清除缓冲区里的数据,但不把数据写到客户端去-->
out.getRemaining()<!--获取缓冲区中没有被占用的空间的大小-->
out.flush()<!--输出缓冲区的数据,后将缓冲区的数据清除-->
out.getBufferSize()<!--获得缓冲区的大小-->
注:out管理缓冲区使用得比较少,因为通常使用服务器端默认的设置,而不需要手动管理。
2、request对象
request对象是javax.servlet.http.HttpServletRequest 类的实例。request代表了客户端的请求信息,主要是用来获取客户端的参数和流。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
主要方法如下:
<html>
<body>
提交方式:<%=request.getMethod() %><br>
请求的URL地址:<%=request.getRequestURI() %><br>
协议名称:<%=request.getProtocol() %><br>
客户端请求服务器文件的路径:<%=request.getServletPath() %><br>
URL的查询部分:<%=request.getQueryString() %><br>
服务器的名称:<%=request.getServerName() %><br>
服务器端口号:<%=request.getServerPort() %><br>
远程客户端的IP地址:<%=request.getRemoteAddr() %><br>
</body>
</html>
3、response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。response和request是一组相对应的内置对象,response可以理解为客户端的响应,request可以理解为客户端的请求。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
主要方法如下:
<!--重定向:跳转到另一个页面-->
<%
response.sendRedirect(目标页面路径);
%>
注:重定向方法主要有两种,除了response.sendRedirect()之外还有JSP动作指令。
<jsp:forward page = ""></jsp:forward>
详细对比请看 JSP重定向方法详细对比
4、session对象
session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
JSP中的Session是跨页面保持的,在访问网站时服务器端已经分配了一个session对象给客户使用,对于同一个用户,不管在哪个页面,用户使用的都是同一个session,session对象用来跟踪在各个客户端请求间的会话。
以下以使用session开发购物车为例讲解session的 API:
<%
常用API:
session.setAttribute("String name","Object obj");<!--通过该函数可以将一个对象放入购物车-->
<!--提醒:如果两次调用“setAttribute("String name","Object obj");”并且name(自己起的标记)相同,那么后面放进去的内容将会覆盖之前放入的内容-->
session.getAttribute(String naem);<!--从购物车取出与name相对应的内容,因为返回的内容是Object类型,所以从session中取出时还必须进行强制转换-->
其他API:
移除session中的内容:session.removeAttribute("name");
移除session中的全部内容:session.invalidate();
预防session内容丢失
获取sessionId:session.getId();
利用session保存登录信息(一次登录可执行多次操作)
%>
购物车实例完整代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<body>
<%
ArrayList books = new ArrayList();
books.add("三国演义");
books.add("西游记");
books.add("水浒传");
session.setAttribute("books",books);
%>
<a href = "cart3_2.jsp">查看购物车</a>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<body>
购物车中的内容为:
<hr>
<%
ArrayList books = (ArrayList)session.getAttribute("books");
for(int i = 0;i<books.size();i++){
String book = (String)books.get(i);
out.println(book+"<br>");
}
%>
</body>
</html>
5、application对象
application对象直接包装了servlet的Servlet Context类的对象,是javax.servlet.ServletContext 类的实例。
这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
对于一个Web容器而言,所有的用户共同使用一个application对象。
通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
主要API有以下几个:
<%
将内容放入application:application.setAttribute("String name","Object obj");
读取application中的内容:application.getAttribute("name");
将内容从application中移除:application.removeAttribute("name");
%>
其他对象
6、exception对象
exception 对象是java.lang.Exception类的对象,包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。
7、page对象
page对象是java.lang.Object类的对象,可以使用Object类的方法。page对象是指向当前JSP程序本身的对象,有点像类中的this。
page对象在JSP程序中的应用不是很广。
8、config对象
config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。
这个对象允许开发者访问Servlet或者JSP引擎的服务器的有关信息以及初始化参数,比如文件路径等。该对象使用较少。
以下是config对象的使用方法,不是很重要,所以不常用:
config.getServletName();
9、pageContext对象
pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。pageContext对象提供了对JSP页面中所有对象及命名空间的访问,pageContext对象的方法可以访问除本身外的8个JSP内部对象,还可以直接访问绑定在appliance对象、page对象、request对象、session对象上的 Java 对象。该对象使用较少。
以上是本篇文章的全部内容,涵盖了对JSP内置对象的详细介绍以及部分实例介绍,祝你阅读愉快~