JavaWeb学习笔记(四)之JSP的九大内置对象

JSP的九大内置对象

内置对象(自带的,不需要new也能使用的对象)

out

输出对象,即向客户端输出内容

pageContext

JSP页面容器

request

请求对象存储“客户端向服务端发送的请求信息”。

request常用的方法

  • String getParameter(String name):根据请求的字段名key,返回字段值value
  • String[ ] getParameterValues(String name):根据请求的字段名key,返回多个字段值values(常见的多选按钮有checkbox)
  • void setCharacterEncoding(“编码方式”):设置请求的编码
  • getRequestDispatcher(“xx.jsp”).forword(request,response):以请求转发方式从A页面跳转到B页面
  • getServerContext():获取当前项目的ServletContext对象

get提交的方式:method="get"和地址栏、超链接等请求方式默认都属于get提交方式

get与post的区别:
①get方式在地址栏上显示请求信息(但是地址栏能够容纳的信息有限,4-5KB,若请求数据存在大文件如:图片、视频、音频等就会出现地址栏无法容纳全部的数据而会出错),post则不会显示
②文件上传操作必须是post

一般也是使用post

response

响应对象。
response常用的方法:

  • void addCookie(Cookie cookie):服务端向客户端增加cookie对象
  • void sendRedirect(String location) throws IOException:页面跳转的一种方式(重定向)
  • void setContentType(String type):设置服务器响应的编码,即设置服务端的ContentType类型

请求转发和重定向的区别如下:
在这里插入图片描述

session

session对象指的是客户端与服务端的一次会话,从客户端连到服务端的一个Web应用程序开始,直到客户端与服务端断开为止。

首先我们要了解cookie对象
Cookie(存在于客户端,不是内置对象):Cookie是由服务端产生,再发送给客户端保存。相当于一个本地缓存的作用:客户端—>服务端。
Cookie:key=value
常用的方法:

  • public Cookie(Stringkey,String value)
  • String getName():获取name
  • String getValue():获取value
  • void setMaxAge(int expiry):设置最大有效期(秒)
    服务端发送给客户端:
    ①response.addCookie(Cookie cookie)
    ②页面跳转,客户端获取cookie:request.getCookies()

注意!服务端增加cookie:response对象;客户端获取:request对象
不能直接获取某一个单独的对象,只能一次性将全部的cookie获取
此外,除了自己设置的cookie对象外,还有一个name为JSESSIONID的cookie,一般cookie只保存****英文和数字,否则需要进行编码、解码处理。

客户端在第一次请求服务端时,如果服务端发现此请求没有JSESSIONID,则会创建一个name=JSESSIONID的cookie,并返回给客户端。

session机制
客户端第一次请求服务端时:
服务端会产生一个session对象(用于保存该客户的信息),并且每个session对象都会有一个唯一的sessionID(用于区分其他session),服务端还会产生一个cookie并且将该cookie的name=JSESSIONID,value=服务端sessionID的值,然后服务端会在响应客户端的同时,将该cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID);因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID—sessionID)
服务端第n次请求服务端时:
服务端会先用客户端cookie中的JSESSIONID去与服务端session中匹配sessionID,如果cookie jessionid和session sessionid匹配成功,说明此用户不是第一次访问,无需再次登录。

session机制核心点
①session存储在服务端
②session是在同一个客户(用户)请求时共享
③实现机制:第一次客户请求时产生一个sessionid并赋值给cookie的jessionid,然后发送给客户端,最终通过session的sessionid和jessionid一一对应

session的常用方法

  • String getID():获取sessionID
  • boolean isNew():判断是否为新用户即第一次访问
  • void invalidate():使session失效(退出登录、注销)
  • void setAttribute()
  • Objecr getAttribute()
  • void setMaxInactiveInterval(秒):设置最大有效非活动时间
  • int getMaxInactiveInterval():获取最大有效非活动时间

cookie和session的区别
在这里插入图片描述

注意!cookie不是内置对象,要使用必须new,但是服务端会自动生成(即服务端自动new一个cookie)name=JSESSIONID的cookie,并返回给客户端

application

全局对象
application常用方法

  • String getContextPath():获取虚拟路径
  • String getRealPath():获取绝对路径,即获取虚拟路径对应的绝对路径

config

配置对象(服务器配置信息)

page

当前JSP页面对象(相当于java中的this)

exception

异常对象

四种范围对象(从小到大排序):

  • pageContext:JSP页面容器(当前页面有效)
  • request:请求对象(同一次请求有效,即请求转发后有效,重定向无效)
  • session:响应对象(同一次会话有效,即无论怎么跳转都有效,关闭\切换浏览器无效,只在登录—切出有效)
  • application:全局对象(全局有效,即整个项目有效,切换浏览器仍有效)****

以上四个对象共有的方法:

  • Object getAttribute(String name):根据属性获取属性值
  • void setAttribute(String name,Object obj):设置属性值,修改
 void setAttribute("a","b");//如果a对象之前不存在,则新建一个a对象;如果a对象之前存在,则将a的值改为b
  • void removeAttribute(String name):根据属性名删除对象

以上的四个范围对象通过setAttribute()赋值,通过getAttribute()取值;并且尽量使用最小范围,因为对象范围越大,造成的性能损耗越大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值