1 内置对象概览
-
内置对象的意思就是系统new好了,不需要用户自己进行new
-
web容器已经为用户准备好了
-
九大内置对象
内置对象 | 类型 | 描述 |
---|---|---|
pageContext | row 1 col 2 | JSP页面容器 |
request | row 2 col 2 | 得到用户的请求信息 |
response | row 2 col 2 | 服务器想客户端回应信息 |
session | row 2 col 2 | 保存一个用户的信息 |
application | row 2 col 2 | 保存所有用户的共享信息 |
config | row 2 col 2 | 服务器配置,可以获得初始化参数 |
out | row 2 col 2 | 页面输出 |
page | row 2 col 2 | |
exception | row 2 col 2 |
在这个内置对象中要掌握继承的关系,包括接口的继承关系
2 四种属性范围
在JSP中提供了四种属性的保存范围,所谓的保存范围就是一个设置的对象可以在多少个页面中保存并可以继续使用
2.1 四种对象
- page范围:pageContext对象完成,只是在一个页面中保存属性,跳转之后无效
- request:只在一次请求中保存,服务器跳转后依然有效
- session:在一次会话范围中,无论何种跳转都可以使用,但是新开的浏览器无用
- aplication:在整个服务器上保存,所有用户都可以使用
2.2 通用的方法
方法 | 描述 |
---|---|
public void setAttribute(String name,Object o) | 设置属性的名称及内容 |
public Object getAttribute(String name) | 根据属性名称取得属性 |
public void removeAttribute(string name) | 删除指定的属性 |
- pageContext
只可以在本页面取到值
<%
pageContext.setAttribute("username", "zhaodi");
%>
<%="pageContext获取的值:"+pageContext.getAttribute("username") %>
- request
只要是服务端跳转,那么request属性范围表示的是在服务器端跳转之后,所有设置的内容依然会被保留下来
request.setAttribute("req","req_zhaodi");
String req = (String)request.getAttribute("req");
- session
不管是服务器端还是客户端跳转,session设置属性之后,都是可以被取到的
- application
保存在服务器上面,所有的用户都可以拿到,如果服务器重启了,则无法取得
- 能用page就不用request,能有request就不用session,能用session就不用application
2.3 深入pageContext
通过pageContext这个类可以操作四种属性范围;
- 方法
pageContext.setAttribute(String name,Object value,int scope);
。。。getAttribute(String name,int scope);
。。。removeAttribute(String name,int scope);
这个方法可以设置属性的范围
- 范围
APPLICATION_SCOPE
PAGE_SCOPE
REQUEST_SCOPE
SESSION_SCOPE
3 request对象
主要的作用就是接受客户端发来的请求信息,如请求的参数,发送的头信息等都属于客户端发来的信息
- 接受参数(单个,多个)
<form action="index.jsp" method="post">
username:<input name="username" value="" type="text">
<input type="checkbox" name="fav" value="football">足球
<input type="checkbox" name="fav" value="basketball">篮球
<input type="submit" value="提交">
</form>
。。。
<%
String user_name = (String)request.getParameter("username");// 获取字符串数组
String[]fav= request.getParameterValues("fav");// 获取字符串数组
%>
<%="从前台获取的username:"+user_name %>
- 设置乱码问题
request.setCharacterEncoding("utf-8");
- 获取头信息,IP地址,http提交形式(post,get....),访问路径
4 response
主要的功能就是服务器对客户端的回应,讲web服务器处理后的结果发回给客户端
4.1 通用的方法
方法 | 描述 |
---|---|
public void addCookie(Cookie cookie) | 向客户端增加cookie |
public void setHeader(String name,String value) | 设置回应的头信息 |
public void sendRedirect(string location) | 页面跳转 |
4.2 设置头信息
- 设置跳转
response.setHeader("refresh","3;URL=hell.html")// 3s后跳转到hello页面
4.3 response.sendRedirect页面跳转
sendRedirect()方法可以页面跳转,这种跳转是客户端跳转,客户端无法传递request属性范围
response.sendRedirect("input.html");
- 两种跳转的区别:
-
jsp:forward:
跳转后地址栏不变,执行到之后立即跳转,跳转之前的语句执行,跳转之后的语句不执行,可以传递request属性 -
response.sendRedirect():跳转之前和跳转之后的语句都是执行的,地址栏改变了,不可以传递request属性
4.4 操作Cookie
- Cookie是浏览器提供的一种技术,可以让服务器存储一些数据在浏览器端,提高网页处理效率,减轻服务器压力
- 由于是保存在客户端的所以其安全性是比较差的
<%
Cookie cookie = new Cookie("zhaodi","zhaodi");
cookie.setMaxAge(100);
response.addCookie(cookie);
Cookie c1[] = request.getCookies();// 获取客户端的所有cookie
for(Cookie c: c1){
%>
<%=c.getName() + ":"+c.getValue() %>
<%
}
%>
现在 我们在浏览器是可以看到Cookie的
5 session内置对象
- 通过session id区分每一个用户,每个浏览器连接到服务器上都有服务器分配一个不会重复的sessionId
- 服务器关闭sessionid就不存在了
5.1 常用方法
方法 | 描述 |
---|---|
public String getId() | 取得session ID |
public long getCreationTime | 取得session创建时间 |
public long getLastAccessedTime() | 取得session最后一次操作的时间 |
public boolean isNew() | 判断是否是新用户 |
public void invalidate() | 让sesesion失效 |
public void setAttribute(Stringname,Object value) | 设置属性 |
- 主要用在用户是否登录验证用的最多的地方
会话跟踪技术
6 application
表示的是servlet的上下文
String str = application.getContextPath();// 获得虚拟路径
String st = application.getRealPath(str);//获得虚拟路径对应的绝对路径
- getServletContext()的作用和application的作用是一样的
7 config(了解)
7.1 web安全性
WEB-INF这个文件夹用户是看不见的,安全性是最高的,但是必须通过映射路径才可以访问
- 获取初始化的参数信息,初始刷的参数都是在web.xml里面配置的
8 out(了解)
9 pageContext
-
主要是在JSP中使用,功能强大,几乎可以操做各种内置对象
-
可以通过pageContext对象完成页面的跳转功能
pageContext.forward("input.html");// 服务端跳转,可以携带参数的