JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用
out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。
| 方法名 | 说明 |
| print或println | 输出数据 |
| newLine | 输出换行字符 |
| flush | 输出缓冲区数据 |
| close | 关闭输出流 |
| clear | 清除缓冲区中数据,但不输出到客户端 |
| clearBuffer | 清除缓冲区中数据,输出到客户端 |
| getBufferSize | 获得缓冲区大小 |
| getRemaining | 获得缓冲区中没有被占用的空间 |
| isAutoFlush | 是否为自动输出 |
request对象封装了从客户端到服务器发出的请求信息。
| 方法名 | 说明 |
| isUserInRole | 判断认证后的用户是否属于某一成员组 |
| getAttribute | 获取指定属性的值,如该属性值不存在返回Null |
| getAttributeNames | 获取所有属性名的集合 |
| getCookies | 获取所有Cookie对象 |
| getCharacterEncoding | 获取请求的字符编码方式 |
| getContentLength | 返回请求正文的长度,如不确定返回-1 |
| getHeader | 获取指定名字报头值 |
| getHeaders | 获取指定名字报头的所有值,一个枚举 |
| getHeaderNames | 获取所有报头的名字,一个枚举 |
| getInputStream | 返回请求输入流,获取请求中的数据 |
| getMethod | 获取客户端向服务器端传送数据的方法 |
| getParameter | 获取指定名字参数值 |
| getParameterNames | 获取所有参数的名字,一个枚举 |
| getParameterValues | 获取指定名字参数的所有值 |
| getProtocol | 获取客户端向服务器端传送数据的协议名称 |
| getQueryString | 获取以get方法向服务器传送的查询字符串 |
| getRequestURI | 获取发出请求字符串的客户端地址 |
| getRemoteAddr | 获取客户端的IP地址 |
| getRemoteHost | 获取客户端的名字 |
| getSession | 获取和请求相关的会话 |
| getServerName | 获取服务器的名字 |
| getServerPath | 获取客户端请求文件的路径 |
| getServerPort | 获取服务器的端口号 |
| removeAttribute | 删除请求中的一个属性 |
| setAttribute | 设置指定名字参数值 |
完成一个简单的用户注册信息界面,将注册信息发送到欢迎界面上。
1.用户注册界面表单设置
<form action="do_register.jsp" method="post">
用户名:
<input type="text" name="userName"><br>
技能:
<input type="checkbox" name="skills" value="java">java
<input type="checkbox" name="skills" value="python">python
<input type="checkbox" name="skills" value="ruby">ruby
<input type="checkbox" name="skills" value="golang">golang
<br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
2.用户注册信息处理界面使用getParameter方法将用户的表单信息提取出来
String name=request.getParameter("userName");
String[] skillArr=request.getParameterValues("skills");
3.将skillArr数组转换成字符串:
String skills="";
if (skillArr!=null&&skillArr.length>0){
for (String skill:skillArr
) {
skills=skills+skill+" ";
}
}
4.将数据使用setAttribute保存起来
request.setAttribute("userName",name);
request.setAttribute("skills",skills);
5.使用jsp的forword指令将页面跳转到welcome.jsp
<jsp:forward page="welcome.jsp"></jsp:forward>
setAttribute和getAttribute用于在web组件之间共享信息
getparameter方法用于接收服务器通过set和post方法传输的数据
注意没有setparameter方法
6.welcome.jsp页面配置
<html>
<head>
<title>技能展示界面</title>
</head>
<body>
信息展示界面:<br><br>
<%--<%=%>这是表达式<%%>这是jsp程序处理--%>
姓名:<%=request.getAttribute("userName")%><br>
技能:<%=request.getAttribute("skills")%>
</body>
</html>
response对象主要用于对客户端的请求进行回应。
以及处理http的连接信息,例如设置http文件头,设置cookie对象等。
| 方法名 | 说明 |
| addCookie | 添加一个Cookie对象 |
| addHeader | 添加Http文件指定名字头信息 |
| containsHeader | 判断指定名字Http文件头信息是否存在 |
| encodeURL | 使用sessionid封装URL |
| flushBuffer | 强制把当前缓冲区内容发送到客户端 |
| getBufferSize | 返回缓冲区大小 |
| getOutputStream | 返回到客户端的输出流对象 |
| sendError | 向客户端发送错误信息 |
| sendRedirect | 把响应发送到另一个位置进行处理 |
| setContentType | 设置响应的MIME类型 |
| setHeader | 设置指定名字的Http文件头信息 |
session对象:是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离 开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。
http是无状态的连接协议,需要使用session来存放用户每次的登陆信息
| 方法名 | 说明 |
| getAttribute | 获取指定名字的属性 |
| getAttributeNames | 获取session中全部属性名字,一个枚举 |
| getCreationTime | 返回session的创建时间 |
| getId | 获取会话标识符 |
| getLastAccessedTime | 返回最后发送请求的时间 |
| getMaxInactiveInterval | 返回session对象的生存时间单位千分之一秒 |
| invalidate | 销毁session对象 |
| isNew | 每个请求是否会产生新的session对象 |
| removeAttribute | 删除指定名字的属性 |
| setAttribute | 设定指定名字的属性值 |
1.登陆表单设置
<form action="do_login.jsp" method="post">
userName:<input type="text" name="userName"><br/>
password:<input type="password" name="password"><br/>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>
2.登陆逻辑处理界面,使用getParameter获取到用户名和密码:
String userName=request.getParameter("userName");
String password=request.getParameter("password");
3.对用户名和密码进行判断:
if (userName!=null&&password!=null){
session.setAttribute("userName",userName);
response.setHeader("refresh","2;URL=welcome.jsp");
}
4.在欢迎界面使用getAttribute获取当前的用户名:
<%if(session.getAttribute("userName")!=null){%>
getAttribute方法是使用指定的key获取session中的value值。获取到的是一个object对象
在使用的时候需要根据具体的类型进行类型转换。
这里取出的是一个字符串,直接调用会使用他的toString方法,因此不用进行转换
欢迎 <%=session.getAttribute("userName")%>
<a href="logout.jsp">注销</a>
<%}else{%>
请先登陆
<a href="login.jsp">登陆</a>
<%}%>
5.判断session对象是否是新创建
<%if (session.isNew()){%>
<br/>
<br/>
欢迎新用户
<%}else{%>
<br/>
<br/>
欢迎老用户
<%}%>
6.在登出界面里清除session对象信息,并跳转到欢迎界面中去:
session.invalidate();//清除掉session对象
response.setHeader("refresh","2;URL=welcome.jsp");
application对象代表当前的应用程序。存在于服务器的内存空间中。
应用一旦启动便会自动生成一个application对象。如果应用没有被关闭,
此application对象便一直会存在。直到应用被关闭
application的生命周期比session更长。
为多个用户共享全局信息。比如当前的在线人数等。
| 方法名 | 说明 |
| getAttribute | 获取应用对象中指定名字的属性值 |
| getAttributeNames | 获取应用对象中所有属性的名字,一个枚举 |
| getInitParameter | 返回应用对象中指定名字的初始参数值 |
| getServletInfo | 返回Servlet编译器中当前版本信息 |
| setAttribute | 设置应用对象中指定名字的属性值 |
<%
Object obj=application.getAttribute("counter");
if (obj==null){
application.setAttribute("counter",new Integer(1));
out.println("该页面被访问了1次<br/>");
}else {
int countValue=new Integer(obj.toString());
countValue++;
out.println("该页面被访问了"+countValue+"次<br/>");
application.setAttribute("counter",countValue);//java会自动装箱
}
%>
config对象表示当前jsp程序的配置信息
一般项目中,jsp被用作模版技术,也就是位于表示层
而位于表示层的jsp文件一般是不需要配置信息的
所以此对象在jsp程序中其实很少使用
config对象是servletConfig类的一个实例。
| 方法名 | 说明 |
| getServletContext | 返回所执行的Servlet的环境对象 |
| getServletName | 返回所执行的Servlet的名字 |
| getInitParameter | 返回指定名字的初始参数值 |
| getInitParameterNames | 返回该JSP中所有的初始参数名,一个枚举 |
page对象有点类似与java编程中的this指针,他指向了当前jsp页面本身。
page对象是java.lang.object类的一个实例
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
包名+类名+@+hashcode值
| 方法名 | 说明 |
| toString | 将当前项目的信息打印出来 |
| getClass | 返回当前的object类 |
| hashCode | 返回page对象的hashCode值 |
| equals | 用于比较对象是否与当前对象相同 |
exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true
即在页面指令中设置:<%@page isErrorPage=“true”%>
pageContetx对象是jsp页面中所有对象功能的最大集成着。
使用他可以访问所有的jsp内置对象。
| 方法名 | 说明 |
| forward | 重定向到另一页面或Servlet组件 |
| getAttribute | 获取某范围中指定名字的属性值 |
| findAttribute | 按范围搜索指定名字的属性 |
| removeAttribute | 删除某范围中指定名字的属性 |
| setAttribute | 设定某范围中指定名字的属性值 |
| getException | 返回当前异常对象 |
| getRequest | 返回当前请求对象 |
| getResponse | 返回当前响应对象 |
| getServletConfig | 返回当前页面的ServletConfig对象 |
| getServletContext | 返回所有页面共享的ServletContext对象 |
| getSession | 返回当前页面的会话对象 |
| Jsp内置对象 | 功能 | 主要方法 |
| out | 向客户端输出数据 | print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
| request | 向客户 | getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………….. |
| response | 封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 | addCookie() sendRedirect() setContentType()flushBuffer() getBufferSize() getOutputStream()sendError() containsHeader()…………… |
| application | ||
| config | 表示Ser | getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
| page | Jsp实现 | flush()……… |
| pagecontext | 为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 | forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
| session | 用来保存每个用户的信息,以便跟踪每个用户的操作状态 | getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
| exception | 反映运行的异常 | getMessage()………… |