JSP有9个内置对象,分别是:
request(请求)、
response(响应)、
session(会话)、
application(应用程序)、
out(输出)、
page(页面)、
config(配置)、
pageContext(页面上下文)、
exception(异常)。
对象 |
作用及方法 |
Request |
表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie、header和session数据的有用的方法。 |
Response |
表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies、header头信息等)。 |
pageContext |
是一个Javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 |
Session |
表示一个请求的Javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。 |
Application |
表示一个Javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。 |
Out |
是Javax.jsp.JspWriter的实例,并提供了几个方法能用于向浏览器回送输出结果。 |
Config |
表示一个Javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 |
Page |
表示从该页面产生的一个servlet实例。 |
Exception |
针对错误网页,未捕捉的例外 |
Request对象
Request对象代表的是来自客户端的请求,例如在form表单中填写的信息等是最常用的对象。
方法:
getParameter() //获取到客户端通过表单或url请求参数发送过来的参数值
getParameterValues() //将同名的参数一次性读入String类型的数组中
getParameterNames() //获取参数名称,返回枚举类型
getMethod() //获得用户提交方式,post或get
getServletPath() //获得JSP文件所在项目的路径
getRemoteAddr() //获取客户的IP地址
getServerName() //获取服务器的名称
getServerPort() //获取服务器的端口号
getContextPath() //获取项目名,与getServletPath类似
getHeader(str) //获取HTTP头文件中的指定值
getHeaders(str) //获取表头信息
请求中文乱码处理
a. 设置request请求字符编码
request.setCharacterEncoding("UTF-8");
b. 取得参值后,通过转码方式将值转成合适的字符集
String uname=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
String upwd=new String(request.getParameter("pwd").getBytes("ISO-8859-1"),"UTF-8");
获取主机和客户机的信息
getRemoteAddr() //获得客户主机的IP
getRemoteHost() //获得客户主机的名字
getLocalAddr() //获得本地主机的IP
getLocalHost() //获得本地主机的名字
getServerName() //获得服务器主机的IP
getServerPort() //获得服务器端口
例如:
本地计算机名为:<%=request.getLocalHost()%>
Response对象
Response对象代表的是对客户端的响应,也就是说可以通过response对象来组织发送到客户端的数据。
但是由于组织方式比较底层,所以不建议一般人使用。
需要向客户端发送文字时直接用out对象即可。
方法:
addHeader(String arg0,String arg1) //向页面中添加头和对应的值
addCookie(Cookie arg0) //添加Cookie信息
sendRedirect(String arg0) //实现页面重定向,URL重写
setStatus(int arg0) //设定页面的响应状态代码
setContentType(String arg0) //设定页面的MIME类型和字符集
setCharacterEncoding(arg0) //设定页面响应的编码类型
Session对象
Session对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。
HTTP是无状态协议;
Web Server对每一个客户端请求都没有历史记忆;
Session用来保存客户端状态信息。
打开一个浏览器就意味着打开了一个Session对象,浏览器不关闭,Session对象会一直存在(姑且这样认为),且Session对象只有一个。
如果浏览器关闭重启,会创建新的Session对象。
Session对象生命周期:创建--执行--失效
方法:
setAttribute("key",value) //将参数名和参数值存放在session对象中
getAttribute("key") //获取参数值
getAttributeName()
getId() //获取session对象的ID
removeAttribute("key") //移除指定session中参数
getCreateTime() //获得session对象创建的时间,单位毫秒
getMaxInactiveInterval() //获得session对象的有效时间
setMaxInactiveInterval() //设置session对象的有效时间
isNew() //判断是否为一个新客户
invalidate() //使session对象失效
application对象
application对象负责提供应用程序在服务器中运行时的一些全局信息。
类似于系统的“全局变量”,用于实现用户之间的数据共享。
application的生命周期是从application创建到服务器关闭。
application的存活范围比request和session都要大。
只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享。
方法:
getRealPath(String arg0) //获得指定文件的路径
getMimeType(String arg0) //获取指定的文件格式
setAttribute(String arg0,Object obj) //将参数及参数值保存到application对象
getAttribute(String arg0) //获得application对象属性的值
getAttributeNames() //获得application中所有参数的名字
removeAttribute(String arg0) //移除application对象中指定的参数值
getServletInfo() //获取Servlet的当前版本信息
getContext(String arg0) //获得指定路径的context内容
getContextPath()
例如:
<%=application.getRealPath("login.jsp")%> //获得login.jsp的实际路径
<%=application.getResource("login.jsp")%>
<%=application.getContextPath()%>
Out对象
作用:输出内容到HTML中。
out对象代表了向客户端发送数据的对象,与response对象不同,通过out对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过out对象直接向客户端写一个由程序动态生成的HTML文件。
常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为out对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。
方法:
append(char c) //将字符添加到输出流中
clear() //清空页面缓存中的内容
close() //关闭网页流的输出
flush() //网页流的刷新
println() //将内容直接打印在HTML中
write() //与println()方法相似,区别在于println()可以输出各种类型的数据,
而write()只能输出与字符相关的数据。
例如:
<%
out.println("这是out对象输出的信息");
out.clear(); //清除缓冲区中的内容
%>
Page对象
Page对象是指当前的JSP页面本身,在实际开发中并不常用。
方法:
getClass() //返回当时Object的类
hashCode() //返回此时Object的哈希代码
toString() //将此时的Object类转换成字符串
equals(Object obj) //比较此对象是否与指定的对象相等
clone() //对此对象进行克隆
copy(Object obj) //将此对象复制到指定的对象中
Config对象
Config对象一般用于页面初始化时传递参数。一般而言很少在页面中使用config对象。
方法:
getServletContext() //获得servletContext值
getInitParameter(String arg0) //获得指定的初始化值
getInitParameterNames() //获得初始化的所有参数,返回枚举值
getServletName() //获得servlet名字
equals(Object obj) //比较此时的对象是否与指定的对象相等
toString() //获得此时对象的值
Exception对象
Exception对象用来处理页面出现的异常错误。
通常在某个页面(比如A.jsp)中加入page指令的errorPage属性来将其指向一个专门处理异常错误的页面(doError.jsp)。
<%@ page errorPage="doError.jsp" %>
方法:
getMessage() //返回exception对象的异常消息字符串
getLocalizedMessage() //返回exception对象的本地化语言的异常错误。
printStackTrace() //显示异常的栈跟踪轨迹。
toString() //返回关于异常错误的简单消息描述。
fillInStackTrace() //重写异常错误的栈执行轨迹。
PageContext对象
PageContext内置对象是一个比较特殊的对象,它相当于页面中所有其他对象功能的最大集成者,
即使用它可以访问到本页面中所有其他的对象。
例如前面已经描述的request、response、out和page对象等。
由于在JSP中request和response等对象本来就可以通过直接调用方法使用,所以pageContext对象在实际JSP开发中很少使用到。
方法:
getRequest():返回当前页面中的request对象。
getResponse():返回当前页面中的response对象。
getSession():返回当前页面中的session对象。
getServletContext():返回当前页面中的application对象。
getPage():返回当前页面中的page对象。
getOut():返回当前页面中的out对象。
getException():返回当前页面中的exception对象。
getServletConfig():返回当前页面中的config对象。
setAttribute(String name):给指定的属性名设置属性值。
getAttribute(String naem):根据属性名找到相应的属性值。
setAttribute(String name, Object obj, int scope):在给定的范围内设置相应的属性值。
getAttribute(String name, int scope):在给的范围内获取相应的属性值。
findAttribute(String name):寻找一个属性并返回,如果查找不到则返回null。
removeAttribute(String name):通过属性名删除掉某个属性。
removeAttribute(String name, int scope):在指定的某个范围里删除某个属性。
getAttributeScope(String name scope):返回某属性的作用域。
getAttributeNamesInScope(int scope):返回指定范围内的所有属性名的枚举。
release():释放pageContext占据的所有资料。
forward(String relativeURLpath):使用当前页面重导到另一个页面。
include(String relativeURLpath):使用当前位置包含的另一个页面。
JSP常用的动作标签:
语法 |
描述 |
jsp:include |
在页面被请求的时候引入一个文件。 |
jsp:useBean |
寻找或者实例化一个JavaBean。 |
jsp:setProperty |
设置JavaBean的属性。 |
jsp:getProperty |
输出某个JavaBean的属性。 |
jsp:forward |
把请求转到一个新的页面。 |
jsp:plugin |
根据浏览器类型为Java插件生成OBJECT或EMBED标记。 |
jsp:element |
定义动态XML元素 |
jsp:attribute |
设置动态定义的XML元素属性。 |
jsp:body |
设置动态定义的XML元素内容。 |
jsp:text |
在JSP页面和文档中使用写入文本的模板 |
JSP三大指令:
指令 |
作用 |
<%@ page %> |
设置JSP页面的属性和相关功能。 |
<%@ include %> |
在JSP页面引入需要包含的页文件。 |
<%@ taglib %> |
标签指令,自定义新的标签。 |
JSP中动态include与静态include的区别?
动态include用<jsp:include>动作实现,<jsp:include page=”included.jsp” flush=”true” />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态include用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=”included.html” %> 。
评论 (0)