简介
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四大域对象
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默认字符集
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中传递中文和一些特殊字符,如果传递,则需要转换编码
使用查询字符串的方式传递数据,可以传递值类型、字符串等简单数据
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文件
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会在当前浏览器窗口关闭后失效