JSP之内置对象

JSP内置对象:

JSP常用内置对象有:response对象、pageContext对象、request对象、session对象和application对象

response对象:
response对象是Web服务器返回浏览器结果的对象,其常用方法如下:
①setStatus():设置响应状态码;
②sendRedirect():使用给定的路径,给客户端发出一个重定向的响应,给定的路径必须是绝对URL,调用这个方法后,响应立即被提交。
③setContentType():设置HTTP响应的contentType类型
④addCookie():添加一个Cookie对象
⑤getWriter():返回一个PrintWriter对象,用于向客户端输出字符流数据

重定向与请求转发:

  1. 重定向(Redirect):客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方法将结果(结果中头信息内HTTP状态码为302,Location响应报头域中保存响应回来的地址)返回客户端浏览器;客户端浏览器收到服务器端结果后解析其头部信息,然后自动按照头部指定地址以GET方式再次向Web应用服务器端发请求,此时地址栏URL发生变化,服务器端接收到新的请求再将结果返回至客户端浏览器,客户端浏览器解释执行返回结果并将执行结果显示给用户,至此该过程结束。
  2. 请求转发(Forward):这里的“请求”是名词,请求转发指客户端浏览器向Web服务器端发送请求,服务器端收到请求后进行相应处理后再将该请求转发到另外的资源(即这一“转发”操作是在Web服务器端执行的),服务器端对该资源进行处理后反馈给客户端。

重定向与请求转发区别:

  1. 重定向:当客户端向服务器发送一个请求,请求地址发生了变化(),服务器向客户端返回了一个继续处理的新地址,此时客户端自动(不需要人工参与)访问服务器的新地址,服务器将新地址的内容返回给客户端。采用重定向的方式进行处理,客户端和服务器端共执行了两次请求和两次响应,且浏览器地址栏显示的是第二次访问的新地址。
    请求转发:客户端向服务器端发送一个请求,请求地址发生了变化,服务器调用内部的方法直接将请求转发给新地址进行处理,然后将处理结果反馈给客户端。采用请求转发的方式,客户端和服务器端只执行了一次请求和一次响应,且浏览器地址栏显示的是第一次访问的原地址
  2. 请求转发方式处理页面跳转,跳转的新地址必须是本Web应用系统的资源,不可以访问其他Web应用的资源,而重定向没有这个限制。
  3. 重定向无法再新的页面获取request.setAttribute中保存的数据,请求转发可以。
  4. Web项目中WEB-INF文件夹是最安全的目录,该目录内的资源只能通过请求转发获取,重定向的方式无法获取。

pageContext对象:
客户单请求一个JSP页面时,该页面范围的pageContext对象被创建,请求转发或重定向到其他页面时该对象失效,该对象有效范围最小,其自身方法不常使用,故在此不过多赘述。

request对象:
request包含了有关请求的信息,该对象常用方法如下:
getRemoteHost():获取客户端的名字
getRemoteAddr():获取客户端的IP地址
getScheme():获取协议类型
getServerName():获取服务器名字
getServerPort():获取服务器端口号
getContextPath():返回站点根目录
String path = request.getContextPath()+"/";
setCharacterEncoding():设置请求字符编码方式;
getQueryString():获取以GET方式向Web服务器传递的参数及其参数值;
getParameter():获取指定名字参数值
getParameterValues():获取指定名字参数的所有值
getSession(boolean create):获取session;true,如果session不存在,则新建一个;false,如果session不存在,则返回null。
getSession():获取session,等同于getSession(true)
setAttribute:设置指定名字的参数值;
getAttribute:获取指定属性的值,如果该属性值不存在则返回null;
removeAttribute:删除请求中的一个属性
getCookies():获取所有cookie对象

GET与POST的区别:
 a、GET方式提交表单,请求的参数在请求的头部,可以通过request.getQueryString()获取到请求参数及其参数值;POST方式提交表单,请求的参数在请求体中,所以request.getQueryString()方法无法获取其中的参数及其对应的参数值;
 b、GET方式提交表单,请求参数及其参数值放在请求的头部,所以会在浏览器地址栏显示;而通过POST方式提交表单,则不会再地址栏显示,所以会相对安全一些;
 c、不同浏览器对地址栏的长度各有不同限制,所以如果以GET方式提交表单,则请求参数的长度也会受到限制;POST方式提交表单,由于请求参数存放在请求体中,请求体没有长度限制;
 d、GET方式提交表单是使用字符方式提交,而POST方式提交表单可以是字符方式,也可以是字节方式;

session对象:
  Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一系列的请求和响应的交互过程。在一个会话中,用户可以访问该Web应用系统中包括网页在内的多种资源。
  当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。JSP使用session对象表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取。
  浏览器关闭只是中断了和Web服务器的联系,但是session对象依然存在服务器端,如果时间超时,则Web服务器将其删除,如果服务器正常关闭,则将对象序列化到SESSIONS.ser文件内,服务器重新启动,则将该文件中session对象重新反序列化。

session运行机制

  1. 用户(浏览器)向Web应用服务器发送第一次请求时,请求头部中不包含sessionID(session唯一标识),则服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;
  2. 用户(浏览器)再次向Web应用服务器发送请求时,请求头部包含sessionID,则服务器首先会通过sessionID找到对应的session,以确定是这个客户端访问服务器,此时sessionID不会再次随着本次响应返回给客户端;如果该session因超出时长而被Web服务器删除,则重新创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;

客户端没有禁用cookie的情况下,客户端使用cookie保存sessionID。如果cookie禁用,则会自动转化为用URL-rewriting(URL重写,URL中包含sessionID)技术实现。

session常用方法:
①setAttribute:设置指定名字的参数值;session中保存的对象随Tomcat服务器正常关闭(通过shutdown.bat关闭)而保存到work文件夹相应目录中(Tomcat安装根目录\work\Catalina\localhost\XXX),随Tomcat的启动而重新使用。
②getAttribute:获取指定属性的值,如果该属性值不存在则返回null;
③removeAttribute:删除session中的一个属性
④getId():获取sessionID
⑤isNew():每个请求是否会产生新的session对象
⑥setMaxInactiveInterval():设置停止操作后session对象的有效时间。

session与cookie比较:

sessioncookie
保存位置服务器端浏览器客户端
存储类型对象字符串
生命周期随会话结束而关闭可指定时长
存放信息重要性重要信息非常重要信息

application对象:
在JSP中,request对象和response对象构成HTTP请求和响应的过程;session对象表示客户端浏览器与服务器端建立的一个会话;application对象作用于整个Web应用系统中,它能够为访问该Web应用系统的所有用户共享,该对象常用方法如下:
①setAttribute: 设置对象中指定名字的属性值;
②getAttribute:获取对象中指定名字的属性值;

JSP内置对象范围:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值