Java Web程序设计基础二(服务器交互篇——九大内置对象)

目录

一、out对象

1、概念

2、常用方法

3、代码例子

 二、request对象

1、概念

2、request对象的常用方法

3、获取请求头部信息的方法

 4、获取请求参数的方法

 三、response对象

1、概念

2、常用方法

3、代码例子

 4、重定向的方法

四、session对象

1、概念

2、常用方法

 3、cookie(对比session)

 4、Cookie和session的异同

五、application对象

1、概念

2、有关属性操作的方法

3、获取容器相关信息的方法

4、其他方法

 六、pageContext对象

1、概念

2、用户获取属性的方法

3、常用方法

七、page对象

1、概念

2、 page对象常用方法如下

3、page和pageContext的区别

八、config对象

1、概念

2、config对象的常用方法

九、exception对象

1、概念

2、常用方法

3、代码例子


一、out对象

1、概念

(1)out对象的作用主要是向浏览器输出数据,也可以通过out对象对缓冲区进行操作

(2)JSP程序利用out对象将网页内容输出时,都要和客户端做一次连接,为了节省资源,jsp设置一个缓冲区,输出内容先存放于此,等到满时再一次性将内容发送往客户端

(3)除了直接使用内置对象以外,还可以使用pageContext.getOut()方法获取out对象

(4)out对象被封装成javax.servlet.JspWriter接口,out对象的作用域是page(html都属于out)

2、常用方法

out对象的常用方法

序号

方法名

方法功能

1

print()

输出各种类型数据

2

println()

输出各种类型数据并换行

3

newLine()

输出一个换行符

4

close()

关闭输出流

5

flush()

输出缓冲区里的数据

6

clearBuffer()

清除缓冲区里的数据,并把数据写到客户端

7

clear()

清除缓冲区里的数据,但不写到客户端

8

getBufferSize()

获得缓冲区的大小

9

getRemaining()

获得缓冲区剩余空间的大小

10

isAutoFlush()

判断缓冲区是否自动刷新

(1)out.println()用于分行显示各种类型的数据,相当于print()加上newLine(),也与“<%=%>”等价

(2)对缓冲区进行操作时

①clear()清空缓冲区中的内容,如果缓冲区中的数已经被刷新到客户端,则会引发IO异常

②clearBuffer()清空缓冲区中的内容,即使缓冲区中的数已经被刷新到客户端,也不会引发IO异常

3、代码例子

<%@ 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>out对象应用实例</title>
</head>
<body>
	<%
		out.println("out对象应用实例:<br><hr>");
	    out.println("<br>输出布尔型数据:");
	    out.println(true);
	    out.println("<br>输出字符型数据:");
	    out.println('l');
	    out.println("<br>输出字符数组数据:");
	    out.println(new char[]{'l','z','c'});
	    out.println("<br>输出双精度数据:");
	    out.println(5.66d);
	    out.println("<br>输出单精度数据:");
	    out.println(36.8f);
	    out.println("<br>输出整型数据:");
	    out.println(8);
	    out.println("<br>输出长整型数据:");
	    out.println(123456789123456L);
	    out.println("<br>输出对象:");
	    out.println(new java.util.Date());
	    out.println("<br>输出字符串:");
	    out.println("liuzc@hnrpc");
	    out.println("<br>输出新行:");
	    out.newLine();
	    out.println("<br>缓冲区大小:");
	    out.println(out.getBufferSize());
	    out.println("<br>缓冲区剩余大小:");
	    out.println(out.getRemaining());
	    out.println("<br>是否自动刷新:");
	    out.println(out.isAutoFlush());
	  	out.flush();
	  	out.println("<br>调用out.flush()");
	    out.close();/* out.close()后面的代码不再输出到浏览器 */
	    out.println(5.66d);
	%>
</body>
</html>


 二、request对象

1、概念

(1)request是一个javax.servlet.http.HttpServletRequest对象,封装浏览器的请求信息

(2)通过request对象可以获取用户的请求信息

(3)request也提供获取cookie、header和session等对象的数据的方法

拓展内容🧐:(1条消息) HTTP 请求header信息讲解_流楚丶格念的博客-CSDN博客_http请求设置headericon-default.png?t=M85Bhttps://blog.csdn.net/weixin_45525272/article/details/123471546

(4)请求信息的内容包括请求的头部信息(Header)、系统信息(编码方式)、请求的方式(GET、POST)、请求的参数名称和参数值等信息

2、request对象的常用方法

request对象的常用方法

序号

方法名

方法功能

1

getAttribute (String name)

获得由name指定的属性的值,如果不存在指定的属性,返回空值(null)

2

setAttribute(String name, java. lang. Object obj)

设置名字为name的request参数的值为obj

3

getCookie()

返回客戸端的cookie対象,結果是一个cookie数组

4

getHeader(String name)

获得HTTP协议定义的传送文件头信息

5

getHeaderName ()

返回所有request header 的名字,结果保存在一个Enumeration类的实例中

6

getServerName(String name)

获得服务器的名字

7

getServerPort (String name)

获得服务器的端口号

8

getRemoteAddr()

获得客戸端的IP地址

9

getRemoteHost()

获得客戸端的电脑名字

10

getProtocol()

获得客戸端向服务器端传送数据的协议名称

11

getMethod()

获得客戸端向服务器端传送数据的方法

12

getServletPath()

获得客戸端所请求的脚本文件的文件路径

13

getCharacterEncoding()

获得请求中的字符编码方式

14

getSession (Boolean create)

返回和请求相关的Session

15

getParameter(String name)

获得客戸端传送給服务器端的参数値

16

getParameterNames()

获得所有的的参数值的名字

17

getParameterValues()

获得指定的参数值

18

getQueryString()

获得査询字符串,该串由客戸端GET方法向服务器传送

19

getRequestURI()

获得发出请求字符串的客戸端地址

20

getContentLength()

获得内容的长度

3、获取请求头部信息的方法

String getHeader(String name):返回指定头部名称的字符串类型的信息值
Enumeration<String> getHeaderNames():返回所有头部信息的名称
Enumeration<String> getHeaders(String name):返回指定头部名称的所有信息值
int getIntHeader(String name):返回指定头部名称的类型信息值
long getDateHeader(String name):返回指定头部名称的代表日期对象的长整型信息值

<>:枚举型

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*" %>
<html>
<head>
<title> 使用request对象获取并显示全部请求头信息</title>
</head>
<body>		
	    <h1>您客户端发送的HTTP请求头包含如下信息:</h1>		
	    <%
	    Enumeration<String>headers = request.getHeaderNames();
	    while(headers.hasMoreElements()){
	    	String headerName = headers.nextElement();
	    	String headerValue = request.getHeader(headerName);	
	    %>
	    <b><%= headerName %></b>:<%= headerValue %><br/>		
	     <%			
	     	}		
	     %> 	
	</body>
</html>

 4、获取请求参数的方法

String getParameter (String name):获取name的参数值。
Enumeration getParameterNames():获取所有参数的名称。
String[] getParameterValues(String name):获取name的所有参数值。
Map getParameterMap():取得一个要求参数的Map

(1)input.jsp文件

<html>
<body>  
	<form action="request.jsp" method=post name=form>   
 		<input type="text" name="boy">     
    	<input type="submit" value="Enter" name="submit">
    </form> 
</body>
</html>

(2)request.jsp文件

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
	<p>获取文本框提交的信息:  
	<%String strContent=request.getParameter("boy");
	%>  
	<%=strContent%>
	<p> 获取按钮的名字:  
	<%String strButtonName=request.getParameter("submit");
	%>
	<%=strButtonName%> 
</body>
</html>

 


 三、response对象

1、概念

(1)是应答相关的HttpServletResponse类的一个对象,它封装了服务器对客户端的响应

(2)response对象产生的对客户的请求做出动态的响应,并向客户端发送数据,HttpServletResponse对象具有页面作用域

(3)JSP会根据客户端的请求建立一个默认的response对象,用来提供给客户端浏览器的参考信息,比如响应的头,响应的本体(HTML文本内容)以及服务端的状态码信息

2、常用方法

response对象的常用方法

序号

方法名

方法功能

1

addHeader(String name,String value)

添加HTTP文件头,该header将会传递到客户端

2

setHeader(String name,String value)

设置指定名字的HTTP文件头值

3

containsHeader(String name)

判断指定名字的HTTP文件头是否存在

4

addCookie(Cookie cookie)

添加一个cookie对象,用来保存客户端的用户信息

5

encodeURL()

使用sessionId来封装URL

6

flushBuffer()

强制将当前缓冲区的内容发送到客户端

7

getBufferSize()

返回缓冲区的大小

8

sendError(int sc)

向客户端发送错误信息

9

sendRedirect(String location)

把响应发送到另一个指定位置进行处理

10

getOutputStream()

返回到客户端的输出流对象

11

setContentType()

动态改变contentType属性(设置响应的MIME类型)

3、代码例子

(1)当前页面转换为excel文件

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>response对象的setContentType方法演示</title></head>
<body bgcolor=cyan>
<p>将当前页面保存为Word文档吗?

<form action="" method="get" name=form>
  	<input type="submit" value="yes" name="submit">
</form>

<% String str=request.getParameter("submit");
	if(str==null) {str="";}
    if(str.equals("yes")){
    	response.setContentType("application/vnd.ms-excel;charset=GB2312"); 
    	//尝试下不同的类型,比如application/pdf  image/jpeg等
    }
%> 
</body>
</html> 

 

转其他常见类型文件如下:

(2条消息) resp.setcontenttype text html,对于response.setContentType(MIME)的注释详解_董超华的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/weixin_29038537/article/details/118284073?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166427998516782391895719%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166427998516782391895719&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-118284073-null-null.142^v50^control,201^v3^control_2&utm_term=response.setContentType%E5%B8%B8%E8%A7%81&spm=1018.2226.3001.4187(2)每个2秒钟刷新一次页面

<%@ page contentType="text/html;charset=UTF-8"  language="java" import="java.util.*" %>
<html>
	<head>
	<title> response页面刷新 </title>
	</head>
	<body>
		<%
			response.setHeader("refresh","2"); 
			out.println(new Date().toLocaleString());
		%>
	</body>
</html> 

 4、重定向的方法

(1)void sendRedirect (String url):将页面定向到指定的地址
String encodeRedirectURL (String url):对指定的地址进行编码
sendRedirect (String url):将对用户端的响应重新定向到指定的url上,这个方法必须在响应被提交之前调用。调用这个方法响应立即被提交,在调用这个方法后,Servlet不会再有更多的输出

(2)通过setRedirect实现页面跳转

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>response对象的setContentType方法演示</title></head>
<body>
<p>你要跳转页面吗?
<form action="" method="get" name=form>
  	<input type="submit" value="yes" name="submit">
  	<input type="reset" value="no" name="reset">
</form>
<% String str=request.getParameter("submit");
	if(str==null) {str="";}
    if(str.equals("yes")){
    	response.sendRedirect("3_5_respose_reflesh.jsp"); 
    }
%> 
</body>
</html> 


四、session对象

1、概念

(1)session对象是和请求相关的HttpSession对象,它封装了属于客户会话的所有信息

(2)Session在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话

(3)session对象的Id是指当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个字符类型的Id号,JSP引擎同时将这个Id号发送到客户端,存放在cookie中,这样session对象和客户之间就建立了一一对应的关系,当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端将该客户的session对象取消,服务器与该客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象

2、常用方法

session对象的常用方法

序号

方法名

方法功能

1

getAttribute(String name)

获得指定名字的属性

2

getAttributeNames ()

返回session对象中存储的第一个属性对象

3

getCreationTime()

返回session对象的创建时间

4

getId()

返回当前session对象的编号

5

getLastAccessedTime()

返回当前session对象的最后一次被操作的时间

6

getMaxInactiveInterval ()

获取session对象的生存时间

7

removeAttribute (String name)

删除指定属性的属性值和属性名

8

setAttribute (String name, Object obj)

设置指定名字的属性

9

Invalidate()

注销当前的session

10

isNew()

判断是否是一个新的session

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>session-uv和pv的差别</title>
</head>
<body>
	<%!//声明变量和函数
	int pv = 0, uv = 1;
	
	synchronized void countPv() {
		pv++;
	}
	synchronized void countUv() {
		uv++;
	}%>
	
	<%//执行java语句
		countPv();
		//System.out.println(session.toString());

		if (session.isNew()) {
			countUv();
		};
		//	String str = String.valueOf(uv);		
		//application.setAttribute("uv", str);
		//注销后会如何?其实并不影响session.invalidate();
	%>
	<p>
	
	<p>
	本网站的UV2:<%=uv %>
	</p>
	<p>
	本页面访问量PV:<%=pv%>
	</p>
</body>
</html>

 

 3、cookie(对比session)

简单理解:Cookie就是保存session传送来的信息的地方

(1)HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是CookieSession

(2)当用户使用浏览器访问一个支持cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器,接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息

这些信息并不是存放在HTTP响应体(Response Body)中,而是存放在HTTP响应头(Response Header),当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Window操作系统而言,可以从[系统盘]:\Documents and Settings [用户名] \ Cookies目录中找到存储的Cookie

(3)Cookie的常用用途:

①购物车(大部分送服务器的数据库)、逐步注册、搜索引擎记录、个性化服务

②站点跟踪特定访问者访问的次数,最后访问的时间以及访问者进入站点的路径

③Cookie能够帮助站点统计用户个人资料以实现各种各样的个性化服务

④Cookie实现自动登录功能,使得用户不需要输入用户名和密码就可以进入曾经浏览的站点(限定在同一网站)

在Cookie中信息的片段以“名/值”对(name-value pairs)的形式储存

(4)常用方法

cookie对象常用方法

返回类型

方法名

完成功能

void

setName (String name)

设置Cookie的名字

String

getName()

返回cookie的名字

void

setValue(String value)

设置Cookie的值

String

getValue()

返回Cookie的值

void

setDomain(String domain)

设置cookie中适用的域名

String

getDomain(String domain)

获取cookie中适用的域名

void

setMaxAge(int second)

设置cookie的存活周期

int

getMaxAge(int second)

获取cookie在失效以前的最大时间,以秒计算

void

setPath(String path)

设置能够读取Cookie的路径

String

getPath(String path)

返回Cookie的适用路径

void

setComment(String msg)

设置cookie的注释

void

setSecure(boolean flag)

设置浏览器是否需要使用安全协议才能读取该cookie

(5)对于Cookie的写入和读取,需要结合response对象来实现,写入Cookie的主要步骤如下:

创建Cookie对象

②设定Cookie的属性(一般设置Cookie的有效期)

③调用response.addCookie(Cookie c)方法将其写入客户端

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<!--这里是Cookie的写入 -->

cookie write!!!!

<%
Cookie c=new Cookie("fit-10sss","123456aaaa");
c.setMaxAge(10);    //1小时=60分钟*60秒,cookie的有效期,单位秒。不设置失效时间或设置为负数表示当前会话有效,也就是关闭浏览器后Cookie失效
response.addCookie(c);  //respose进行add,request进行get
%>
<!--这里是Cookie的读取 -->
<p>
cookie read!!!!
<p>
<%
Cookie a[]=request.getCookies();  //respose进行add,request进行get
//根据设置时的cookie个数决定数组元素个数
for (int i =0;i<a.length;i++){
	String s1=(String)a[i].getName();
	String s2=(String)a[i].getValue();
	out.println("<br>Cookie的名和值是:"+s1+"  "+s2+"<br>");
}

%> 
<body>
<html>

 4、Cookie和session的异同

(1)存放地点:Cookie存放在客户端的硬盘里,属于离线存放,而session存放在服务器的内存

(2)存活时间:Cookie可以长期存放在客户端【chrome一般限制是400天】,具体的存活时间由setMaxAge()方法【单位秒】所指定的数值决定,session随用户访问服务器而产生,随客户超时或下线而消失

(3)安全性:Cookie存放在客户端,可能会被别有用心的网站读取,安全性较差,而session存放在服务器的内存中,用户不能修改,且随客户端浏览器的关闭而消失,安全性较好

(4)联系:不论是Cookie还是session内置对象都需要浏览器支持Cookie并且没有禁用Cookie


五、application对象

1、概念

(1)application对象负责提供应用程序在服务器运行时的一些全局信息,它在服务器启动时创建,直到服务器关闭时消失,实现的是javax.servlet.ServletContext

(2)它实现了用户间数据的共享,可存放全局变量,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作

(3)在任何地方对此对象属性的操作,都将影响到其他用户对此的访问

(4)服务器的启动和关闭决定了application对象的生命

2、有关属性操作的方法

(1)public void setAttribute(String name, Object value):在application对象中存储指定名字的属性和值,如果指定的属性名已经存在,则更改这个属性的

(2)public Object getAttibue(String name):读取application对象中指定名字的属性的,如果指定的属性名不存在,则返回null

(3)public Enumeration getAttributeNames():获取application对象中所有属性的名字

(4)public void removeAttribue(String name):删除application对象中指定名字的属性,如果指定的属性名不存在,则什么都不做

3、获取容器相关信息的方法

(1)public int getMajorVersion():获取Servlet支持的Servlet API的主版本号

(2)public int getMinorVersion():获取Servlet支持的Servlet API的次版本号

(3)public String getServerInfo():获取Servlet容器的名称版本号

4、其他方法

(1)public String getMimeType(String file):获取指定文件的MIME类型

(2)public String getRealPath(String path):获取指定path的绝对路径

(3)public String getServletContextName():获取Web应用的名字

(4)public void log(String msg):将指定的信息写入日志文件

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<%!
	ServletContext application;
	synchronized void countPeople(){
		application = getServletContext();
		Integer number = (Integer)application.getAttribute("number");
		if(number == null){
			number = new Integer(1);
			application.setAttribute("number",number);
		}else{
			number = new Integer(number.intValue()+1);
			application.setAttribute("number",number);
		}
	}
%>
<%
	if(session.isNew()){
		countPeople();
	}
	int personCount = ((Integer)application.getAttribute("number")).intValue();
%>
<p>您是第<%=personCount%>个访问本站的人。
</p>
</body>
</html>

 

 六、pageContext对象

1、概念

(1)JSP利用页面上下文对象pageContext可以获取页面所有相关的属性

(2)通过pageContext对象也可以得到当前页面中所有其他的JSP内置对象(out、request、response、session、application等)及其所支持的属性

(3)它实现的接口为javax.servlet.jsp.PageContext

2、用户获取属性的方法

(1)public void setAttribute(String name, Object value):在pageContext对象中存储指定名字的属性和值,如果值为null,则效果等同于removeAttribute(String name)

(2)public void setAttribute(String name, Object value, int scope):在指定范围内存储指定名字的属性和值,如果值为null,则效果等同于removeAttribute(String name,int scope)

(3)public Object getAttibue(String name):读取pageContext对象中指定名字的属性的,如果指定的属性名不存在,则返回null

(4)public Object getAttribute(String name, int scope):读取指定范围内指定名字的属性的,如果指定的属性名不存在,则返回null

(5)public Enumeration getAttributeNamesInScope(int scope):获取指定范围内所有属性的名字

(6)public int getAttributesScope(String name):读取指定名字的属性的所属范围

(7)public void removeAttrbute(String name):删除pageContext对象中指定名字的属性,如果指定的属性名不存在,则什么都不做

(8)public void removeAttribute(String name, int scope):删除指定范围内指定名字的属性,如果指定的属性名不存在,则什么都不做

(9)public Object findAttribute(String name):依次在pageContext对象,request对象,session对象,application对象中搜索指定名字的属性。如果找到,则返回属性的,如果没有找到,则返回null

3、常用方法

pageContext对象的常用方法

序号

方法名称

功能

1

Exception getException()

获取当前页面出现的异常(即exception对象),不过此时页面应为错误处理页.

2

JspWriter getOut()

获取当前页面的输出流,即out对象

3

Object getPage()

获取当前页面的Servlet对象,即page对象

4

ServletRequest getRequest()

获取当前页面的请求对象,即request对象

5

ServletResponse getResponse()

获取当前页面的响应对象,即Response对象

6

ServletConfig getServletConfig()

获取当前页面的ServletConfig对象,即config对象

7

ServletContext getServletContext()

获取当前的ServletContext对象,即application对象

8

HttpSession getSession()

获取当前页面的会话对象,即session对象

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
	<%
	//使用pageContext设置属性,该属性默认在page范围内
	
	pageContext.setAttribute("name","fit pageContext");
	request.setAttribute("name","编程 request");
	session.setAttribute("name","蓝敏编程 session");
	//session.putValue("name","计算机编程");
	application.setAttribute("name","蓝敏编程 application");
	application.setAttribute("age","99");
	%>
	
	page设定的值:<%=pageContext.getAttribute("name")%><br>
	request设定的值:<%=pageContext.getRequest().getAttribute("name")%><br>
	session设定的值:<%=pageContext.getSession().getAttribute("name")%><br>
	application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>
	
	范围1内的值:<%=pageContext.getAttribute("name",1)%><br>
	范围2内的值:<%=pageContext.getAttribute("name",2)%><br>
	范围3内的值:<%=pageContext.getAttribute("name",3)%><br>
	范围4内的值:<%=pageContext.getAttribute("name",4)%><br>
	
	<!--从最小的范围page开始,然后是reques、session以及application-->
	<%pageContext.removeAttribute("name",3);%>
	pageContext修改后的session设定的值:<%=session.getAttribute("name")%><br>
	<%pageContext.setAttribute("name","应用技术培训",4);%>
	pageContext修改后的application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>
	查找name的值(注意顺序从page至application逐个查找):<%=pageContext.findAttribute("name")%><br>
	查找age的值:<%=pageContext.findAttribute("age")%><br>
	属性name的范围:<%=pageContext.getAttributesScope("name")%><br>
	属性age的范围:<%=pageContext.getAttributesScope("age")%><br>
</body>
</html>


七、page对象

1、概念

(1)page对象是JSP页面对应的Servlet类的实现对象,相当于this

(2)page对象是指指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例,page对象在实际开发过程中并不经常使用

2、 page对象常用方法如下:(主要是Object类中声明的方法)

(1)class getClass():返回此Object的

(2)int hashCode():返回此Object的hash码

(3)boolean equals(Object obj):判断Object是否与指导的Object对象相等

(4)void copy(Object obj):把此Object拷贝到指定的Object对象中

(5)Object clone():克隆此Object对象

(6)String toString():把此Object对象转换成String类的对象

(7)void notify():唤醒一个等待的线程

(8)void notifyAll():唤醒所有等待的线程

(9)void wait(int timeout):使一个线程处于等待直到timeout结束或唤醒

(10)void wait():使仪的线程处于等待直到被唤醒

3、page和pageContext的区别

(1)page:java.lang.Object的实例,对应this关键字。JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this,在JSP页面中,很少使用page对象。

(2)pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext和getServletConfig等


八、config对象

1、概念

(1)config对象代表当前JSP页面的配置信息,它对应的接口是:是javax.servlet.ServletConfig

(2)通常情况下,JSP页面无需配置,因此config对象在JSP页面中比较少用,但它在Servlet中的作用比较大

2、config对象的常用方法

(1) public String getInitParameter(String name):获取指定名字的初始化参数的,如果参数不存在,则返回null

(2)public Enumeration getInitParameterNames():获取所有初始化参数的名字,如果没有初始化参数,则返回一个空的枚举集合

(3)public ServletContext getServletContext():获取Servlet的上下文对象

(4)public String getServletName():获取Servlet对象的名称

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
	<!-- 直接输出config的getServletName的值 -->  
    <%=config.getServletName()%>  
</body>
</html>


九、exception对象

1、概念

(1)exception对象代表了JSP文件运行时所产生的错误和异常对象

(2)只有在包含<%@page isErrorPage="true" %>的页面中才可以使用

(3)在一般的JSP文件中使用该对象会导致无法编译JSP文件

2、常用方法

exception对象的常用方法

序号

方法

说明

1

getMessage()

返回exception对象的异常信息字符串

2

getLocalizedMessage()

返回本地化的异常错误

3

toString()

返回关于异常错误的简单信息描述

4

fillInStackTrace()

重写异常错误的栈执行轨迹

3、代码例子

(1)3_12_errorpage.jsp文件

<%@ page language="java" import="java.util.*"
	contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
	errorPage="error.jsp"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>起始页</title>
</head>
<body>
	<%
	    float price = Float.parseFloat("10元");
	%>
</body>
</html>

(2)error.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" isErrorPage="true"%>
<!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>错误提示页面</title>
</head>
<body>
<h2>这里是错误页面提示</h2>
<h3>
	<%=exception.getMessage()%><br>
	<%=exception.getLocalizedMessage()%><br>
	<%=exception.toString()%><br>
	<%=exception.fillInStackTrace()%><br>
	</h3>
</body>

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值