JSP核心内置对象

简介

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

无需实例化,可以直接使用

JSP的内置对象指的是Tomcat服务器将JSP页面翻译为Java类之后内部提供的九大对象:

(将page指令的isErrorPage属性写成true可以出现exception对象)

  • request:请求对象

  • response:响应对象

  • pageContext:JSP的上下文对象

  • session:会话对象

  • application:ServletContext对象

  • config:ServletConfig对象

  • out:JSP输出流对象

  • page:指向当前JSP的对象

  • exception:异常对象

JSP四大域对象

  1. requse

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

  • 常用方法

String getParameter(String name)

根据表单组件名称获取提交数据

String[ ] getParameterValues(String name)

获取表单组件对应多个值时的请求数据

void setCharacterEncoding(String charset)

指定每个请求的编码

RequestDispatcher getRequestDispatcher(String path)

返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

  • 编码不同导致乱码

  • 由于示例1功能涉及浏览器、Tomcat服务器、 Java等多个环境,不同环境所使用的编码不尽相同,导致中文乱码出现

解决方案

针对POST请求,在获取请求参数值之前,调用setCharacterEncoding("UTF-8")方法,将请求的解码方式设定为UTF-8

针对GET请求有两种方式

  • 获取数据时处理中文乱码问题

  • 修改Tomcat默认字符集

  1. response

response对象用于设置响应参数和获取响应流

  • 常用方法

void addCookie(Cookie cookie)

向客户端添加Cookie

void setContentType(String type)

设置HTTP响应的contentType类型

void setCharacterEncoding(String charset)

设置响应所采用的字符编码类型

void sendRedirect(String location)

将请求重新定位到一个新的URL上

使用查询字符串可以在重定向时实现简单的数据传递

  • 名值对方式

  • 通过字符“?”连接在URL地址后面

  • 多个名值对可用字符“&“进行分隔

在超链接中使用查询字符串传递数据

注意:

标准URL规范不允许在URL中传递中文和一些特殊字符,如果传递,则需要转换编码

使用查询字符串的方式传递数据,可以传递值类型、字符串等简单数据

  1. session

会话跟踪机制

  • 一种服务器端的机制

  • 用户第一次请求服务器时创建会话,并返回sessionId

  • 后续请求携带该sessionId,携带同一sessionId的请求被认为处于同一会话中

使用session内置对象描述一次会话

  • 一次会话包含多次请求和响应

session与窗口的关系

  • 每个session对象都与一个浏览器窗口对应

  • 重新开启一个浏览器窗口,可以重新创建一个session对象

  • 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

session对象主要方法

String getId()

获取sessionid

long getCreationTime()

返回session对象被创建的时间,以毫秒为单位

void setMaxInactiveInterval(int interval)

设定session的非活动时间,以秒为单位

int getMaxInactiveInterval()

获取session的有效非活动时间,以秒为单位

void invalidate()

设置session对象失效

void setAttribute(String key, Object value)

以key/value的形式将对象保存到session中

Object getAttribute(String key)

通过key获取session中保存的对象

void removeAttribute(String key)

从session中删除指定key对应的对象

会话销毁

  • 调用session对象的invalidate()方法,可以销毁session对象

会话超时

  • 通过setMaxInactiveInterval(int interval)方法设置session有效时长,单位秒

  • 通过项目配置文件设置session有效时长,单位是分钟

  • 通过Tomcat服务器设置session有效时长,单位是分钟。修改Tomcat目录下的/conf/web.xml文件

  1. Cookie

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

作用

  • 对特定对象的追踪

  • 实现各种个性化服务

  • 在Cookie有效期内,记录用户登录信息

安全性

  • 容易泄露信息

Cookie会将用户的个人信息保存在客户端,可能会包含用户的隐私信息等敏感内容。因此,Cookie存在信息泄露的安全隐患

使用Cookie

  • 创建Cookie对象

  • 写入Cookie对象

  • 读取Cookie对象

  • 常用方法

方法名称

说明

void setMaxAge(int expiry)

设置cookie的有效期,以秒为单位

void setValue(String value)

在cookie创建后,对cookie进行赋值

String getName()

获取cookie的名称

String getValue()

获取cookie的值

int getMaxAge()

获取cookie的有效时间,以秒为单位

//添加Cookie保存登录信息Cookie name = new Cookie("username",username);Cookie pwd = new Cookie("password",password);response.addCookie(name); response.addCookie(pwd); response.sendRedirect("getCookies.jsp");

//显示CookiesCookie[] cookies = request.getCookies();if(cookies != null){ for(int i=0; i<cookies.length; i++){ out.print("cookie name: " + cookies[i].getName()); out.print("<br/>"); out.print("cookie value: " + cookies[i].getValue()); out.print("<br/>"); } }

设置Cookie有效时间

使用Cookie对象的setMaxAge(int expiry)方法可以设置Cookie有效期,单位为秒

  • 当expiry参数大于0时,表示Cookie的有效存活时间

  • 当expiry参数等于0时,表示从客户端删除该Cookie

  • 当expiry参数小于0或者不设置时,表示Cookie会在当前浏览器窗口关闭后失效

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值