jsp--3.JSP数据交互-3.1内置对象

1. JSP内置对象

a.JSP内置对象是 Web 容器创建的一组对象

JSP内置对象的名称是JSP 的保留字,JSP内置对象是可以直接在JSP页面使用的对象, 无需使用“new”,直接使用

b.常用的JSP内置对象

          out{out.print()--与“System.out.print()”相似}、request、response、session、application


2.JSP内置对象request

a. request对象主要用于处理客户端请求

  • 可以在JSP页面中通过调用request对象的方法来获取请求中的相关数据及浏览器的相关信息
  • request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。
  • request对象的作用域为一次请求。

b. request对象常用方法

方法名称  说明
String getParameter(String name) 根据表单组件名称获取提交数据
String[ ] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset) 指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path) 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

request.setAttribute(String s,Object o)

Object requst.getAttribute(String s)

c. 转发

转发的作用 --在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理

转发的实现 --RequestDispatcher对象的forward()方法

转发允许一个JSP/Servlet对请求做初步处理,而由另一个资源生成响应。

<%
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp"); 
rd.forward(request, response);
%>

在多个页面交互过程中 请求中的数据可以共享


3.JSP内置对象response

a. response对象用于响应客户请求并向客户端输出信息

  • response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。
  • response对象也具有作用域,它只在JSP页面内有效。
  • response的addCookie()、setContentType()、setCharacterEncoding()方法、sendRedirect()方法

页面重定向 -- void sendRedirect(String location) 客户端将重新发送请求到指定的URL(追溯到根目录的url地址)

  • sendRedirect()方法发送一个临时的重定向响应到客户端,由客户端重新请求指定的URL
  • 重定向携带简单数据可以通过查询字符串方式实现

b.如何才能实现页面跳转后,请求信息不丢失呢?

--使用转发取代重定向实现页面跳转

c.转发与重定向的区别

转发 重定向
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递 重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
客户端浏览器的地址栏不会显示转向后的地址 在地址栏中可以显示转向后的地址

4.JSP内置对象session

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

a.什么是会话

一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程

{一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 .并说明 sessionid}

b.session对象常用方法

{session对象用来存储有关用户会话的所有信息}

 方法名称 说明
String getId() 获取sessionid
void setMaxInactiveInterval(int interval) 设定session的非活动时间
int getMaxInactiveInterval() 获取session的有效非活动时间(以秒为单位)
void invalidate() 设置session对象失效
void setAttribute(String key, Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
void removeAttribute(String key) 从session中删除指定名称(key)所对应的对象

c.session与窗口的关系

  • 每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
  • 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

d.session对象的失效

手动设置失效:invalidate()

超时失效

   通过setMaxInactiveInterval( )方法,单位是秒

<%
session.setAttribute("login","admin"); 
session.setMaxInactiveInterval(600); 
response.sendRedirect("admin.jsp"); 
%>

  通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟//不推荐

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

5.include指令

  • include指令可以降低代码的冗余问题,也便于修改共性内容

创建登录验证文件 loginControl.jsp

<%
String login = (String) session.getAttribute("login");
if (login == null) {
  response.sendRedirect("index.jsp");
	return;
} %>

在后台首页面中使用include指令引用登录验证文件

<%@  include file="loginControl.jsp" %>

6.JSP内置对象application

a.application实现用户之间的数据共享

  • application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。
  • 与session对象相比,application对象生命周期更长,类似于系统的“全局变量”

b.application对象的常用方法

方法名称 说  明
void setAttribute(String key,Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
String getRealPath(String path) 返回相对路径的真实路径

7.JSP常用内置对象小结


内置对象名称 说明
out 用于向客户端输出数据
request 主要用于处理客户端请求的数据信息
response 用于响应客户端请求并向客户端输出信息
session 用于记录会话状态的相关信息
application 类似于系统的全局变量,用于实现Web应用中的资源共享

8.对象的作用域

a.作用域的分类

[变量存储在不同作用域时,生命周期/访问范围的差异。]

a).page作用域:

  • 对应的作用域访问对象为 pageContext对象
  • page作用域指本JSP页面的范围 pageContext.setAttribute(键,值)

b).request作用域:

  • 对应的作用域访问对象为 request对象
  • request作用域内的对象则是与客户端的请求绑定在一起

c).session作用域:

  • 对应的作用域访问对象为 session对象
  • session作用域:一次会话

d).application作用 :

  • 对应的作用域访问对象为 application对象
  • application作用域:面对整个Web应用程序

b.对象的作用域

名称 说明
page作用域 在一个页面范围内有效,通过pageContext对象访问
request作用域 在一个服务器请求范围内有效
session作用域 在一次会话范围内容有效
application作用域 在一个应用服务器范围内有效

9.cookie的简介

cookie是Web服务器保存在客户端的一系列文本信息

cookie的作用:

  • 对特定对象的追踪
  • 实现各种个性化服务
  • 简化登录

安全性能

  • 容易泄露信息

a.cookie对象的常用方法

方法名称 说明
void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
void setValue(String value) 在cookie创建后,对cookie进行赋值
String getName() 获取cookie的名称
String getValue() 获取cookie的值
int getMaxAge() 获取cookie的有效时间,以秒为单位

b.cookie与session的对比

session cookie
在服务器端保存用户信息 在客户端保存用户信息
session中保存的是Object类型 cookie保存的是 String类型
随会话的结束而将其存储的数据销毁 cookie可以长期保存在客户端
保存重要的信息 保存不重要的用户信息

猜你喜欢

转载自blog.csdn.net/weixin_43619912/article/details/93544119
今日推荐