文章目录
JSP 9大内置对象(自带的,不需要new也能使用)
1.out(输出对象 )
向客户端输出内容
2.pageContext(jsp页面容器)
3.request(请求对象)
1.请求对象:
存储“客户端向服务端发送的请求信息”
2.常见方法:
-
String getParameter(String name):根据请求的字段名(key),返回字段值(value)
-
String[] getParameterValues(String name):根据请求字段名(key),返回多个字段值(value)eg:checkbox(多选按钮)
-
void setCharacterEncoding(“编码格式utf-8”):设置请求编码(根据tomcat默认)
-
getRequestDisoacher(“b.jsp”).forward(request,response):请求转发的跳转页面 A->B
-
getServiceContex():获取项目的ServiceContext对象
-
get提交方式:method=‘get’ 和 地址栏 ,超链接(< a href = “xx" >)请求方式,默认都属于get提交方式。
地址栏:连接/文件?参数名1 = 参数值1 & 参数名2 = 参数值2 …
-
get 和 post 请求方式的区别
-
get方式在地址栏显示请求信息(但是地址栏容纳的信息有限,一般为4-5kb;如果请求数据存在大文件,图片等,会出现施子岚无法容纳数据而报错),post不显示
-
文件上传,必须是post
***注 ** :一般推荐使用post
-
-
4.response(响应对象)
1.提供方法:
- void addCookie(Cookie cookie):向客户端增加cookie对象
- void sendRedirect(String location) throws IOEcciption:页面跳转的一个方法(重定向)
- void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)
2.重定向(respone.sendRedirect(String location))和请求转发(request.getRequestDisoacher(“String loction”))的区别:
- 地址栏是否改变:请求转发不改变,重定向改变
- 是否保留第一次请求时的数据:请求转发保留,重定向不保留
- 请求次数:请求转发1次,重定向2次
3.形象化描述:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nk8Q19Bd-1614950900663)(C:\Users\mi\AppData\Roaming\Typora\typora-user-images\image-20201226213452332.png)]
5.session(服务端)
1.Cookie(客户端,不是内置对象)
-
Cookie是由服务端生成,在发给客户端保存,相当与缓存的作用:
-
作用;提高访问服务端的效率,但是安全性较差
-
Cookie:key(name) = value
-
由javax.servlet.http.Cookie提供
public Cookie (String key,String value) String getName():获取name String getValue():获取value void setMaxAge(int expiry):最大有效期(秒)
服务端准备Cookie(增加Cookie):response.addCookie(Cookie cookie)
页面跳转(转发,重定向)
客户端获取cookie:request.getCookies();(必须获取全部的Cookie)
- 注:
- 服务端增加cookie:response对象;客户端获取对象:request对象
- 不能直接获取某一个单独对象,只能一次性将全部的cookie全部拿到
- cookie中只保存英文,数字,否则将进行编码解码的处理
- 注:
2.session 运行机制
-
客户端第一次请求服务端时,(JSESSIONID和sessionId匹配)服务端会产生一个session对象(用于保护该客户的信息)并且每个session对象都会有一个sessionID(用于区分其他的session)
服务器会产生一个cookic,并且该Cookie的name = JSESSIONID,value = 服务端sessionID的值,然后服务端会在响应客户端的同时,将cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONISD),因此客户端的cookie就可以和服务端的session一一对应(JSESSION-sessionID)
-
客户端第N次请求服务端时:服务端先用客户端的cookie中的JSSESSION,去服务端的session中匹配sessionId,如果匹配成功(cookie JESSIONID和session sessionID),说明此用户不是第一次访问,无需登录;
3.session
- session存储在服务端
- session是在同一个用户(客户)请求时共享
- 实现机制:第一次客户请求时产生一个sessionID并复制给cookie的就JsessionID然后发给客户端。最终通过session的sessionID和cookie的JsessionID对应实现
4.session方法
- String getID();获取sessionID
- boolean isNew();判断是否是新用户(第一次访问)
- void invalidate();使session失(推出登录,注销)
- void setAttribute();
- Object getAttribute();
- void setMaxInactiveInterval(秒);设置最大有效非活动时间
- int getMaxInactiveInterval();获取最大有效非活动时间
5.cookie和session的区别
- 保存位置:session在服务端,cookie在客户端
- 安全性:服务器比较安全,客户端比较不安全
- 保存类型:session为Object,cookie为String
6.cookie
- 不是内置对象,要使用必须new
- 但是,服务器会自动生成与一个(服务端自动new一个cookie)name = JSSIONISD的cookie并返回给客户端
6.application(全局对象)
1.常用方法
- String getContextPath(); 虚拟路径
- String getRealpath(); 绝对路径(相对于虚拟路径的绝对路径)
7.config(配置对象)(服务器配置信息)
8.page(当前jsp页面对象,相当于java 中的this)
9.exception(异常对象)
10.四种范围对象(小-----大)
- pageContext JSP页面容器 当前页面有效
- request 请求对象 同一次请求有效
- session 会话对象 同一次会话有效
- appliation 全局对象 全局有效(整个项目有效)
以上对象共有的方法:
-
Object getAttribute(String name): 根据属性名,或者属性值
-
void setAttribute(String name,Object obj); 设置属性值(新增,修改)
setAttribute(“a”,“b”);//如果a对象之前不存在.则新建一个a对象,并把值给b;
//如果a之前存在,则将a的值改为b;
-
void remoesetAttribute(String name); 根据属性名,删除对象