(五)JSP语法详细介绍--jsp九大内置对象

一、jsp内置对象是指不用声明就可以在jsp页面的脚本部分直接使用的组件

是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP内置对象也被称为预定义变量。

按照期作用分类为:

    1.输入输出对象 : HttpServletRequest的request, HttpServletResponse的response, JspWriter的out;

    2.作用域通信对象 : HttpSession的session, ServletContext的application, PageContext的pageContext;

    3.servlet对象 : Object的page, ServletConfig的config;

    4.错误对象 : Throwable的exception;  

对象描述作用域
requestHttpServletRequest类的实例,提供对客户端HTTP请求数据的访问request
responseHttpServletResponse类的实例,响应信息,用来向客户端输出数据。page
outPrintWriter类的实例,用于把结果输出至网页上(提供对输出流的访问)page
sessionHttpSession类的实例,session对象用来跟踪在各个客户端请求间的会话。session
applicationServletContext类的实例,与应用上下文有关,通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。application
configServletConfig类的实例,该对象允许将初始化数据传递给一个jsp页面page
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问page
page类似于Java类中的this关键字(jsp页面对应的servlet类实例)page
ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象page

二、各个对象详解

 

1.首先要了解JSP的四个作用域:

application,session,request,page.

名称作用域
request在当前请求中有效
application在所有应用程序中有效,application作用域就是服务器或tomcat启动到关闭的整段时间,
page在当前页面中有效,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。
session在当前会话中有效

2.request常用方法

request.getParameter(String name)

用于获取客户端传送给服务器端的参数(通常是表单中的参数)。

request.getMethod()

获取客户端发起请求的方法

request.getProtocol() 

获取客户使用的协议

request.getServletPath()

获取客户提交信息的页面。

request.getHeader("accept")

获取HTTP头文件中的accept、accept-encoding和Host的值。

示例如下:

String strHeader =request.getHeader("accept")

request.getCookies()

获取客户端请求包含的所有cookie的集合

示例如下:

<%
	Cookie cookies[] = request.getCookies();
	for(int i = 0;i < cookies.length;i++){
		out.write("cookies名称:"+cookies[i].getName()+"\t\tcookies值:"+cookies[i].getValue()+"<br>");
	}
%>

request.setCharacterEncoding(String type)

重载正文中使用的字符编码。

如果提交请求的页面编码和响应输出页面的编码不一致,在处理中文时就会出现乱码,这个时候,一般使用 request.setCharacterEncoding (String type)来处理。

request.getRemoteAddr()

获取客户端的ip地址

request.getRemoteHost()

获取客户端主机名称

request.getServerName()

获取服务器名称

request.getServerPort()

获取服务器的端口号

2.response常用方法

response.setHeader(String name,String value)

将指定的参数名称和值设置到头信息中

示例如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%response.setHeader("Cache-Control","no-store")%> //实现禁止页面缓存
<%response.setHeader("refresh","30")%> //定时每30秒自动刷新
<html>
	<head>
		<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
		<title>test</title>
	</head>
	<body>
	</body>
</html>

response.sendRedirect(String location)

把响应送到另外一个位置进行处理(客户端跳转) 『request对象无法传递到新页面』

response .setCharacterEncoding(String type)

设置响应页面的字符编码

response.setContentType(String charset)

设置响应内容的类型

示例如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
//设置响应内容类型为office xls类型,以便实现在客户端用Excel打开
<%response.setContentType("application/vnd.ms-excel");%>     
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<table border="1px" cellspacing="0" cellpadding="0" width="850px">
		<tr>
			<th>学号</th>
			<th>姓名</th>
			<th>专业</th>
		</tr>
		<tr>
			<td>11</td>
			<td>小马</td>
			<td>通信</td>
		</tr>
	</table>
</body>
</html>

response.addCookie(Cookie cookie)

添加一个指定的cookie到响应中

示例如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
	Cookie cookie = new Cookie("iborder","no1");
	response.addCookie(cookie);
%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	添加一个指定的cookie到本页面中
</body>
</html>

3.out常用方法

通常情况下,服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区,只有在下面三种情况下,才会把该缓冲区的内容输出到客户端:

(1)该jsp网页已经完成信息的输出;

(2)输出缓冲区已满;

(3)jsp中调用了out.flush()或response.flushbuffer()。

输出缓冲区可以由<%@ page buffer="1kb"%>来设定,当设置<%@ page buffer="none"%>时,表示不使用缓冲区,直接输出。也可以由response.setBufferSize()来设定缓冲区大小。

out.getBufferSize()

获得当前实际缓冲区的大小

out.clearBuffer()

清空当前缓冲区内容。如果已经有内容被输出,不会返回IO错误信息

out.clear()

清空当前缓冲区内容。如果已经有内容被输出,返回IO错误信息

out.flush()

立刻输出缓冲区中的色内容

out.close()

先调用flush()功能,在关闭输出流,该方法会在jsp页面结束时自动调用。

out.print(String s)·     

输出字符串

out.println(String s)

输出字符串,并以换行符结束

示例如下:

<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" buffer="8kb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<p>当前缓冲区大小为<span><%=out.getBufferSize() %></span></p>
		<%
			out.flush();
			out.println("1不可见,因为下一句将调用out.clearBuffer()<br>");
			out.clearBuffer();
			out.println("2可见,因为接下来将调用out.flush(),再调用out.clearBuffer()<br>");
			out.flush();
			out.clearBuffer();
			out.println("3可见,因为接下来将调用out.close()<br>");
			out.close();
		%>
	</body>
</html>

运行结果:

05115835_ZWnE.png

 4.session常用方法

session对象用来保存单个用户访问时的一些信息。

服务器对每一个客户端会话,分配一个不会重复的会话sessionID,以此来区分不同用户,从而实现针对每一用户的请求,作出正确响应。

session.getId()

获取sessionID

session.setAttribute(String key,Object value)

将value放入索引关键字为key的字符串中

session.getAttribute(String key)

获取session对象中索引关键字为key的对象

session.removeAttribute(String key)

删除session对象中索引关键字为key的对象

session. isNew()

判断是否是一个新的客户。

示例如下:

(1)session.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<p>单击提交按钮查看存入的session</p>
		<form action="showsession.jsp" method="get">
			<% session.setAttribute("username", "iborder"); %>
			<p>保存username为<span><%="iborder" %></span></p>
			<input type="submit" name="submit" value="提交">
		</form>
	</body>
</html>

(2)showsession.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<p>取得username为<span><%=session.getAttribute("username") %></span></p>
	</body>
</html>

5.application常用方法

application对象实现了用户间数据的共享,可存放全局变量

代表JSP文件生成的异常对象,只能在引入了下面代码 的JSP文件中使用。

<%@ page isErrorPage="true"%>

application. setAttribute(String name,Object object)

在application中以name为关键字存入一个对象

application.get Attribute(String name)

从application中获取关键字 为 name的 对象

application.remove Attribute(String name)

从application中获取关键字 为 name的 对象

示例如下:

网站访问计数器

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<%
			String str = "";
			int i=1;
			if(application.getAttribute("count") == null){
				application.setAttribute("count", "1");
			} else{
				if(session.isNew()){
					str = application.getAttribute("count").toString();
					i = Integer.parseInt(str);
					application.setAttribute("count", Integer.toString(i+1));
				}				
			}
		%>
		<p>你是本站第<%=application.getAttribute("count") %>位访问者</p>
	</body>
</html>

6.config常用方法

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

String getServletName()返回Servlet的名字
ServletContext getServletContext()返回含有服务器相关信息的ServletContext对象
String getInitParameter(String name)返回初始化参数的值
Enumeration getInitParameterNames()返回Servlet初始化所需所有参数的枚举

7.pageContext常用方法

pageContext是页面上下文对象,提供了对JSP页面内所有的对象及名字空间的访问,PageContext类拥有getRequest,getResponse,getOut,getSession等方法,他相当于集成其他内置对象的功能。

JspWriter getOut()返回当前客户端响应被使用的JspWriter流(out)
HttpSession getSession()返回当前页中的HttpSession对象(session)
Object getPage()返回当前页的Object对象(page)
ServletRequest getRequest()返回当前页的ServletRequest对象(request)
ServletResponse getResponse()返回当前页的ServletResponse对象(response)
Exception getException()返回当前页的Exception对象(exception)
ServletConfig getServletConfig()返回当前页的ServletConfig对象(config)
ServletContext getServletContext()返回当前页的ServletContext对象(application)
void setAttribute(String name,Object attribute)设置属性及属性值
void setAttribute(String name,Object obj,int scope)在指定范围内设置属性及属性值
public Object getAttribute(String name)取属性的值
Object getAttribute(String name,int scope)在指定范围内取属性的值
public Object findAttribute(String name)寻找一属性,返回起属性值或NULL
void removeAttribute(String name)删除某属性
void removeAttribute(String name,int scope)在指定范围删除某属性
int getAttributeScope(String name)返回某属性的作用范围
Enumeration getAttributeNamesInScope(int scope)返回指定范围内可用的属性名枚举
void release()释放pageContext所占用的资源
void forward(String relativeUrlPath)使当前页面重导到另一页面
void include(String relativeUrlPath)在当前位置包含另一文件

8.page常用功能

page对象就是指向当前JSP页面本身,类似于类中的this指针

class getClass返回此Object的类
int hashCode()返回此Object的hash码
boolean equals(Object obj)判断此Object是否与指定的Object对象相等
void copy(Object obj)把此Object拷贝到指定的Object对象中
Object clone()克隆此Object对象
String toString()把此Object对象转换成String类的对象
void notify()唤醒一个等待的线程
void notifyAll()唤醒所有等待的线程
void wait(int timeout)使一个线程处于等待直到timeout结束或被唤醒
void wait()使一个线程处于等待直到被唤醒
void enterMonitor()对Object加锁
void exitMonitor()对Object开锁

9.exception对象

exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。

 

转载于:https://my.oschina.net/u/2321708/blog/742435

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值