这里写目录标题
前言
- JSP中9个内置对象
- JavaBean开发技术
九个内置对象
- request
- response
- out
- session
- application
- pageContext
- page
- config
- exception
分类
- JSP内置对象是 Web 容器加载的一组类
- 它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象
- 内置对象的名称是 JSP 的保留字
- JSP 使用Java 定义的内置对象来访问网页的动态内容
输入/输出对象
- 控制页面的输入和输出
- 访问与所有请求和响应有关的数据
- 输入和输出对象包括request、response 和out
request对象
表示客户端对网页的请求
实现javax.servlet.http.HttpServletRequest接口
使用HTTP 协议处理客户端的请求
javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端请求参数都被封装在该对象里。这是一个常用的对象。
常用的方法:
getParameter(String paramNarne) 获得参数的数据getParameterValues(String paramName)获得参数的数据集合
getAttribute(String attributeName) 获得request范围内存在的指定对象
request其他主要的方法:
getCookies():返回客户端的Cookie对象,结果是一个Cookie数组。
getHeader(String name):获得HTTP协议定义的传送文件头信息,例如,request.getHeader(“User-Agent”)含义为:返回客户端浏览器版本号、类型。
getDateHeader():返回一个Long类型的数据,表示客户端发送到服务器的头信息中的时间信息。
getHeaderNames():返回所有request Header的名字,结果集是一个Enumeration(枚举)类的实例。得到名称后就可以使用getHeader、getDateHeader等得到具体的头信息。
getServerPort():获得服务器的端口号。
getServerName():获得服务器的名称。
getRemoteAddr():获得客户端的IP地址。
getRemoteHost():获得客户端的主机名,如果该方法失败,则返回客户端的IP地址。
getProtocol():获得客户端向服务器端传送数据所依据的协议名称。
getMethod():获得客户端向服务器端传送数据的方法。
getServletPath():获得客户端所请求的脚本文件的文件路径。
getCharacterEncoding ():获得请求中的字符编码方式。
getSession(Boolean create):返回和当前客户端请求相关联的HttpSession对象。
getRequestURI():获得发出请求字符串的客户端地址。
getContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,则返回1。
response对象
处理JSP生成的响应
将响应发送给客户端
实现javax.servlet.http.HttpServletResponse接口
使用HTTP协议将响应发送给客户端
response对象实现HttpServletResponse接口,对客户的请求做出动态的响应,向客户端发送数据,如Cookies、HTTP文件的头信息等。
通常,很少使用该对象直接响应,输出响应使用out 对象,response对象常用于重定向操作。
常用的方法:
void sendRedirect(String name)response对象其他主要方法:
addHeader(String name,String value):添加HTTP头文件,该头文件将会传到客户端去,如果有同名的头文件存在,那么原来的头文件会被覆盖。
setHeader(String name,String value):设定指定名字的HTTP文件头的值,如果该值存在,那么它将会被新的值覆盖。
containsHeader(String name):判断指定名字的HTTP文件头是否存在,并返回布尔值。
flushBuffer():强制将当前缓冲区的内容发送到客户端。
addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。
out对象
- 表示输出流
- javax.servlet.jsp.JspWriter类的实例
- 使用write()、print()和println()方法
- 使用out对象进行JSP编程
<html>
<body>
<%
out.print(“欢迎来到 JSP:隐式对象”) ;
out.write(“欢迎来到 JSP:隐式对象”) ;
%>
…
</body>
</html>
作用域通信对象
- 作用域通信对象包括session、application 和pageContext
session对象
该对象代表一次会话。从客户端浏览器与站点建立连接起,开始会话,直到浏览器与服务器断开时结束会话。
javax.servlet.http.HttpSession接口的实例,session中存储有关用户会话的所有信息。
session对象最常用的方法有:
void setAttribute(String name, Object value)
以键/值的方式,将一个对象的值存放到session 中Object getAttribute(String name)
根据名称去获取session中存放对象的值session对象其他方法如下:
getAttributeNames():返回session对象存储的每一个属性对象名,结果集是一个Enumeration类的实例。
getCreationTime():返回session对象被创建的时间,单位为毫秒。
getId():返回session对象在服务器端的编号。
getLastAccessedTime():返回当前session对象最后一次被操作的时间。
getMaxInactiveInterval():获取sessionn对象的生存时间,单位为秒。
setMaxInactiveInterval (int interval):设置session对象有效时间。
removeAttribute(String name):删除指定属性的属性名和属性值。
invalidate():注销当前的session对象。
<%
session.setAttribute(“name”, “admin”);
%>
application对象
该实例代表JSP所属的 Web应用本身,可用于JSP页面,或者Servlet之间交换信息。
javax.servlet.ServletContext接口实例
application对象最常用的方法有:
-
- void setAttribute(String name, Object value)
以键/值的方式,将一个对象的值存放到application中
- void setAttribute(String name, Object value)
-
- Object getAttribute(String name)
根据名称去获取application中存放对象的值
- Object getAttribute(String name)
application对象其他主要方法如下:
getAttributeNames():返回所有application对象属性的名字,结果集是一个Enumeration类型的实例。
getServerInfo():返回Servlet编译器当前版本信息。
removeAttribute(String name):删除一个指定的属性。
<%
application.setAttribute(“ChartRecord”, “hihi”);
%>
application、session、request 区别
- 下面用实例说明它们三者之间的区别。
- 首先,建立项目Application_Session_Request。在项目中建立一个JSP页面first.jsp,用于这三个对象保存数据。
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<body>
<%
request.setAttribute("request","保存在Request中的内容");
session.setAttribute("session","保存在Session中的内容");
application.setAttribute("application","保存在Application中的内容");
%>
<jsp:forward page="second.jsp"></jsp:forward>
</body>
</html>
- 然后,再建立另一个JSP页面second.jsp,用于获取这三个对象保存的值。
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head>
</head>
<body>
<%
out.println("request:"+(String)request.getAttribute("request")+"<br>");
out.println("session:"+(String)session.getAttribute("session")+"<br>");
out.print("application:"+(String)application.getAttribute("application")+"<br>");
%>
</body>
</html>
- 部署运行,打开IE,输入“http://localhost:8080/Application_Session_Request/first.jsp”,会发现这三个对象保存的内容都能取出,如图所示。
由于在first.jsp中运用了<jsp:forward page=“second.jsp”></jsp:forward>,页面跳转到second.jsp,但是在浏览器中的地址也就是请求并没有改变,属于同一请求。这时这三个对象保存的内容都可以取到,也就是说在同一请求范围内,该三个对象都有效。
IE中再输入“http://localhost:8080/Application_Session_Request/second.jsp”,结果如图所示。
在不同请求中,request对象就失效了,但是由于用的是同一个IE,也就是同一会话,session和application仍然有效。
如果再重新打开一个IE,然后直接输入“http://localhost:8080/Application_Session_Request/second.jsp”,结果如图所示。
pageContext对象
该对象代表该JSP 页面上下文,使用该对象可以访问page、request、session和application。
javax.servlet.jsp.PageContext类的实例。
pageContext对象最常用的方法有:
void setAttribute(String name,Object value)
以键/值的方式,将一个对象的值存放到pageContext中Object getAttribute(String name)
根据名称去获取pageContext中存放对象的值Object getAttribute(String name, int scope)
根据名称去获取pageContext中指定范围存放对象值
page对象
- page对象代表JSP页面本身,使用page对象可以访问Servlet类的变量和方法。
<% @ page info=“我的信息” contentType=“text/html;charset=GBK”%>
<html>
<body>
<%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()%>
</body>
</html>
config对象
- javax.servlet.ServletConfig接口实例
- 存储在编译JSP页面过程创建的Servlet信息
- 提供了检索Servlet初始化参数的方法,且只有在JSP页面范围内才有效
错误对象exception
exception对象用来处理JSP文件在执行时所发生的错误和异常。它可以配合page编译指令一起使用,通过指定某一页面为错误处理页面,把所有的错误都集中到那个页面去处理。
当编译指令page 的isErrorPage属性为true时,使用该对象。exception对象是java.lang.Throwable类实例。
exception对象的主要方法如下:
getClass():返回错误类型
getMessage():返回错误信息。
printStackTrace():以标准错误的形式输出一个错误和错误堆栈
内置对象总结
JSP内置对象一般分为输入/输出对象、作用域通信对象 、Servlet对象和错误对象四类
JSP中的内置对象包括 request、response、out、session、application、pageContext、 page、config和exception。
JSP作用域包括 page、request、session和application:
application:对于整个Web应用有效,一旦JSP、Servlet将数据放入application中,该数据将可以被该应用其他所有的jsp和servlet访问;
session:仅对一次会话有效,一旦jsp和servlet将数据放入session中,该数据将被本次会话其他jsp和servlet访问;
request:仅对本次请求有效,一旦jsp、servlet将数据放入request中,该数据将可以被该次请求的其他jsp和servlet访问;
page:仅对当前页面有效,一旦jsp,servlet将数据放入page范围中,该数据只可以被当前页面的jsp脚本、声明部分访问。
JavaBean开发技术
Get()和Set()方法
- get()和set()方法用于访问JavaBean的属性
import java.io.*;
public class MyBean
{
private String name;
public MyBean()
{
}
public String getName()
{
return name;
}
public void setName(String myname)
{
name = myname;
}
}
JavaBean优势
- 实现过程标准化
- 可在多个应用程序中重用
- 可以跨平台
JSP使用JavaBean
- jsp:useBean创建一个JavaBean实例
- <jsp:useBean id=“name” class=“classname” scope=“page | request | session | application” />
- id:设置JavaBean的名称,利用此id,可以识别在同一个JSP程序中使用不同的JavaBean组件实例。
- class:指定JavaBean对应的Java类名,查找该JavaBean路径。
- scope:指定JavaBean作用范围。
<head>
<jsp:useBean id="BeanID" class="MyBean" scope="page"/>
</head>