JSP九大内置对象
既然是内置对象,就是自带的,不需要new
一、config 配置对象 (服务器配置信息)
二、page 当前JSP页面对象(相当于Java中的this)
三、pageContext JSP页面容器
四、exception 异常对象
五、out对象
是向客户端输出内容常用的对象;作用域为 page ( 页面执行期 )
常用方法:
void clear();// 清除缓冲区的内容
void clearBuffer();// 清除缓冲区的当前内容
void flush();// 清空流
int getBufferSize();// 返回缓冲区以字节数的大小,如不设缓冲区则为0
int getRemaining();// 返回缓冲区还剩余多少可用
boolean isAutoFlush();// 返回缓冲区满时,是自动清空还是抛出异常
void close();// 关闭输出流
六、request对象
请求对象,存储 客户端向服务端发送的请求信息
常用方法:
String getParameter(String name)://根据请求的字段名key(input标签的name属性),返回字段值value(input标签的value属性)
String[] getParameterValues (String name)://根据请求的字段名key,返回多个字段值value 常用checkbox
void setCharacterEncoding("编码格式utf-8")://设置post请求编码
getRequestDispatcher("b.jsp").forward(request,response)://请求转发 的跳转页面 a->b
ServletContext getServletContext()://获取项目的ServletContext对象
get的三种提交方式:
1. method="get"
2. 地址栏
3. 超链接< a href="">请求方式
简单说一下get和post提交方式的区别:
get方式在地址栏上显示请求信息(但是地址栏能够容纳的信息有限,会报错); post不显示
七、response对象
响应对象,存储服务端向客户端发送的响应信息
常用方法:
void addCookie(Cookie cookie)://服务端向客户端增加cookie对象
void sendRedirect(String location) throws IOException ://重定向(页面跳转的一种方式)
void setContentType(String type)://设置服务端响应时编码(设置服务端的contentType类型)
请求转发和重定向的区别:
请求转发和重定向的例子:
请求转发:
张三(客户端)-> 【服务窗口a(服务端)->服务窗口b】
重定向:
张三(客户端)-> 服务窗口a(服务端)->去找b
张三(客户端)-> 服务窗口b(服务端)->结束
八、session会话对象
讲session之前,我们先学习一下cookie
cookie:Cookie是由服务端产生,再发送给客户端保存
(存在于客户端,不是内置对象,使用必须new): 由 javax.servlet.http.Cookie类产生cookie对象
客户端在第一次请求服务端时,如果服务端发现 此请求没有JSESSIONID,则会创建一个
name=JSESSIONID的cookie 并返回给客户端(稍后会详细说明)
相当于本地缓存的作用:(可以相当于历史记录,离线缓存,自动保存密码)
作用:提高访问服务端的效率,但是安全性较差
Cookie:包含key=value
常用方法:
public Cookie(String key,String value)
String getName();//获取key/name
String getValue();//获取value
void setMaxAge(int expiry); //设置最大有效期(秒)
cookie机制:
1.服务端准备Cookie给客户端: response.addCookie(Cookie cookie)
2.页面跳转(转发、重定向)
3.客户端获取cookie: request.getCookies();获取全部的cookie
也就是说:
服务端增加cookie:使用response对象
客户端获取cookie:使用request对象
让我们回到session来:
session是一个会话对象:一般会在登录的时候创建
下面给出两个例子来理解一下会话
a.浏览网站:开始到结束
b.购物:浏览、付款、退出
session机制:
1.客户端第一次请求服务端时,(匹配失败)服务端会产生一个session对象(用于保存该客户的信息)
并且每个session对象,都会有一个唯一的sessionID(用于区分其他session)
服务端又会产生一个cookie,并且该cookie的name=JSESSIONID ,value=服务端sessionID的值
然后 服务端会在响应客户端的同时,将该cookie发送给客户端, 至此, 客户端就有了一个cookie(JSESSIONID);
因此,客户端的cookie(JSESSIONID)就可以和服务端的session(sessionID)一一对应
2.客户端第n次请求服务端时,服务端会先根据客户端cookie中的JSESSIONID 去服务端 的session中匹配sessionID
如果匹配成功,说明此用户已经不是第一次访问,无需登录
给出一个例子便于理解:
客户端:你
服务端:银行
cookie:银行卡
session:银行数据库
sessionID=JSESSIONID:银行卡号
常用方法:
String getID()://获取sessionID;
Boolean isNew()://判断是否是新用户
void invalidate()://使session失效(退出登录,注销账号)
void setAttribute()://放置
Object getAttribute()://获取
void setMaxInactiveInterval(秒)//设置最大有效 非活动时间
int getMaxInactiveInterval()://获取最大有效 非活动时间
cookie和session的区别:
九、application:全局对象
常用方法:
String getContextPath() //获取虚拟路径
String getRealPath("虚拟路径") //获取绝对路径(虚拟路径)
四个作用域(由小到大)
1.pageContext :当前页面有效(页面跳转后无效)
2.request: 同一次(不是同一个)请求有效(请求转发后有效,重定向无效)
3.session: 同一次会话有效(无论怎么跳转都有效,关闭或切换浏览器无效 从登录到退出都有效)
4.application: 整个项目运行期间都有效(切换浏览器都有效)关闭服务器,其他项目都无效
以上4个对象共有的方法:
Object getAttribute(String name)://获取属性值
void setAttribute(String name,Object obj)://设置属性值(新增,修改)
setAttribute("a","b");//如果a对象之前不存在,则新建一个a对象,值赋为b的值
//如果a对象已经存在,则将a的值改为b的值
void removeAttribute(String name)://根据属性名,删除对象
以上四个范围对象,通过setAttribute()赋值,通过getAttribute()取值,尽量使用小的范围