内置对象
1. 定义
- 可以不用声明和创建,就可以直接在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量
2. 为什么不用声明和创建?
- 内置对象必须由支持JSP的容器去创建
3. 九大内置对象
- request请求对象 (重点)
- response响应对象(重点)
- session会话对象(重点)
- out输出对象(重点)
- page页面对象
- application应用程序对象
- pageContext面上下文对象
- config配置对象
- exception异常对象
request
1. 定义
- 客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应
2. 方法
1) getParmeter(String name): 获取表单提交的信息,以字符串形式返回某个请求参数的值;当没有参数与之对应,返回null。
2 )getParameterNames():获得客户端传送给服务器端的所有参数,其结果是一个Enumeration(枚举)实例。
3)getCharacterEncoding():返回客户端请求中的编码方式。
4)getContentLength():以字节为单位返回客户端请求的大小
5) getHeader(String name): 用户获取HTTP协议文件头信息中指定名字的值。
6 )getHeaderNames(): 返回HTTP协议所有文件头信息,其结果是一个Enumeration(枚举)实例。
7)getMethod():返回客户端请求的方法(get or post)。
8)getProtocal():获取客户端向服务器端传送使用的协议。
9) getRequestURL(): 用户获取客户端URL地址。
10)getRemoteAddr(): 获取客户端IP地址。
11)getRemoteHost():获取客户端主机名字。
12)getServerName():获取服务器端主机的名字。
13)getServerPort():获取服务器端口号;
14) removeAttribute(String name): 删除请求的一个属性。
15)setAttribute(String name,Object object): 为request对象设置属性。
16)getAttribute(String name):获取request对象属性为name的值。
17)getAttributeNames(): 返回request对象所有属性值,结果是一个Enumeration(枚举)实例。
// RequestTest.jsp
<%@ page import="java.util.Enumeration" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@
page errorPage="error.jsp"
%>
<!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>
<%
//1 获得login页面传来的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
out.println(username);
out.println(password);
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()){
out.println("this is "+names.nextElement());
}
out.println(request.getCharacterEncoding());
out.println(request.getContentLength());
%>
</body>
</html>
//login.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>登录界面</title>
<link href="../CSS/login.css" rel="stylesheet" >
</head>
<%--
任务:
1)合理使用页面跳转或者重定向;
2)使用session控制系统登录入口;
3) 通过session控制会话过期时间;
4)系统加入异常页面处理逻辑;
--%>
<body>
<div class="login">
<div class="loginTitle">用户登录</div>
<div class="loginForm">
<%-- <form action="validDate.jsp" method="post">--%>
<form action="RequestTest.jsp" method="post">
<table class="loginTable">
<tr>
<td>账号:</td>
<td><input id="username" name="username" type="text"></td>
</tr>
<tr>
<td>密码:</td>
<td><input id="password" name="password" type="password">
<a href="#">忘记密码?</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
getParameter(String name) 和 getAttribute(String name)
1. 当两个页面为链接关系(从客户端到服务器端),通过getParameter()来获得请求参数
2. 当连个页面为转发关系(服务器端内部跳转forward),通过getAttribute()来获得请求参数
3. getParameter()返回字符串,getAttribute()返回Object
response
1. 定义
- 用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应
2. 方法
1) addCookie(Cookie cook): 用户给用户添加一个Cookie,保存客户端相关信息。
2 )addHeader(String name, String value):添加带有指定名字和字符串的HTTP文件头信
3)getCharacterEncoding():返回响应的字符串编码方式。
4)sendError():向客户端发送错误信息;
5) sendRedirect(): 重新定向客户端请求。
6)setCharacterEncoding():设置响应的字符串编码方式。
3. request.redireact("XX.jsp")
1. 效果:跳转到XX.jsp文件
<jsp:forward pag=""/> & request.redireact("XX.jsp")区别
1. <jsp:forward pag=""/> 在服务器中跳转界面,因此网址不会变化,网址是进入服务器的时的网址
2. request.redireact("XX.jsp")服务器和客户端一来一回的跳转
session
1. 定义
- JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息。默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为新的客户端实例化。
2. 方法
1) public Object getAttribute(String name): 返回session对象中与指定名称绑定的对象,如果不存在则返回null。
2 )public Enumeration getAttributeNames():返回session对象中所有的对象名称,其结果是一个Enumeration(枚举)实例。
3)public long getCreationTime():返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起
4) public String getId(): 返回session对象的ID。
5 )public long getLastAccessedTime():返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起。
6)public int getMaxInactiveInterval():返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开
7) public void invalidate():将session无效化;
8) public void removeAttribute(String name): 移除session中指定名称的对象
9 )public void setAttribute(String name, Object value) :使用指定的名称和值来产生一个对象并绑定到session中
10)public void setMaxInactiveInterval(int interval):用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效;
<%
session.setAttribute("attr1", "demo1");
String attr1 = (String)session.getAttribute("attr1");
%>
session attr1 is:<%=attr1%><br>
<%
String id = session.getId();
// 获取session创建时间
Date createTime = new Date(session.getCreationTime());
// 获取最后访问页面的时间
Date lastAccessTime = new
Date(session.getLastAccessedTime());
%>
<%!
int count =1;
%>
<%
if(session.getAttribute("count")==null){
count++;
session.setAttribute("count",1);
}
%>
<%=count%>
out
1. 定义
- out对象:在浏览器客户端输出内容(页面缓冲区输入,当缓冲区满或者页面执行结束时,将缓冲区的内容输出)。
2. 方法
1) void println():向客户端打印字符串。
2)void flush():将缓冲区内容输出到客户端。
3)void clear():清除缓冲区,在flush()方法之后调用会异常。
4)void clearBuffer():清除缓冲区,在flush()之后调用不会异常;
5)int getBufferSize():返回缓冲区字节数大小;
区别
- out输出是先往页面缓冲区中写,缓冲区满或者页面执行结束,然后再输出;
- response.Writer是直接输出
application
1. 定义:
- 实现用户之间数据的共享,为全局变量。Tomcat服务器的启动和关闭决定了application的生命周期。
2. 方法
1) public Object getAttribute(String name): 返回applicaltion对象中与指定名称绑定的对象,如果不存在则返回null。
2 )public Enumeration getAttributeNames():返回applicaltion对象中所有的对象名称,其结果是一个Enumeration(枚举)实例。
3)public void setAttribute(String name ,Object value):设置application属性及其值。
4) public void removeAttribute(String name): 删除applicaltion对象中属性及其对应的值。
5 )public String getServerInfo():返回Servet编译器版本信息。
<%
Integer sum = (Integer) application.getAttribute("sum");;
%>
<%
if(sum==null){
sum =1;
session.setAttribute("count",1);
}else{
if(session.getAttribute("count")==null){
sum++;
session.setAttribute("count",1);
}
}
application.setAttribute("sum",sum);
// 更新sum值
%>
pageContext
1. 定义:
- 实现获得当前JSP页面所有对象和命名空间的访问。
2. 方法:
1) getRequest(): 返回当前的request对象。
2) getResponese():返回当前的response对象。
3) getSession():返回当前的session对象。
4) getOut():返回当前的out对象。
page
- 指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。
config
- 代表当前JSP 配置信息,但JSP 页面通常无须配置,因此也就不存在配置信息
exception
- 是Throswable实例,代表JSP脚本中产生的错误和异常,是JSP页面机制的一部分
生命周期
- 小->大
- page对象:仅在当前页面存在
- request对象: 从一个页面到另外一个页面访问请求。
- session对象: 某一个用户的会话,只要浏览器不关闭或者会话时间未过期,就一直存在。
- application: 所有用户的共同会话,所有用户共享的成员变量。只要Tomcat未关闭,就一直存在